NAS Synology – Déployez votre Media Center avec Jellyfin, une solution open source
Sommaire
I. Présentation
Dans ce tutoriel, nous allons apprendre à installer Jellyfin sur un NAS Synology pour le transformer en véritable solution de streaming pour la maison. Nous allons utiliser un conteneur Docker par l'intermédiaire de Docker Manager pour déployer l'application.
Jellyfin se présente comme une solution gratuite et open source. C'est une alternative à Video Station (abandonné par Synology) et d'autres applications que nous évoquerons par la suite. Vous pouvez utiliser Jellyfin pour gérer votre médiathèque personnelle, c'est-à-dire pour stocker et organiser vos fichiers vidéo et audio, y compris des films et des séries, en respectant la législation, bien entendu. Nous ne serons pas tenus responsable de l'usage que vous effectuez de votre serveur Jellyfin.
Voici un aperçu des fonctionnalités de l'application Jellyfin :
- Gestion multimédia centralisée : permet d'organiser et de diffuser des collections de films, séries, musiques, photos, livres audio et podcasts.
- Streaming multi-appareils : accessible sur divers appareils (ordinateurs, smartphones, tablettes, smart TV, consoles de jeu) via un navigateur ou des applications natives.
- Transcodage automatique : ajuste automatiquement la qualité des vidéos en fonction de la bande passante et des capacités de l'appareil client.
- Support multi-utilisateur : création de profils utilisateurs pour personnaliser l'expérience de chacun, avec gestion des restrictions pour enfants, et la possibilité de gérer les permissions d'accès (accès à une médiathèque, mais pas à une autre).
- Synchronisation hors ligne : téléchargez du contenu pour un visionnage sans connexion Internet.
- Fonctionnalités DVR et TV en direct : compatible avec les tuners TV pour diffuser et enregistrer la télévision en direct.
- Extensions : possibilité d'ajouter des fonctionnalités supplémentaires, notamment pour l'intégration avec d'autres outils tiers, via l'installation d'extensions.
- Récupération automatique des métadonnées : téléchargement automatique des affiches, résumés, notes et autres informations depuis des bases de données comme TMDb, TVDb ou MusicBrainz.
- Gestion de playlists et de favoris : créez et gérez vos propres playlists ou marquez vos contenus préférés.
- Support multilingue : interface et métadonnées disponibles dans plusieurs langues, y compris le français.
Il est possible d'utiliser Jellyfin à son domicile, mais aussi en environnement professionnel : il y a une extension LDAP pour faciliter la connexion des utilisateurs via un annuaire d'entreprise.
Pour en savoir plus sur Jellyfin, vous pouvez consulter le site officiel via ce lien :
II. Quelles sont les alternatives à Jellyfin ?
Pendant de nombreuses années, Synology a proposé sa solution Video Station que ses utilisateurs pouvaient utiliser en tant que Media Center. Néanmoins, cette solution, désormais abandonnée, est bien moins complète que d'autres solutions disponibles. Il y a, à ma connaissance, trois solutions phares dans ce domaine :
- Jellyfin
- Plex
- Emby
Jellyfin est un projet communautaire, totalement gratuit et open source, tandis que Plex est une solution propriétaire payante, bien qu'une version gratuite soit disponible et utilisable confortablement. De son côté, Emby est aussi une solution gratuite, avec la possibilité de choisir la version payante pour bénéficier de fonctionnalités supplémentaires.
Aujourd'hui, vous l'aurez compris, nous allons choisir le Media Center Jellyfin. Au-delà de l'installer sur un NAS, vous pouvez l'installer sur un serveur personnel sous Linux, et même sur une machine Windows. Il y a des applications pour de nombreux supports : Android, Android TV, iOS, iPadOS, tvOS, etc...
Remarque : il y a d'autres solutions sur ce marché, dont Kodi, que vous connaissez peut-être et Universal Media Server.
III. Mon NAS est-il compatible avec le transcodage matériel ?
Le transcodage matériel n'est pas pris en charge par tous les processeurs, et par conséquent, par tous les NAS. Les modèles vieillissants ou d'entrée de gamme sont notamment les perdants, en règle générale. La bonne nouvelle, c'est que Plex met à disposition des utilisateurs un tableau en ligne qui permet de savoir si un NAS est compatible avec le transcodage matériel ou non. Il y a les NAS Synology, mais également ceux d'autres marques.
Voici le lien pour accéder au fichier :
Pour cette démonstration, j'utilise un NAS Synology DS220+ qui supporte bien cette fonctionnalité.
IV. Installation de Jellyfin sur un NAS Synology
Nous allons utiliser Container Manager (Docker) pour installer et exécuter l'application Jellyfin sur un NAS Synology. Ce n'est pas la seule option disponible, vous pouvez aussi utiliser le paquet prêt à l'emploi mis à disposition sur le site SynoCommunity.
Il est préférable d'avoir un NAS compatible avec le transcodage matériel (hardware transcoding) pour que les performances soient au rendez-vous. Utiliser une application comme Jellyfin sur un NAS avec une configuration trop légère ne donnera pas de bons résultats.
A. Un partage pour les données de votre médiathèque
Vous devez créer un ou plusieurs répertoires destinés à stocker les données à indexer dans Jellyfin. C'est ici que vous allez stocker vos fichiers vidéo, audio, etc.
Vous pouvez créer un répertoire racine avec plusieurs sous-répertoires, un répertoire racine par type de données, ou un seul répertoire si vous avez des besoins limités. L'idée est simple : monter ce répertoire dans le conteneur Jellyfin pour qu'il soit accessible par l'application.
1 - Ouvrez le "Panneau de configuration" puis cliquez sur "Dossier partagé".
2 - Cliquez sur le bouton "Créer" pour créer un nouveau dossier partagé.
3 - Nommez ce dossier partagé, par exemple "Jellyfin_Videos". Vous pouvez aussi cocher l'option "Cacher ce dossier partagé dans Mes remplacements réseaux" puisqu'il n'a pas vocation à être consulté directement. En effet, la lecture de son contenu sera effectuée par l'intermédiaire de Jellyfin.
L'utilisateur "docker", qui sera associé au conteneur Docker, doit disposer de permissions sur ce partage.
Une fois cette première étape accomplie, vous pouvez passer à la création du conteneur.
B. Un conteneur Docker pour exécuter l'application
Avant de créer le conteneur en lui-même, vous devez créer un répertoire pour ses données. Ici, je crée un répertoire nommé "jellyfin" sous le répertoire principal" docker", puis à l'intérieur, je crée 2 sous-dossiers : "config" et "cache". Ce qui donne cette arborescence :
Quand c'est fait, vous pouvez passer à la création du conteneur par l'intermédiaire de Container Manager. Pour rappel, voici mon guide de prise en main de cette application :
Ouvrez l'application, cliquez sur "Projet" puis sur le bouton "Créer".
Vous devez renseigner les informations comme ceci :
1 - Le nom du projet, par exemple "jellyfin"
2 - Le chemin vers le répertoire racine correspondant à ce conteneur (notamment pour stocker le fichier Docker Compose), soit "/docker/jellyfin".
3 - Choisissez la valeur "Créer un fichier docker-compose.yml" et indiquez votre code YAML pour déclarer le conteneur Docker (voir ci-dessous).
Voici le code à utiliser pour votre fichier Docker Compose basé sur un seul conteneur Jellyfin. Nous utiliserons l'image Docker officielle du projet. Pour faciliter votre compréhension, quelques commentaires ont été ajoutés ci-dessous. D'autres explications sont également présentes dans la suite de l'article.
services:
jellyfin:
image: jellyfin/jellyfin:latest
container_name: jellyfin
environment:
- TZ=Europe/Paris # Fuseau horaire
- PUID=1032 # UID de l'utilisateur
- PGID=100 # GID de l'utilisateur
- JELLYFIN_PublishedServerUrl=192.168.1.149 # Adresse IP (ou nom DNS) pour Jellyfin
volumes:
- /volume1/docker/jellyfin/config:/config:rw # Répertoire config du conteneur
- /volume1/docker/jellyfin/cache:/cache:rw # Répertoire cache du conteneur
- /volume1/Jellyfin_Videos:/videos:rw # Répertoire partagé à mapper pour la médiathèque
devices:
- /dev/dri/renderD128:/dev/dri/renderD128
- /dev/dri/card0:/dev/dri/card0
ports:
- 8096:8096/tcp # Jellyfin sera accessible sur le port 8096
network_mode: bridge
security_opt:
- no-new-privileges:true
restart: always
Ici, le conteneur est exécuté à partir d'un utilisateur nommé "docker". C'est pour cette raison que les valeurs "PUID=1032" et "PGID=100" sont utilisées. Ce ne sera pas nécessairement les mêmes valeurs sur votre NAS. Si vous avez besoin d'aide pour récupérer l'UID et le GID d'un utilisateur spécifique, référez-vous à ce tutoriel :
id docker
uid=1032(docker) gid=100(users) groups=100(users)
Pour activer l'accès aux périphériques GPU du système hôte à l'intérieur du conteneur Docker, nous devons utiliser les lignes mises en évidence ci-dessous. En effet, c'est particulièrement utile pour permettre l'accélération matérielle (hardware acceleration) pour le transcodage vidéo, une fonctionnalité essentielle pour des applications multimédias comme Jellyfin.
Attention, si votre NAS ne supporte pas le transcodage matériel, vous devez supprimer ces lignes.
devices:
- /dev/dri/renderD128:/dev/dri/renderD128
- /dev/dri/card0:/dev/dri/card0
Ici, nous déclarons un seul port : 8096/TCP, pour l'accès en HTTP. Nous utiliserons ensuite le reverse proxy pour autoriser l'accès en HTTPS. Sinon, vous pouvez activer le port 8920/TCP sur le conteneur, pour un accès HTTPS en natif sur Jellyfin. Comme l'explique la documentation, il y a également possibilité d'activer les ports 1900/UDP et 7359/UDP pour la découverte automatique sur un réseau local. A titre d'informations, cela donnerait :
ports:
- 8096:8096/tcp
- 8920:8920/tcp
- 7359:7359/udp
Enfin, sachez que la ligne "/volume1/Jellyfin_Videos:/videos:rw" permet de monter le répertoire "/volume1/Jellyfin_Videos" du NAS en tant que "/videos" dans le conteneur. Vous pouvez dupliquer cette ligne si vous avez plusieurs répertoires partagés différents à monter.
Poursuivez jusqu'à la fin dans le but de créer ce projet. Vous devez ensuite patienter, Container Manager va télécharger l'image Docker puis construire le conteneur Jellyfin.
Pendant ce temps, je vous invite à accéder au Panneau de configuration de votre NAS pour créer une nouvelle règle de pare-feu (si votre pare-feu est actif et strict). Vous devez créer une règle pour autoriser les connexions sur le port 8096/TCP depuis le réseau local (nous reviendrons sur l'accès distant par la suite). Ici, le réseau "192.168.1.0/24" est autorisé.
Quand c'est fait, passez à la suite.
C. Première connexion et configuration initiale
À partir de votre navigateur préféré, vous pouvez commencer une connexion sur l'interface de Jellyfin : http://192.168.1.149:8096. Vous devriez arriver sur une page intitulée "Bienvenue dans Jellyfin !", cliquez sur "Suivant" après avoir sélectionné votre langue d'affichage préférée.
Vous pouvez dès maintenant ajouter une nouvelle médiathèque via le bouton correspondant.
Vous devez définir le type de contenu, à partir de la liste proposée.
Puis, vous devez faire le lien entre cette médiathèque et les fichiers sur votre NAS. Ici, la bibliothèque nommée "Films" est liée au dossier "/videos", qui correspond en fait au répertoire "/volume1/Jellyfin_Videos" du NAS. Souvenez-vous de la déclaration effectuée dans le fichier Docker Compose.
Il y a d'autres paramètres disponibles, y compris la partie "récupérateur" pour sélectionner des services en ligne afin de récupérer des métadonnées sur les vidéos chargées sur votre médiathèque (lorsque cela est disponible).
Poursuivez quand la configuration est effectuée. Sachez que vous pouvez y revenir par la suite. Sélectionnez votre langue et votre région pour les métadonnées des médias.
Pour autoriser les connexions distantes, notamment à partir d'un autre appareil, vous devez cocher l'option "Autoriser les connexions distantes à ce serveur". La seconde option consiste à utiliser l'UPnP pour configurer automatiquement votre box (routeur) afin d'ouvrir sur Internet votre Jellyfin. Je vous déconseille de procéder de cette façon, pour des raisons de sécurité.
Voilà, la mise en route est terminée ! Cliquez sur "Terminer".
D. Configuration transcodage matériel
Pour activer le transcodage matériel, vous devez effectuer des manipulations supplémentaires. En effet, par défaut, cette fonctionnalité est désactivée. Ouvrez le menu burger en haut à gauche, cliquez sur "Tableau de bord", puis sous "Lecture", cliquez sur "Transcodage".
Pour un NAS Synology sous Intel, choisissez l'accélération matérielle "Intel QuickSync (QSV)" comme sur l'image ci-dessous. Ensuite, cochez les codecs suivants : H264, HEVC, MPEG2, VC1, VP8, VP9, HEVC 10bit et VP9 10bit.
Un peu plus bas dans la page, cochez aussi ces deux options :
- Autoriser l'encodage au format HEVC
- Activer le mappage ton local VPP
En bas de page, cliquez sur "Sauvegarder" pour valider. Désormais, nous allons vérifier que le transcodage fonctionne correctement. À partir de votre instance Jellyfin, lancez la lecture d'une vidéo. Ensuite, cliquez sur l'engrenage en bas à droite du lecteur vidéo, puis sur "Données de lecture". Ceci affiche des détails techniques sur la lecture en cours. Nous pouvons voir qu'il s'agit d'un flux vidéo en lecture directe, c'est-à-dire sans transcodage, car le flux est lu dans sa version originale.
Maintenant, accédez aux réglages du lecteur vidéo (cliquez sur l'engrenage), puis sur "Qualité". Ici, choisissez une qualité inférieure (ou un débit inférieur), puis validez.
Le transcodage va être effectué par le matériel du NAS, afin de délivrer un flux adapté au navigateur du client. Ainsi, si vous retournez dans les propriétés de la lecture en cours, vous devriez voir, cette fois-ci, la mention "Transcodage". L'opération étant effectuée par le matériel, elle est beaucoup plus efficace.
Si besoin, voici le lien vers la documentation Jellyfin spécifique pour le transcodage :
E. Identification des vidéos
Quand vous accédez aux propriétés d'une piste vidéo, vous avez diverses actions possibles. Vous pouvez l'ajouter à une collection (très utile pour regrouper certaines vidéos) ou une playlist, mais aussi utiliser l'option "Identifier".
Ceci vous permet de faire correspondre la vidéo sélectionnée aux métadonnées d'une vidéo présente dans la base de TheMovieDb ou The Open Movie Database. Ainsi, vous récupérez l'image de couverture, le synopsis, les acteurs, etc...
V. Accéder à distance à Jellyfin
Actuellement, Jellyfin est accessible sur le réseau local uniquement, via l'URL suivante : http://192.168.1.149:8096. Comment utiliser un nom de domaine et accéder à distance à Jellyfin ? C'est ce que nous allons voir. L'objectif va être le suivant : accéder à Jellyfin via l'URL https://jellyfin.mon-nas.synology.me:50500.
Ce qui implique plusieurs actions :
- Déclarer le nom de domaine "mon-nas.synology.me" dans la configuration DDNS du NAS
- Obtenir un certificat Let's Encryt pour le nom de domaine "mon-nas.synology.me" et tous ses sous-domaines (donc "jellyfin.mon-nas.synology.me" sera couvert)
- Créer une règle de redirection de port sur la box (routeur) pour rediriger le trafic à destination du port 50500 (externe) vers l'adresse IP du NAS, également sur le port 50500.
- Configurer le reverse proxy (proxy inversé) de DSM pour publier l'application Jellyfin en HTTPS.
Pour les trois premières étapes, je vous invite à consulter ce tutoriel :
Pour la configuration du reverse proxy, suivez ces étapes :
1 - Ouvrez le Panneau de configuration de DSM puis cliquez sur "Portail de connexion".
2 - Cliquez sur l'onglet "Avancé".
3 - Cliquez sur le bouton "Proxy inversé".
4 - Appuyez sur le bouton "Créer" pour créer une nouvelle règle.
5 - Nommez cette configuration, par exemple "jellyfin".
6 - Indiquez le protocole "HTTPS", puis le nom d'hôte qui doit être un sous-domaine du domaine synology.me que vous utilisez. Bien entendu, cette option peut être configurée différemment, si vous utilisez un domaine personnalisé. Indiquez le port "50500" (ou une autre valeur personnalisée).
7 - Indiquez "HTTP", puis "localhost" associé au port "8096" comme destination, car il s'agit ici de rediriger le flux vers le conteneur Docker de Jellyfin hébergé en local sur notre NAS.
8 - Cliquez sur le bouton "Sauvegarder".
Dès à présent, Jellyfin est accessible en HTTPS via une URL personnalisée : https://jellyfin.mon-nas.synology.me:50500. Mission accomplie !
VI. Conclusion
Voilà, la mise en route de Jellyfin touche à sa fin ! Il y a énormément d'options disponibles, donc prenez le temps d'explorer l'interface et de regarder la documentation officielle pour poursuivre votre prise en main ! Le meilleur reste à venir : la lecture de vos contenus !
Pour aller plus loin, il est possible de greffer d'autres applications autour de Jellyfin, notamment Jellyseerr. Jellyseerr est une extension open source pour Jellyfin qui simplifie la gestion des demandes de contenu multimédia. Elle permet aux utilisateurs de rechercher, demander et gérer facilement des contenus via une interface intuitive, tout en offrant des outils d'administration pour automatiser l'approbation et le traitement des demandes. C'est utile lorsque le serveur est ouvert à plusieurs personnes.
Pour en savoir plus :