Pourquoi quitter Plex maintenant
Plex s'est longtemps positionné comme le standard de facto des serveurs multimédia personnels. Le modèle freemium semblait raisonnable : le serveur local fonctionnait gratuitement, et les fonctions avancées comme le streaming distant ou les téléchargements hors ligne étaient réservées aux abonnés ou aux détenteurs d'un Lifetime Pass.
En juillet 2026, la tarification du Lifetime Pass a été revue à la hausse pour atteindre 749 $. Simultanément, le streaming distant — la capacité à regarder vos propres fichiers depuis un autre réseau — est passé derrière ce mur de paiement. Un utilisateur qui avait configuré son serveur Plex pour accéder à sa bibliothèque en déplacement ne peut plus le faire sans payer.
Ce changement révèle une dépendance structurelle : même si vos fichiers restent chez vous sur votre VPS, les fonctions qui rendent l'accès distant utilisable sont contrôlées par un service centralisé. Jellyfin, lui, est développé sous licence GPL-2.0, sans compte obligatoire, sans serveur relais tiers, et sans fonctionnalité paywallée.
Ce que Jellyfin apporte par rapport à Plex
- Aucun compte obligatoire — le serveur Jellyfin fonctionne en entier sans créer de compte sur un service tiers, ni en local ni à distance
- Streaming distant sans abonnement — l'accès depuis l'extérieur de votre réseau local est une fonction de base, pas une option payante
- Licence GPL-2.0 — le code source est auditable, le projet ne peut pas être rachetable ou fermé sans que la communauté puisse le forker
- Compatibilité avec les mêmes clients — Infuse, Jellyfin for Android TV, Swiftfin (iOS) et les clients web couvrent les mêmes cas d'usage que Plex
- Aucun telemetry par défaut — Jellyfin ne remonte aucune donnée d'usage à un service central, contrairement à Plex qui envoie des statistiques de lecture
- Métadonnées depuis les mêmes sources — TheMovieDB et TheTVDB sont utilisés par Jellyfin comme par Plex ; vos bibliothèques se reconstruiront avec les mêmes affiches et les mêmes fiches
- Transcodage matériel sur VPS — VAAPI, NVENC et QuickSync sont supportés dès lors que le processeur ou la carte graphique du VPS les expose
Prérequis avant de commencer
Ce guide suppose que vous disposez d'un VPS Linux (Debian 12 ou Ubuntu 22.04 recommandés), d'un accès root par SSH, et que vos fichiers médias sont déjà stockés sur ce serveur ou montés depuis un stockage en réseau. Prévoyez au minimum 2 vCPU et 2 Go de RAM pour un usage solo ; pour plusieurs utilisateurs simultanés avec transcodage, 4 vCPU et 4 Go sont plus adaptés.
Docker et Docker Compose doivent être installés. Si ce n'est pas encore le cas, la commande d'installation officielle convient sur les deux distributions. Un nom de domaine pointant vers l'IP de votre VPS est nécessaire pour exposer Jellyfin via HTTPS — sans cela, certains clients refusent de se connecter ou affichent des avertissements de sécurité.
Conservez votre instance Plex en état de fonctionnement jusqu'à la fin de la migration : vous aurez besoin de vérifier la structure de vos bibliothèques et de noter les chemins exacts vers vos dossiers médias.
Migration étape par étape
Noter la structure de vos bibliothèques Plex
Ouvrez l'interface web de Plex, rendez-vous dans Réglages → Bibliothèques et notez pour chaque bibliothèque : son nom (Films, Séries, Musique…) et le ou les chemins de dossiers associés. Ce sont ces mêmes chemins que vous déclarerez à Jellyfin — aucun déplacement de fichier n'est nécessaire.
Notez également si certaines bibliothèques pointent vers des dossiers montés en NFS ou en CIFS : ces montages doivent être actifs au démarrage de Jellyfin pour que le scan initial réussisse.
Créer les dossiers de configuration Jellyfin
Connectez-vous à votre VPS par SSH et créez les répertoires
/opt/jellyfin/configet/opt/jellyfin/cache:Ces deux dossiers contiendront respectivement la base de données Jellyfin (comptes, préférences, historique de lecture) et le cache de transcodage. Vos médias restent à leur emplacement actuel — ne les déplacez pas.
Écrire le fichier Docker Compose
Créez
/opt/jellyfin/docker-compose.ymlavec le contenu suivant, en adaptant/mnt/mediaau chemin réel de vos fichiers. Déclarez le servicejellyfin/jellyfin:latestavec les volumes de config, cache et médias.Le
:ro(lecture seule) sur le volume médias est une bonne pratique : Jellyfin n'a jamais besoin d'écrire dans vos fichiers. Exposer le port uniquement sur127.0.0.1évite que le service soit directement accessible sans TLS — c'est le reverse proxy qui gérera l'exposition publique.Démarrer Jellyfin et créer le compte administrateur
Démarrez Jellyfin avec
docker compose up -d.Ouvrez
http://votre-ip:8096dans un navigateur depuis votre poste local (en SSH avec un tunnel si nécessaire). L'assistant vous demande de choisir une langue, de créer un compte administrateur local — aucune adresse e-mail externe ni compte Jellyfin n'est requis — puis de déclarer vos bibliothèques. Pointez exactement vers les mêmes chemins que ceux notés à l'étape 1.Configurer le reverse proxy HTTPS
Pour un accès distant sécurisé, vous avez besoin d'un reverse proxy qui termine le TLS et transmette les requêtes à Jellyfin sur le port 8096. Avec nginx, créez un vhost nginx dans
/etc/nginx/sites-available/jellyfin. Configurez unproxy_passvershttp://127.0.0.1:8096avec les headers Websocket (Upgrade,Connection) requis par Jellyfin.Activez le site et rechargez nginx. Obtenez un certificat Let's Encrypt avec
certbot --nginx -d media.votre-domaine.com. Retournez ensuite dans les réglages Jellyfin (Tableau de bord → Réseau) pour déclarer l'URL publiquehttps://media.votre-domaine.com.Arrêter Plex et vérifier la migration
Une fois que Jellyfin répond correctement depuis l'extérieur et que vos bibliothèques sont scannées, arrêtez Plex. Sur un déploiement Docker, arrêtez et supprimez le conteneur avec
docker stop plex && docker rm plex.Vérifiez que Jellyfin résout les métadonnées correctement sur quelques titres : affiches présentes, synopsis, date de sortie. Si des fichiers restent sans métadonnées, vérifiez leur nommage — Jellyfin suit la convention
Titre (Année).extpour les films etSérie/Saison N/Titre S0NE0N.extpour les séries. Un clic sur « Analyser les métadonnées » dans la fiche force un nouveau scan.
Créer des comptes utilisateurs locaux pour vos proches
Jellyfin supporte plusieurs comptes utilisateurs, chacun avec ses propres bibliothèques visibles, son historique de lecture et ses préférences de qualité. Créez un compte par personne dans Tableau de bord → Utilisateurs : aucun de ces comptes ne nécessite d'adresse e-mail ni de validation externe. Chaque utilisateur installe l'application Jellyfin sur son téléviseur ou son téléphone, entre l'URL de votre serveur et son identifiant local — c'est tout.
Plex vs Jellyfin : fonctions clés après le paywall de juillet 2026
Faites défiler le tableau
| Fonction | Plex (version gratuite) | Jellyfin |
|---|---|---|
| Streaming local (réseau local) | Inclus | Inclus |
| Streaming distant (hors réseau local) | Pass à vie 749 $ requis | Inclus sans surcoût |
| Compte obligatoire | Oui (Plex.tv) | Non |
| Licence | Propriétaire | GPL-2.0 (libre) |
| Téléchargements hors ligne | Pass à vie requis | Inclus |
| Transcodage matériel | Pass à vie requis pour certains formats | Inclus (VAAPI, NVENC, QuickSync) |
| Clients disponibles | iOS, Android, TV, web | iOS (Swiftfin), Android, TV, web, Infuse |
| Données transmises à un tiers | Statistiques de lecture vers Plex.tv | Aucune par défaut |
Dépannage des erreurs courantes
Le port 8096 ne répond pas après le docker compose up. Vérifiez que le conteneur est bien démarré avec docker ps et consultez les logs avec docker logs jellyfin. L'erreur la plus fréquente est un conflit de port si une ancienne installation de Jellyfin existait.
Les métadonnées ne se chargent pas. Le scan initial peut prendre de dix minutes à plusieurs heures selon la taille de la bibliothèque. Surveillez l'avancement dans Tableau de bord → Activité. Si des fichiers restent sans affiches après plusieurs heures, le problème vient presque toujours du nommage des fichiers : renommez selon la convention et relancez un scan.
L'accès distant échoue alors que le serveur répond en local. Vérifiez trois points dans cet ordre : le pare-feu autorise le port 443 (ufw allow 443), le DNS pointe vers la bonne IP du VPS, et la variable JELLYFIN_PublishedServerUrl dans Docker Compose correspond exactement à l'URL déclarée dans les réglages réseau Jellyfin.
Le transcodage CPU sature à 100 %. Sans accélération matérielle, un seul flux 4K peut saturer plusieurs cœurs. Activez VAAPI si votre processeur le supporte : dans Tableau de bord → Lecture, sélectionnez « Video Acceleration API (VAAPI) » et mappez le périphérique /dev/dri/renderD128 dans votre Compose. Encouragez également vos utilisateurs à activer le Direct Play dans les réglages de leur client quand la bande passante le permet.
Les étapes ci-dessus couvrent un déploiement standard sur Debian ou Ubuntu avec Docker. Si vous utilisez une autre distribution ou un gestionnaire de conteneurs différent (Podman, par exemple), la logique reste identique — seules les commandes d'installation de Docker changent. La documentation officielle Jellyfin (docs.jellyfin.org) maintient des guides d'installation pour chaque environnement, y compris les paquets natifs Debian et les images Docker officielles.
Aller plus loin avec votre serveur Jellyfin
Une fois Jellyfin stable, quelques extensions méritent d'être explorées. Le plugin Jellyseerr (fork de Overseerr) ajoute une interface de demande de contenus : vos utilisateurs soumettent ce qu'ils veulent regarder, et vous pouvez valider les demandes depuis un tableau de bord centralisé.
Pour les collections musicales, le plugin Musicbrainz enrichit les métadonnées bien au-delà des pochettes : tags de genre, dates de sortie, artistes liés. La lecture sur enceintes connectées est possible via le plugin DLNA intégré ou via Chromecast depuis l'application web.
Enfin, si vous hébergez d'autres services sur le même VPS, Jellyfin s'intègre naturellement dans une stack Docker multi-conteneurs avec son propre réseau interne — il n'expose jamais son port directement, seul le reverse proxy est visible depuis l'extérieur. C'est une architecture propre qui s'adapte aussi bien à un usage solo qu'à une dizaine d'utilisateurs.