Pourquoi Jellyfin en 2026
Le paysage des serveurs multimédia personnels a changé en trois ans. Plex a multiplié par trois le prix de son Lifetime Pass, rendant l'entrée prohibitive pour un usage familial. Emby, l'autre alternative historique, a lui aussi basculé sur un modèle freemium — certaines fonctionnalités clés comme le transcodage matériel et les clients mobiles sont désormais réservées aux abonnés Emby Première.
Jellyfin est né en 2018 comme un fork d'Emby, précisément pour rester libre. La licence GPLv2 interdit toute re-fermeture du code — si un contributeur réintroduit du code propriétaire, les utilisateurs peuvent légalement bifurquer. C'est une garantie structurelle que n'offre ni Plex ni Emby.
Du côté des fonctionnalités, Jellyfin 10.10 (branche courante en 2026) couvre la quasi-totalité des usages grand public : streaming adaptatif, transcodage logiciel et matériel, applications natives iOS, Android, Android TV et Roku, gestion LiveTV et enregistrement DVR, sous-titres automatiques, authentification SSO via OIDC et LDAP, et un système de plugins qui étend l'application sans modifier le cœur.
Ce que Jellyfin propose
- Streaming DLNA et HLS — diffuse films, séries et musique vers tous vos appareils, y compris les TV sans application native.
- Applications officielles — iOS, Android, Android TV, Roku, Fire TV, Kodi ; une interface web responsive pour tout le reste.
- Transcodage à la volée — convertit le format source si l'appareil cible ne le supporte pas, en logiciel ou via GPU.
- LiveTV et enregistrement DVR — branchez un tuner USB ou une source IPTV pour regarder et enregistrer la télévision en direct.
- SSO OIDC et LDAP — intégrez votre annuaire existant ou un fournisseur d'identité comme Authentik ou Keycloak.
- Sous-titres automatiques — plugin OpenSubtitles, extraction des pistes embarquées, rendu WebVTT.
- Plugins étendus — intégrations LastFM, scrobbling, métadonnées musicales, trailers, gestion des collections.
- Absence totale de cloud propriétaire — aucune authentification via les serveurs Plex, aucune donnée de lecture envoyée à un tiers.
Prérequis chiffrés par cas d'usage
Les besoins varient considérablement selon ce que vous comptez faire.
SD et 1080p sans transcodage (direct play) : si vos appareils lisent nativement le codec source (H.264 ou H.265), Jellyfin ne transcode pas — il sert le fichier comme un serveur de fichiers intelligent. 2 vCPU et 2 Go de RAM suffisent largement, pour une bibliothèque de plusieurs centaines de titres. C'est le cas d'usage le plus courant sur VPS.
1080p avec transcodage logiciel : quand le client ne supporte pas le codec ou quand vous bridez le débit, Jellyfin encode à la volée. Un seul flux 1080p H.264 consomme 2 à 4 cœurs selon la résolution source. Visez 4 vCPU / 4 Go RAM minimum pour deux utilisateurs simultanés.
4K HDR avec transcodage logiciel : le HDR tone-mapping (conversion HDR→SDR pour les écrans sans HDR) est extrêmement gourmand. Un seul flux 4K HDR peut saturer 8 cœurs. Ce cas d'usage n'est pas adapté à un VPS cloud standard — préférez le direct play 4K (le client doit supporter HEVC/HDR) ou un serveur dédié avec GPU.
Transcodage matériel GPU (VAAPI/NVENC) : divisé par 4 à 10 la charge CPU, mais requiert un accès au périphérique /dev/dri ou à une carte NVIDIA. Les VPS cloud standards n'exposent pas de GPU ; c'est une option réservée aux serveurs dédiés ou aux VPS GPU spécialisés.
Installer Jellyfin sur VPS Ubuntu/Debian avec Docker Compose
Préparer le VPS et installer Docker
Connectez-vous en SSH à votre VPS (Ubuntu 22.04 ou Debian 12). Mettez à jour le système et installez Docker :
apt update && apt upgrade -y curl -fsSL https://get.docker.com | sh systemctl enable --now dockerVérifiez que Docker fonctionne :
docker infoCréer l'arborescence de dossiers
Choisissez où stocker la configuration Jellyfin et vos médias :
mkdir -p /opt/jellyfin/{config,cache} mkdir -p /mnt/media/{films,series,musique} chown -R 1000:1000 /opt/jellyfin /mnt/mediaLe UID 1000 est l'utilisateur par défaut de l'image Docker Jellyfin.
Écrire le fichier docker-compose.yml
Créez
/opt/jellyfin/docker-compose.ymlavec le contenu suivant :services: jellyfin: image: jellyfin/jellyfin:latest container_name: jellyfin user: "1000:1000" network_mode: host volumes: - /opt/jellyfin/config:/config - /opt/jellyfin/cache:/cache - /mnt/media:/media:ro restart: unless-stopped environment: - JELLYFIN_PublishedServerUrl=https://jellyfin.votre-domaine.comLe mode
hostsimplifie la découverte DLNA. Si votre hébergeur l'interdit, remplacez parports: ["8096:8096"].Démarrer le container
cd /opt/jellyfin docker compose up -d docker compose logs -fJellyfin écoute sur le port 8096. Attendez la ligne
Startup completedans les logs avant de passer à la suite.Configurer nginx comme reverse proxy
Installez nginx et certbot :
apt install -y nginx certbot python3-certbot-nginxCréez
/etc/nginx/sites-available/jellyfin:server { listen 80; server_name jellyfin.votre-domaine.com; return 301 https://$host$request_uri; } server { listen 443 ssl; server_name jellyfin.votre-domaine.com; ssl_certificate /etc/letsencrypt/live/jellyfin.votre-domaine.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/jellyfin.votre-domaine.com/privkey.pem; location / { proxy_pass http://localhost: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; # WebSocket proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } }Activez le site et obtenez le certificat :
ln -s /etc/nginx/sites-available/jellyfin /etc/nginx/sites-enabled/ certbot --nginx -d jellyfin.votre-domaine.com nginx -t && systemctl reload nginxAssistant de configuration initial
Ouvrez
https://jellyfin.votre-domaine.comdans votre navigateur. L'assistant vous guide à travers :1. Créer le compte administrateur
2. Ajouter votre bibliothèque (pointez vers/media/films,/media/series)
3. Choisir la langue et les agents de métadonnées (TheMovieDB pour les films, TheTVDB pour les séries)Lancez un scan complet une fois la configuration terminée : Tableau de bord > Bibliothèques > Scanner toutes les bibliothèques.
Plugins introuvables — corriger l'URL du dépôt
C'est l'une des questions les plus posées depuis la migration vers Jellyfin 10.9 : le catalogue de plugins apparaît vide, alors que l'instance fonctionne parfaitement par ailleurs.
Symptôme : Dashboard > Plugins > Catalog = liste vide, ou message « Impossible de charger les plugins ».
Cause : L'URL du dépôt officiel de plugins a changé entre Jellyfin 10.7 et 10.9 (issue GitHub #16654). Les instances installées ou mises à jour avant la migration gardent l'ancienne URL releases/plugin/manifest-stable.json dans leur configuration — elle ne répond plus.
Correction en trois clics :
1. Allez dans Tableau de bord > Plugins > Dépôts
2. Repérez l'entrée qui pointe vers releases/plugin/manifest-stable.json et supprimez-la
3. Ajoutez un nouveau dépôt avec l'URL à jour : https://repo.jellyfin.org/files/plugin/manifest.json
4. Cliquez sur « Enregistrer »
Vider le cache : après la mise à jour du dépôt, les métadonnées précédentes peuvent rester en cache. Redémarrez Jellyfin pour forcer leur rechargement : Tableau de bord > Journaux et activité > Redémarrer Jellyfin, ou depuis le terminal :
docker compose -f /opt/jellyfin/docker-compose.yml restartLe catalogue doit s'afficher quelques secondes après le redémarrage.
Stratégie de stockage pour Jellyfin sur VPS
Le stockage est souvent la contrainte principale. Les ordres de grandeur à connaître (estimations standard) :
- Film 1080p MKV H.264 : 5 à 15 Go selon la durée et le débit
- Film 4K HDR H.265 : 15 à 60 Go, voire plus pour les remasters Blu-ray
- Épisode de série 1080p : 1 à 4 Go
Exemple de calcul : 100 films 1080p × 8 Go (moyenne) = 800 Go minimum. Pour une médiathèque de 300 films mixtes + 10 séries complètes, comptez 3 à 5 To.
Option 1 — Volume additionnel VPS (recommandé pour commencer) : la plupart des fournisseurs VPS proposent des volumes de blocs (Block Storage) montables à chaud, facturés au Go/mois. Montez-le en ext4 sur /mnt/media et passez-le en bind mount dans Docker. Avantage : I/O direct sur disque local, sans transit réseau. Inconvénient : coût linéaire avec la taille.
# Après l'attachement du volume (ici /dev/sdb)
mkfs.ext4 /dev/sdb
mount /dev/sdb /mnt/media
echo '/dev/sdb /mnt/media ext4 defaults 0 2' >> /etc/fstabOption 2 — Hetzner Storage Box (CIFS/Samba) : solution hybride — votre VPS reste léger, le stockage vit sur la Storage Box de Hetzner (capacités jusqu'à 20 To). Montez-la via CIFS :
apt install -y cifs-utils
mount -t cifs //uXXXXXX.your-storagebox.de/backup /mnt/media \
-o username=uXXXXXX,password=XXXX,uid=1000,gid=1000,iocharset=utf8La latence réseau est acceptable pour le streaming pré-bufferisé (Jellyfin lit à l'avance), mais inadaptée au transcodage en direct — le débit CIFS ne suit pas.
Option 3 — NAS local avec tunnel Tailscale ou Cloudflare Tunnel : si vous disposez déjà d'un NAS domestique, vous pouvez y exposer votre bibliothèque vers un VPS distant via un tunnel chiffré. Tailscale crée un réseau privé virtuel entre votre NAS et votre VPS en moins de dix minutes. Le streaming passe ensuite de votre NAS → VPS → utilisateur, avec une latence maîtrisée. Réservez cette option aux bibliothèques très volumineuses déjà constituées.
Seuil de rentabilité : un volume de 2 To chez un fournisseur VPS générique coûte environ 20 à 40 €/mois. Une Hetzner Storage Box 2 To coûte 7,64 €/mois (2026). Au-delà de 500 Go, la Storage Box est presque toujours plus économique — à condition d'accepter la latence réseau.
Transcodage matériel — VAAPI et NVENC
Le transcodage logiciel convient à une ou deux sessions simultanées sur un bon VPS. Au-delà, ou pour du 4K HDR régulier, le transcodage matériel est indispensable.
VAAPI (Intel/AMD) : sur un serveur dédié avec processeur Intel Gen 6+ ou AMD RDNA, le périphérique /dev/dri/renderD128 expose l'encodeur intégré. Ajoutez-le au service Docker :
devices:
- /dev/dri/renderD128:/dev/dri/renderD128Activez ensuite dans Tableau de bord > Lecture > Transcodage matériel : sélectionnez « Intel Quick Sync (VAAPI) ».
NVENC (NVIDIA) : requiert le runtime NVIDIA pour Docker (nvidia-docker2). Ajoutez au service :
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]Rappel : les VPS cloud standards n'exposent pas de GPU ou de device /dev/dri. Ce mode est réservé aux serveurs dédiés avec carte graphique ou processeur avec GPU intégré accessible.
Limitez le nombre de flux simultanés pour éviter la saturation : Tableau de bord > Lecture > Nombre maximum de flux transcodés simultanés. Fixez cette valeur à 2 ou 3 sur un VPS de 4 vCPU — au-delà, les autres utilisateurs subissent une dégradation perceptible.
Dépannage — erreurs fréquentes
Bibliothèque vide après scan : vérifiez que le bind mount Docker est correct et que les permissions correspondent. Le container tourne en UID 1000 ; si vos fichiers appartiennent à root, Jellyfin ne peut pas les lire : chown -R 1000:1000 /mnt/media.
HTTPS cassé derrière nginx : si l'interface charge en HTTP alors que vous avez configuré HTTPS, vérifiez que les en-têtes X-Forwarded-Proto et X-Real-IP sont bien transmis dans la configuration nginx. Sans eux, Jellyfin génère des URLs en HTTP dans ses réponses.
Transcodage lent ou erreur VAAPI : confirmez que le container a accès au device avec docker exec jellyfin ls /dev/dri. Si le dossier est absent, le device n'est pas passé dans docker-compose.yml, ou votre VPS ne l'expose pas.
Applications mobiles refusent de se connecter : vérifiez que votre certificat TLS est valide et non auto-signé. Les clients Jellyfin iOS et Android rejettent les certificats auto-signés sans configuration supplémentaire. Si vous utilisez Let's Encrypt, assurez-vous que le renouvellement automatique (certbot renew) est actif : systemctl status certbot.timer.
Plugins installés mais inactifs après redémarrage : certains plugins requièrent un redémarrage COMPLET de Jellyfin (pas un rechargement de configuration) pour s'activer. Utilisez docker compose restart plutôt que l'option de redémarrage depuis l'interface si le problème persiste.
Déployer Jellyfin depuis le Marketplace ServOrbit
Si vous préférez une installation préconfigurée plutôt que de gérer Docker manuellement, Jellyfin est disponible dans le Marketplace ServOrbit. L'installation crée automatiquement le container, configure le reverse proxy nginx avec HTTPS Let's Encrypt et monte un volume de stockage dédié. Vous récupérez un Jellyfin prêt à l'emploi en moins de cinq minutes, avec les mêmes options de stockage (volume additionnel, Storage Box) disponibles directement depuis le panneau de gestion.
Le VPS reste entièrement sous votre contrôle : vous pouvez vous connecter en SSH, modifier docker-compose.yml, ajouter des volumes ou migrer vers une autre infrastructure à tout moment.