Informations: N'ayant plus de NAS Synology, ce tutoriel n'est plus maintenu.
Vous pouvez toujours consulter : [Tuto] Installation de Jellyfin + Transcodage matériel (HW) + Acces HTTPS en Docker
Vous pouvez toujours consulter : [Tuto] Installation de Jellyfin + Transcodage matériel (HW) + Acces HTTPS en Docker
Bonjour,
Voici un tuto, pour ceux qui souhaiterai installer Jellyfin en docker, avec un accès externe en HTTPS.

Nous allons ici utiliser docker-compose, cette solution ne pourra donc ce faire, uniquement sur un NAS ou est possible d'installer Docker.
Le but de ce tuto sera de rendre cette installation facile et accessible a tous, bien que loin d’être un expert de docker/docker-compose, n’hésiter pas à répondre à ce sujet avec vos interrogations, ..
Pour ceux qui sont plus a l'aise avec ce genre d'installation, n'hésiter pas a proposer des améliorations, ou des conseils, ...
Pré-requis :
Avoir installé le paquet Docker
Avoir un accès SSH au Synology*
Dans docker : télécharger l'image linuxserver/jellyfin:latest et nginxinc/nginx-unprivileged:alpine
Posséder un nom de domaine
* Pour faire cette manip, il vous faudra vous connecter en SSH à votre NAS, si vous ne savez pas le faire, vous trouverez ici un tuto explicatif : [Tuto] Acceder à son NAS en lignes de commande.
A modifier selon votre installation :
Toute mon installation, va ce faire dans un dossier partagé "docker" situé sur "@volume1"
Je vais donc installer jellyfin dans /volume1/docker/jellyfin
Les PUID/PGID de mon compte utilisateur sont : PUID=9999 PGID=111**
Le nom de domaine utilisé pour l'exemple sera : tutoevo.fr
** Pour connaitre le PUID/GUID de l'utilisateur : [Tuto] Connaitre le PUID / PGID d'un utilisateur.
Sommaire :
1/ Créer les dossiers nécessaires
2/ Mise en place de la config nginx
3/ Création du fichier "docker-compose.yml"
4/ Création des conteneurs avec docker-compose
1/ Créer les dossiers nécessaires
Comme dit au dessus, les chemins sont basé sur mon installation, à adapter selon votre installation.
Voici les dossiers a créer :
- /volume1/docker/jellyfin/config
- /volume1/docker/jellyfin/cache
2/ Mise en place de la config nginx
Dans le dossier /volume1/docker/jellyfin, nous allons créer un fichier "jellyfin_nginx.conf" avec comme contenu :
Code:
server {
listen 8080;
server_name _;
location / {
# Proxy main Jellyfin traffic
proxy_pass http://jellyfin:8096;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Protocol $scheme;
proxy_set_header X-Forwarded-Host $http_host;
# Disable buffering when the nginx proxy gets very resource heavy upon streaming
proxy_buffering off;
}
location /socket {
# Proxy Jellyfin Websockets traffic
proxy_pass http://jellyfin:8096/socket;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Protocol $scheme;
proxy_set_header X-Forwarded-Host $http_host;
}
}
( Attention : Remplacer 2x "jellyfin:8096" par IP_DU_NAS:8096 et dans server_name _; remplacer _ par votre ip public ou nom de domaine. )
3/ Création du fichier "docker-compose.yml"
Nous allons maintenant créer un fichier "docker-compose.yml" avec les paramètres des conteneurs.
Celui-ci est a placer dans /volume1/docker/jellyfin.
Voici mon fichier "docker-compose.yml" :
Code:
version: "3"
services:
jellyfin:
image: linuxserver/jellyfin:latest
container_name: jellyfin
restart: unless-stopped
environment:
- PUID=9999
- PGID=111
- TZ=Europe/Paris
devices:
- /dev/dri/renderD128:/dev/dri/renderD128
sysctls:
- net.ipv6.conf.all.disable_ipv6=0
networks:
- jellyfin
ports:
- 8096:8096
expose:
- 8096
volumes:
- /volume1/docker/jellyfin/config:/config
- /volume1/docker/jellyfin/cache:/cache
nginx:
image: nginxinc/nginx-unprivileged:alpine
container_name: jellyfin_proxy
restart: unless-stopped
networks:
- jellyfin
volumes:
- /volume1/docker/jellyfin/jellyfin_nginx.conf:/etc/nginx/conf.d/default.conf:ro
ports:
- "8083:8080"
networks:
jellyfin:
external:
name: jellyfin
On peut y voir 2 services "jellyfin" et "ngnix".
Dans le service "jellyfin" vous allez devoir porter votre attention sur :
- PUID=9999, à modifier avec le PUID de votre utilisateur
- PGID=111, à modifier avec le PUID de votre utilisateur
- /volume1/docker/jellyfin/config:/config, la 1ere partie "/volume1/docker/jellyfin/config" correspond au chemin vers votre dossier /config.
- /volume1/docker/jellyfin/cache:/cache, la 1ere partie "/volume1/docker/jellyfin/cache" correspond au chemin vers votre dossier /cache.
Il vous faudra aussi ajouter les chemins vers vos médias à cette endroit afin que jellyfin puisse y accéder.
Attention :
Si votre NAS n'est pas compatible avec le transcodage hard, il vous faudra enlever ces lignes du fichier :
Code:
devices:
- /dev/dri/renderD128:/dev/dri/renderD128
Dans le service "ngnix", vous allez devoir porter votre attention sur :
- /volume1/docker/jellyfin/jellyfin_nginx.conf:/etc/nginx/conf.d/default.conf:ro, la 1ere partie "/volume1/docker/jellyfin/jellyfin_nginx.conf" correspond au chemin vers le fichier de configuration "jellyfin_nginx.conf" que nous avons créer avant.
Une fois les modifications effectuées, enregistrer votre fichier sous le nom : docker-compose.yml
Puis charger le fichier sur votre NAS ( chez moi, il se trouve dans /volume1/docker/jellyfin )
3/ Création des conteneurs avec docker-compose
En SSH, 1ere chose, je passe en mode administrateur avec la commande :
sudo su -
Le mot de passe admin vous est demandé.
Dans mon dossier /volume1/docker/jellyfin, j'ai chargé mon fichier docker-compose.yml. Je vais donc accéder à ce dossier, pour cela je fait :
cd /volume1/docker/jellyfin
Ensuite, afin "d’exécuter" mon fichier docker-compose.yml, je tape en ssh :
sudo docker-compose up -d
La création des conteneurs se fait, ils deviennent visible dans l'appli "Docker" de DSM. Si tout se passe bien, ils doivent apparaître démarrer dans Docker.
Il est maintenant possible d’accéder à jellyfin depuis l'adresse http://ADRESSE_IP_DU_NAS:8096 et de configurer Jellyfin.
Dans les paramètres réseaux de Jellyfin, il vous faudra Autoriser les connexions distantes à ce serveur Jellyfin

et sélectionner le mode de connexion sécurisé : Gérée par un proxy inversé

4/ Accéder à Jellyfin en HTTPS grâce au Proxy inversé
Sur DSM, dans panneau de configuration > Portail des Applications > Proxy inversé, vous allez pouvoir accéder aux réglages du proxy.
Dans le "Proxy inversé", nous allons donc rediriger le port 443 ( https ) vers un sous domaine de mon domaine "tutoevo.fr".
Le sous domaine choisi sera : jellyfin.tutoevo.fr ( Pour que cela fonctionne le nom d’hôte doit aussi être créer chez votre fournisseur du nom de domaine ).
Dans l'image ci-dessous, nous avons créé une règle "Jellyfin", allons rediriger le protocole "HTTPS" au nom d’hôte "jellyfin.tutoevo.fr". Nous activons "HTTP/2" et renseignons en destination, soit "localhost" sur le port "8083"

Dans l'onglet "En-Tête personnalisé" nous allons renseigner les paramètres ci-dessous :
- Upgrade / $http_upgrade
- Connection / "upgrade"
- Host / $host
- X-Real-IP / $remote_adrr
- X-Forwarded-For / $proxy_add_x_forwarded_for
- X-Forwarded-Proto / $scheme
- X-Forwarded-Protocol / $scheme
- X-Forwarded-Host / $http_host

Voila, maintenant notre installation est aussi accessible depuis l'extérieur via
Dernière édition: