[Mémo] Résoudre le problème de connexion HTTPS dans l'app Jellyfin sur WebOS
Si vous avez essayé de vous connecter depuis l'extérieur de votre réseau / en HTTPS sur votre Jellyfin depuis une télé LG, vous avez peut-être eu des soucis d'app qui se bloque, se fige, affiche un écran noir, ... au moment de valider la connexion.
Ce problème est lié a des paramètres de reverse proxy incompatible.
Pour
Code:
Content-Security-Policy
X-Frame-Options
X-XSS-Protection
Dans mon cas ( utilisation d'un reverse proxy SWAG ), ces paramètres sont inclus dans
/config/nginx/ssl.conf , mais non actif par défaut. On peut voir dans le ssl.conf que les lignes en questions sont commentées.
Code:
## Version 2025/07/18 - Changelog: https://github.com/linuxserver/docker-baseimage-alpine-nginx/commits/3.22/root/defaults/nginx/ssl.conf.sample
### Mozilla Recommendations
# generated 2025-05-31, Mozilla Guideline v5.7, nginx 1.28.0, OpenSSL 3.5.0, intermediate config, no OCSP
# https://ssl-config.mozilla.org/#server=nginx&version=1.28.0&config=intermediate&openssl=3.5.0&ocsp=false&guideline=5.7
ssl_certificate /config/keys/cert.crt;
ssl_certificate_key /config/keys/cert.key;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m; # about 40000 sessions
ssl_session_tickets off;
# curl https://ssl-config.mozilla.org/ffdhe2048.txt > /path/to/dhparam
ssl_dhparam /config/nginx/dhparams.pem;
# intermediate configuration
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ecdh_curve X25519:prime256v1:secp384r1;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305;
ssl_prefer_server_ciphers off;
# HSTS (ngx_http_headers_module is required) (63072000 seconds)
#add_header Strict-Transport-Security "max-age=63072000" always;
# Optional additional headers
#add_header Cache-Control "no-transform" always;
#add_header Content-Security-Policy "upgrade-insecure-requests; frame-ancestors 'self'" always;
#add_header Permissions-Policy "interest-cohort=()" always;
#add_header Referrer-Policy "same-origin" always;
#add_header X-Content-Type-Options "nosniff" always;
#add_header X-Frame-Options "SAMEORIGIN" always;
#add_header X-UA-Compatible "IE=Edge" always;
#add_header X-XSS-Protection "1; mode=block" always;
#add_header Alt-Svc 'h3=":443"' always;
Code:
## Version 2025/07/18
# make sure that your jellyfin container is named jellyfin
# make sure that your dns has a cname set for jellyfin
# if jellyfin is running in bridge mode and the container is named "jellyfin", the below config should work as is
# if not, replace the line "set $upstream_app jellyfin;" with "set $upstream_app <containername>;"
# or "set $upstream_app <HOSTIP>;" for host mode, HOSTIP being the IP address of jellyfin
# in jellyfin settings, under "Advanced/Networking" add subdomain.mydomain.tld as a known proxy
server {
listen 443 ssl;
# listen 443 quic;
listen [::]:443 ssl;
# listen [::]:443 quic;
server_name jellyfin.*;
include /config/nginx/ssl.conf;
client_max_body_size 0;
location / {
include /config/nginx/proxy.conf;
include /config/nginx/resolver.conf;
set $upstream_app jellyfin;
set $upstream_port 8096;
set $upstream_proto http;
if ($http_user_agent ~ Web0S) {
add_header Access-Control-Allow-Origin "luna://com.webos.service.config" always;
}
proxy_pass $upstream_proto://$upstream_app:$upstream_port;
proxy_set_header Range $http_range;
proxy_set_header If-Range $http_if_range;
}
location ~ (/jellyfin)?/socket {
include /config/nginx/proxy.conf;
include /config/nginx/resolver.conf;
set $upstream_app jellyfin;
set $upstream_port 8096;
set $upstream_proto http;
if ($http_user_agent ~ Web0S) {
add_header Access-Control-Allow-Origin "luna://com.webos.service.config" always;
}
proxy_pass $upstream_proto://$upstream_app:$upstream_port;
}
# Restrict access to /metrics
# https://jellyfin.org/docs/general/networking/monitoring/#prometheus-metrics
location /metrics {
allow 192.168.0.0/16;
allow 10.0.0.0/8;
allow 172.16.0.0/12;
allow 127.0.0.0/8;
deny all;
include /config/nginx/proxy.conf;
include /config/nginx/resolver.conf;
set $upstream_app jellyfin;
set $upstream_port 8096;
set $upstream_proto http;
proxy_pass $upstream_proto://$upstream_app:$upstream_port;
}
}
Cependant, pour mes autres services j'ai activé ces options de sécurité, elles sont "actives" et donc bloque la connexion à Jellyfin depuis l'app WebOS.
La solution de contournement que j'applique est alors de commenter la ligne
include /config/nginx/ssl.conf; dans le fichier de configuration du reverse jellyfin et de copier/coller manuellement le contenu de ssl.conf dedans sans les options problématiques.Source : https://github.com/jellyfin/jellyfin-webos/issues/294#issuecomment-2900454935