Autoriser l'accès à mon server Jellyfin (intégré à HA) depuis l'extérieur

Mon problème

J’ai un Home Assistant Supervised sur Debian 11 qui commence à être bien garni. J’ai un accès extérieur via une configuration DuckDNS + NGinx.
J’ai trouvé ce plugin : GitHub - mdvorak/ha-addon-jellyfin: Home Assistant add-on for Jellyfin Server qui permet d’avoir un serveur Jellyfin directos sur ma machine. Il fonctionne nickel, j’ai également utilisé l’intégration officielle pour récupérer quelques données dans HA.
Mon souci est le suivant, je ne parviens pas à accéder à l’interface Web du Server Jellyfin sans passer par l’IP de mon PC ou le serveur tourne (http://192.168.1.X:8096/jellyfin). A vrai dire j’aurai espérer pouvoir le faire comme pour tout les autres plugins sur l’URL : http://toto.duckdns.org/<Nom_d’hôte_du_docker>/jellyfin. J’ai essayé diverses choses dans l’IHM Jellyfin en lui passant un certificat PKCS #12 (préalablement généré dans /ssl a partir de mes fichiers .PEM utilisés par NGINK et DUCKDNS) mais sans succès.
La doc de Jellyfin et de sa configuration avec Ngink existe mais elle ne s’applique pas sur une configuration en tant que Plugin de Home assistant donc sur une machine ou diverses IHM Web se partage la place.
A vrai dire je ne sais pas vraiment ce qu’il est possible de faire et ou sont les limites :

  • l’URL : http://toto.duckdns.org/<Nom_d’hôte_du_docker>/jellyfin permettrait d’accéder à ce dernier mais avec au préalable une authentification sur HA je pense, donc inutilisable depuis l’application Jellyfin Android TV je pense.
  • Serait-il possible de sortir en https directement sur l’interface jellyfin pour permettre un accès externe à mon serveur multimédia en modifiant la conf Nginx de HA ?

Si certains d’entre vous ont des idées de comment configurer tout ça, je suis preneur !

Merci beaucoup,

Ma configuration


System Information

version core-2023.2.5
installation_type Home Assistant Supervised
dev false
hassio true
docker true
user root
virtualenv false
python_version 3.10.7
os_name Linux
os_version 5.10.0-21-amd64
arch x86_64
timezone Europe/Paris
config_dir /config
Home Assistant Community Store
GitHub API ok
GitHub Content ok
GitHub Web ok
GitHub API Calls Remaining 5000
Installed Version 1.30.1
Stage running
Available Repositories 1216
Downloaded Repositories 25
Home Assistant Cloud
logged_in false
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Home Assistant Supervisor
host_os Debian GNU/Linux 11 (bullseye)
update_channel stable
supervisor_version supervisor-2023.02.dev1502
agent_version 1.4.1
docker_version 23.0.1
disk_total 232.2 GB
disk_used 19.4 GB
healthy true
supported true
supervisor_api ok
version_api ok
installed_addons Mosquitto broker (6.1.3), Studio Code Server (5.5.2), Duck DNS (1.15.0), Terminal & SSH (9.6.1), File editor (5.5.0), Home Assistant Google Drive Backup (0.110.1), NGINX Home Assistant SSL proxy (3.2.0), Frigate (Full Access) (0.11.1), go2rtc (1.2.0), Zigbee2MQTT (1.30.1-1), AirCast (3.5.1), AdGuard Home (4.8.0), Spotify Connect (0.12.2), Jellyfin Server (1.1.1)
Dashboards
dashboards 2
resources 21
views 7
mode storage
Recorder
oldest_recorder_run 9 février 2023 à 17:27
current_recorder_run 19 février 2023 à 15:23
estimated_db_size 168.33 MiB
database_engine sqlite
database_version 3.38.5
___

Normalement pour rendre un serveur jellyfin publique (visible sur une ip publique routée) il faut passer par un reverse proxy (en effet l’interface web de Jellyfin n’est pas conçu en terme de protection pour être exposé sur autre chose qu’un LAN).
Je ne suis pas super familier des usines à gaz de docker donc je ne saurais pas te dire si c’est faisable avec un docker adéquat mais pour sûr cela peut se faire via une machine tierce dans ton LAN par contre ou sur le debian lui-même qui héberge tout ça :wink: Networking | Jellyfin

Salut,

Je ne vois pas ce qui te bloquerait si tu arrives à accéder à http://192.168.1.X:8096/jellyfin tu dois pourvoir rediriger ce que tu veux dessus.
Si le port 8096 est mappé et publié dans docker et que tu y accèdes sans passer par HA, un forwards de port ou un reverse proxy doivent passer.

Tu ne dis pas vraiment quelles erreurs tu as.

Hello,
Alors en fait dans ma configuration actuelle, le seul port que je redirige sur mon routeur est le 443 TCP vers mon PC HA même port.

  • Ensuite j’ai une configuration DuckDns + NGinx avec un nom de domaine :
################# DUCK DNS #################
http:
  ip_ban_enabled: true # use this to enable auto IP ban
  login_attempts_threshold: 5 # set the number of allowed login attempts
  
################# NGINX #################
  use_x_forwarded_for: true
  trusted_proxies:
    - 172.30.33.0/24
  • Le premier souci est que je ne parviens pas a atteindre l’IHM de Jellyfin via
    image
    qui utilise l’url :
    http://toto.duckdns.org:8096/ → (Je pense que c’est normal car si je ne met pas le port de Jellyfin (:8096), l’URL est forcé en HTTPS pour l’accès à HA. Par contre ce que je ne comprend pas c’est que pour tout les autres modules complémentaires, l’accès HTTPS fonctionne vers l’IHM de chacun sans manip de ma part, je me dis que peut être que ce module n’a pas été étudié pour une conf HTTPS.)
    Par contre l’accès : http://192.168.1.100:8096 est le seul qui fonctionne vers Jellyfin.

J’aimerai avoir un accès du type : https://toto.duckdns.org:8096/ ou alors si on utilise le port TLS de Jellyfin : https://toto.duckdns.org:8920/ pour pouvoir accéder de l’extérieur à ce dernier de manière sécurisée. Ce qui me fait peur, c’est que il tourne sous forme d’un plugin HA (dans un Docker), donc j’aimerai ne pas tout casser coté HA. Parce que sinon effectivement la doc de Jellyfin sur un serveur dédié est super top.

Avez vous une idée de ce que je pourrai modifier dans ma configuration pour accéder de manière sécurisée à Jellyfin en parallèle de HA ?

Merci beaucoup,

Si 443 est le seul port redirigé, alors clairement http://toto.duckdns.org:8096/ n’aboutira pas…
Ensuite 8096 c’est le port http par défaut de Jellyfin donc il ne répondra pas en https dessus.

NGinx normalement est utilisé en temps que reverse proxy… donc c’est lui qui devrait recevoir les demandes sur le 443 et les rediriger au bon serveur… sur le bon port.
En théorie toujours, si NGinx est ouvert sur 443 en HTTPS sur l’extérieur, en interne le HTTPS ne devrait pas être nécessaire.