Forum des NAS

Tous les fabricants de NAS réunis sur un forum unique : Asustor, Qnap, Synology...

Les tutoriaux rédigés par les membres
#87099
Bonjour,
Voici un tuto, pour ceux qui souhaiterai installer Jellyfin en docker, avec un accès externe en HTTPS.

Image

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 alèse 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 : Tout sélectionner
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 : Tout sélectionner
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 : Tout sélectionner
    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
Image
et sélectionner le mode de connexion sécurisé : Gérée par un proxy inversé
Image

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"
Image

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

Comme dans l'image ci-dessous :
Image

Voila, maintenant notre installation est aussi accessible depuis l'extérieur via https://jellyfin.tutoevo.fr

#92506
Bonjour,

Pour ma part, je bloque au lancement du docker-compose.
2 erreurs différentes, car j'ai essayé de créer les fichiers de conf au début avec vim localement sur le NAS.
Puis avec notepad et notepad++ sous windows

Code : Tout sélectionner
root@DS918PLUS:/volume1/docker/jellyfin# sudo docker-compose up -d
ERROR: In file './docker-compose.yml', service must be a mapping, not a NoneType.

root@DS918PLUS:/volume1/docker/jellyfin# sudo docker-compose up -d
ERROR: yaml.parser.ParserError: while parsing a block mapping
  in "./docker-compose.yml", line 1, column 1
expected <block end>, but found '<block mapping start>'
  in "./docker-compose.yml", line 3, column 5

Si ça parle à quelqu'un svp ...

#92512
je viens de trouver mon erreur, c'était peut-être la variable "Server_name" , j'avais mis "Server" :-(

Par contre, maintenant, j'ai ça :

Code : Tout sélectionner
root@DS918PLUS:/volume1/docker/jellyfin# sudo docker-compose up -d
ERROR: Network jellyfin declared as external, but could not be found. Please create the network manually using `docker network create jellyfin` and try again.

Il m'embête de faire cette vérif. Tautulli fonctionne bien avec mon nom de domaine externe ... qu'est ce qu'il m’embête lui alors ???

Je dirais c est plus ton n'as qui a un probl&egrav[…]

Ok merci pour tes conseils ... Je vais les mettre […]

NAS avec Raspberry Pi 4

pas de soucis, c'ets aussi pour cela que le DIY n'[…]

Question pour changer de DD

ce sont du coup de wd red ? Oui, fabrication[…]

Site hébergé sur un serveur IKOULA

Ikoula