Jellyfin, un serveur multimédia libre et puissant

Un serveur multimédia est un logiciel qui rend disponible sur votre réseau l'ensemble des fichiers vidéos, photos, musique qui y sont stockés.

Jellyfin, un serveur multimédia libre et puissant

Vous connaissez certainement Kodi (anciennement XBMC) ou encore Plex, qui sont des serveurs multimédias (ou mediacenter) réputés et largement utilisés. Chacun a ses avantages et inconvénients, mais si vous aviez besoin de faire du transcodage, Plex était le grand gagnant. Malheureusement, Plex s'est orienté vers un modèle économique par abonnements pour profiter de vos médias à l'extérieur de votre réseau local. Son successeur, Emby, qui se voulait Open Source à ses débuts, s'est finalement lui aussi orienté vers ce mode de fonctionnement.

Et c'est là qu'est apparu Jellyfin, né en décembre 2018 de la dernière version Open Source d'Emby et avec la vocation de rester 100% gratuit pour tous. Jellyfin permet de scanner vos répertoires à la recherche des films, séries TV ou musiques qui y sont stockés, pour vous proposer d'y accéder depuis n'importe quel navigateur web ou application compatible, avec une interface agréable. Jellyfin permet également de regarder la TV en y ajoutant un tuner TV et dispose de nombreuses extensions lui ajoutant d'autres fonctionnalités : IPTV, authentification, téléchargement automatique des sous-titres, notifications, ...

Il peut arriver que le périphérique sur lequel vous souhaitez lire une vidéo ne soit pas compatible avec le format stocké. C'est là qu'intervient le transcodage dans Jellyfin, tout comme le faisait Plex ou Emby. Ce transcodage est effectué à la volée lors de la lecture de la vidéo, et Jellyfin a un avantage sur ses concurrents directs, c'est qu'il peut profiter de l'accélération matérielle VAAPI (Video Acceleration API) et NVENC (Nvidia Video ENCoding), ce qui permet de réduire la charge du processeur notamment lorsqu’il faut transcoder une vidéo UltraHD/4K.

Pour l'installer, vous avez l'embarras du choix : Linux (Debian / Ubuntu / CentOs / ...) , macOS, Windows, ou encore Docker. C'est ce dernier qui nous intéresse ! On commence par télécharger l'image avec la commande :

docker pull ghcr.io/linuxserver/jellyfin

Comme d'habitude, on crée une stack via Portainer. Voici le docker-compose que j'ai utilisé :

version: "2.4"
services:
  jellyfin:
    image: ghcr.io/linuxserver/jellyfin
    container_name: jellyfin
    volumes:
      - config-jellyfin:/config
      - /volume1/VIDEOS/Series:/data/tvshows
      - /volume1/VIDEOS/Films:/data/movies
    environment:
      - PUID=1026
      - PGID=100
      - TZ=Europe/Paris
    ports:
      - 8096:8096
    mem_limit: 2g
    devices:
      - /dev/dri/renderD128:/dev/dri/renderD128
    restart: unless-stopped

Vous remarquerez une option que nous n'avons pas encore utilisé, mem_limit, qui vous permettra de limiter les ressources allouées en mémoire pour ce conteneur. Cela peut être utile pour s'assurer de laisser des ressources à vos autres conteneurs. Nous avons aussi spécifié un device spécifique, /dev/dri/renderD128, afin d'activer l'accélération matérielle pour le transcodage.

Une fois la stack déployée, vous pouvez vous rendre sur l'URL http://<ADRESSE-IP>:8096 et suivre le guide de démarrage. Choisissez un nom d'utilisateur et un mot de passe, configurez vos médiathèques avec les répertoires vidéos contenant vos films et séries que vous avez renseigné en tant que volumes.

Une fois la configuration initiale terminée, vous serez automatiquement redirigé vers la page de connexion, où vous pourrez saisir vos identifiants. L'analyse des fichiers vidéo contenus dans vos répertoires commence, et il faudra être un peu patient pour que ça se termine. Sur la page d'accueil, vous retrouverez l'accès à vos médiathèques Films et Séries, un menu permettant d'accéder à la partie d'administration de Jellyfin ou encore d'éditer les métadonnées des fichiers média. Enfin, vous pouvez choisir de lire une vidéo directement depuis votre navigateur.

Si vous accédez au Tableau de bord, vous pourrez voir l'avancement de l'analyse de vos médiathèques, ajouter des utilisateurs pour permettre à votre famille ou vos amis de visualiser les vidéos directement depuis chez vous, activer le transcodage ou encore installer des extensions.

Pour accéder depuis l'extérieur à Jellyfin, vous devrez utiliser un proxy inversé (celui intégré dans Synology est très bien pour ça). Vous pourrez également retrouver l'application Android ou iOS. Pour la configuration, rien de plus simple, vous saisissez l'URL puis vos identifiants, et vous aurez à exactement les mêmes possibilités que depuis un navigateur.

Si vous voulez surveiller les ressources que consomme Jellyfin, rendez-vous sur votre interface Portainer, et soit depuis la stack, soit depuis la page des containers, vous devez cliquer sur l'icône représentant une courbe pour afficher la page des statistiques. Il n'y a pas d'historique conservé, et donc les graphiques seront mis à jour selon l'intervalle défini tant que vous afficherez la page.

En conclusion, vous savez donc maintenant comment mettre en place un serveur multimédia, le configurer, y accéder depuis chez vous ou depuis l'extérieur, dans le but de pouvoir profiter quand vous le voulez de votre médiathèque de films et séries. Vous avez également appris comment limiter la mémoire allouée à un conteneur et vérifier les ressources utilisées par celui-ci.

Il pourrait être intéressant de jeter un oeil plus régulier sur les ressources utilisées par les conteneurs, et cela fera d'ailleurs l'objet d'un prochain article.