Héberger Jellyfin : votre serveur multimédia personnel (alternative à Plex)
Votre propre médiathèque, accessible partout, sans abonnement ni catalogue imposé. Jellyfin est le serveur multimédia libre, alternative à Plex et Emby. Voici comment le déployer, transcodage compris.
Imaginez votre propre Netflix, alimenté par vos films, séries, albums et photos, accessible depuis votre téléviseur, votre téléphone ou un navigateur. Jellyfin permet de construire cette médiathèque personnelle sans abonnement et sans dépendre d’un catalogue contrôlé par une plateforme.
Contrairement à Plex ou Emby, Jellyfin est un logiciel libre et open source, entièrement gratuit. Il ne nécessite aucun compte central et ne réserve pas certaines fonctions à une offre payante. Vous gardez le contrôle du serveur, des utilisateurs et des données.
L’auto-hébergement vidéo demande toutefois des ressources importantes. Sans accélération GPU, le transcodage repose sur le processeur et peut rapidement saturer un VPS. TalCloud n’annonçant pas de GPU pour ses futurs VPS, il faut privilégier le Direct Play, c’est-à-dire la lecture du fichier original par un appareil compatible. Une médiathèque exige également beaucoup de stockage et le streaming distant consomme une quantité importante de bande passante.
Enfin, votre serveur doit uniquement stocker et diffuser des contenus que vous avez le droit d’utiliser. Jellyfin est un outil de gestion multimédia, pas une source de films ou de séries.
Les prérequis pour héberger Jellyfin
Pour suivre ce guide, prévoyez :
- Un VPS Linux avec suffisamment de processeur, de mémoire, de stockage et de bande passante
- Docker et le module Docker Compose (voir installer Docker sur un VPS)
- Un nom de domaine ou un sous-domaine, par exemple
media.example.fr - Un enregistrement DNS pointant vers l’adresse IP du VPS
- Un reverse proxy pour activer HTTPS
- Une médiathèque dont vous maîtrisez la provenance et les droits
Le stockage est souvent le premier facteur limitant. Quelques films en haute définition peuvent déjà représenter plusieurs dizaines ou centaines de gigaoctets. Une collection en 4K peut atteindre plusieurs téraoctets. Vérifiez donc la capacité disponible avant de transférer vos médias.
La bande passante compte tout autant. Une lecture directe en 1080p peut consommer plusieurs mégabits par seconde, tandis qu’un fichier 4K à haut débit peut en demander beaucoup plus. Plusieurs lectures simultanées additionnent cette consommation.
Les VPS TalCloud démarrent à 4,99 € par mois. Les serveurs sont situés en France, avec stockage NVMe, protection Anti-DDoS Netrix, cadre RGPD et support humain. Comparez les capacités de stockage, de trafic et de processeur avec la taille réelle de votre médiathèque.
Préparer les répertoires du serveur
Créez un dossier pour la configuration Docker et un emplacement distinct pour les médias :
sudo mkdir -p /opt/jellyfin/config
sudo mkdir -p /opt/jellyfin/cache
sudo mkdir -p /srv/media/films
sudo mkdir -p /srv/media/series
cd /opt/jellyfin
Les répertoires config et cache contiendront respectivement les paramètres persistants de Jellyfin et ses données temporaires. Le dossier /srv/media accueillera la médiathèque.
Adaptez les propriétaires et permissions au compte qui exécute Docker. Jellyfin doit pouvoir lire les médias, mais il n’a généralement pas besoin de les modifier. Un montage en lecture seule réduit les risques de suppression accidentelle depuis le conteneur.
Déployer Jellyfin avec Docker Compose
Dans /opt/jellyfin, créez un fichier compose.yaml avec la configuration suivante :
services:
jellyfin:
image: jellyfin/jellyfin:latest
container_name: jellyfin
restart: unless-stopped
environment:
TZ: Europe/Paris
volumes:
- ./config:/config
- ./cache:/cache
- /srv/media:/media:ro
ports:
- "127.0.0.1:8096:8096"
networks:
- jellyfin_net
networks:
jellyfin_net:
driver: bridge
L’image jellyfin/jellyfin est l’image Docker officielle. La configuration et le cache restent disponibles après le remplacement du conteneur. Les médias sont montés dans /media en lecture seule.
Le port 8096 est publié uniquement sur l’interface locale. Jellyfin n’est donc pas directement exposé sur Internet. Le reverse proxy se chargera de recevoir les connexions HTTPS publiques.
Démarrez le service :
docker compose pull
docker compose up -d
docker compose ps
Pour consulter les journaux en cas de problème :
docker compose logs -f jellyfin
Depuis le serveur, l’interface doit répondre sur http://127.0.0.1:8096. Attendez d’avoir configuré le reverse proxy avant de l’ouvrir au public.
Configurer Jellyfin pour la première fois
Le premier assistant vous demande de choisir la langue et de créer un compte administrateur. Utilisez un nom difficile à deviner et un mot de passe long et unique. Le compte administrateur ne devrait pas servir de profil quotidien à toute la famille.
Ajoutez ensuite vos bibliothèques. Pour les films, choisissez le type Films et le chemin /media/films. Pour les séries, choisissez Séries et le chemin /media/series.
La qualité du classement dépend fortement du nommage. Pour les films, utilisez par exemple :
/media/films/
└── Dune (2021)/
└── Dune (2021).mkv
Pour une série :
/media/series/
└── The Expanse (2015)/
├── Season 01/
│ ├── The Expanse - S01E01.mkv
│ └── The Expanse - S01E02.mkv
└── Season 02/
└── The Expanse - S02E01.mkv
Le titre, l’année et les numéros de saison et d’épisode aident Jellyfin à identifier correctement les œuvres et à récupérer affiches, résumés et distributions. Évitez les dossiers contenant simultanément plusieurs films ou des noms imprécis comme video_finale.mkv.
Après l’ajout, lancez l’analyse des bibliothèques. Sur une collection importante, l’indexation initiale et la récupération des métadonnées peuvent prendre du temps.
Publier Jellyfin en HTTPS
Un serveur multimédia accessible à distance doit utiliser HTTPS. Le reverse proxy reçoit la connexion sécurisée sur le port 443, gère le certificat TLS et transmet la requête à Jellyfin sur 127.0.0.1:8096.
Avec Nginx installé directement sur le VPS, le bloc principal peut ressembler à ceci :
server {
listen 443 ssl http2;
server_name media.example.fr;
ssl_certificate /chemin/vers/fullchain.pem;
ssl_certificate_key /chemin/vers/privkey.pem;
location / {
proxy_pass http://127.0.0.1:8096;
proxy_http_version 1.1;
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 Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_buffering off;
}
}
Remplacez le domaine et les chemins des certificats. Si vous préférez une interface graphique, Nginx Proxy Manager gère aussi bien le certificat et la redirection. Si votre reverse proxy fonctionne lui-même dans Docker, placez-le sur un réseau Docker partagé avec Jellyfin et utilisez le nom jellyfin comme destination. Ne publiez pas inutilement le port 8096 sur toutes les interfaces.
Direct Play et transcodage : le point critique
Le Direct Play est le scénario idéal. Jellyfin envoie le fichier original et le client le décode localement. Le serveur utilise alors peu de processeur, même si le débit réseau reste celui du média.
Le transcodage intervient lorsque l’appareil ne prend pas en charge le codec vidéo, le codec audio, le conteneur ou les sous-titres. Jellyfin doit alors décoder et réencoder le flux en temps réel. Sans GPU annoncé chez TalCloud, cette opération serait effectuée par le CPU. Un seul transcodage 4K peut dépasser les capacités d’un VPS classique, et plusieurs sessions simultanées aggravent immédiatement la charge.
Pour limiter ce risque :
- Préférez H.264 pour la vidéo et AAC pour l’audio lorsque la compatibilité maximale est prioritaire
- Utilisez MP4 pour les appareils anciens ou MKV avec des clients natifs bien compatibles
- Installez les applications Jellyfin officielles ou un client capable de lire davantage de formats
- Évitez les sous-titres graphiques qui peuvent imposer leur incrustation dans l’image
- Fixez une limite de débit adaptée aux connexions distantes
- Limitez le nombre de transcodages simultanés dans les paramètres
- Conservez éventuellement une version 1080p compatible en plus d’un original 4K
La limitation de qualité peut réduire la bande passante, mais elle provoque généralement un transcodage. Sur un VPS sans GPU, mieux vaut souvent préparer les fichiers à l’avance que convertir chaque lecture en temps réel.
Regarder Jellyfin sur tous ses appareils
L’interface web fonctionne dans un navigateur moderne et convient bien à l’administration. Pour la lecture quotidienne, les applications natives offrent souvent une meilleure compatibilité avec les codecs et favorisent le Direct Play.
Jellyfin propose des clients pour Android et iOS, ainsi que plusieurs plateformes de télévision. La disponibilité exacte dépend du modèle de téléviseur, de son système et de son magasin d’applications. Un boîtier Android TV ou un appareil compatible peut être plus souple qu’une application intégrée ancienne.
Kodi peut également accéder à une bibliothèque Jellyfin grâce à ses extensions dédiées. Cette combinaison est intéressante pour un salon équipé d’un mini-PC ou d’un boîtier multimédia, notamment lorsque Kodi sait décoder directement les fichiers stockés sur le serveur.
Testez chaque appareil avec un film représentatif, puis consultez le tableau de bord Jellyfin pendant la lecture. Il indique si la session utilise le Direct Play, un simple changement de conteneur ou un transcodage complet.
Sécuriser et entretenir le serveur
Créez un compte séparé pour chaque personne ou profil familial. Vous pourrez limiter les bibliothèques accessibles, appliquer un contrôle parental et suivre les sessions sans partager les droits d’administration.
Gardez uniquement les ports nécessaires ouverts, typiquement SSH, HTTP pour la validation du certificat et HTTPS, à l’aide du pare-feu. Protégez SSH avec des clés, installez régulièrement les mises à jour du système et surveillez les journaux de connexion.
Pour mettre Jellyfin à jour :
cd /opt/jellyfin
docker compose pull
docker compose up -d
docker image prune
Sauvegardez surtout /opt/jellyfin/config, qui contient les utilisateurs, bibliothèques, réglages et métadonnées locales. Le cache peut être reconstruit. Les médias nécessitent leur propre stratégie de sauvegarde selon leur volume et leur caractère irremplaçable. Notre guide sur la stratégie de sauvegarde d’un serveur aide à la définir.
Avant une sauvegarde cohérente de la configuration, arrêtez brièvement le service :
cd /opt/jellyfin
docker compose stop jellyfin
sudo tar -czf jellyfin-config.tar.gz config
docker compose start jellyfin
Contrôlez enfin l’espace disque, le trafic réseau et l’utilisation CPU pendant plusieurs lectures. Ces mesures vous permettront de valider concrètement si le futur VPS choisi convient à vos formats, à vos appareils et au nombre d’utilisateurs simultanés.