Comparatif

Jellyfin vs Plex : quel serveur multimédia auto-hébergé ?

Les abonnements aux plateformes de streaming s'accumulent et vous perdez le contrôle de votre médiathèque. Héberger Jellyfin ou Plex sur un VPS coûte une fraction de ces abonnements et vous rend propriétaire de chaque fichier. Ce guide compare les deux serveurs sur tous les critères qui comptent, vous guide pas à pas dans le déploiement et couvre les erreurs les plus fréquentes — y compris la migration vers Jellyfin 12, sorti en septembre 2026, qui introduit des changements incompatibles avec les versions précédentes.

9 min de lecture8 étapes
Sommaire· Pourquoi héberger son serveur multimédia sur un VPS1/6
  1. 01Pourquoi héberger son serveur multimédia sur un VPS
  2. 02Ce que vous gagnez en l'hébergeant vous-même
  3. 03Prérequis pour un VPS media-server
  4. 04Déployer Jellyfin (ou Plex) avec Docker et reverse proxy
  5. 05Jellyfin 12 : ce qui change et comment migrer
  6. 06Dépannage : les erreurs les plus fréquentes

Pourquoi héberger son serveur multimédia sur un VPS

Un serveur multimédia auto-hébergé sur VPS fait de vous le propriétaire de votre catalogue : films, séries, musique et photos restent accessibles en HTTPS depuis un navigateur, une Smart TV ou un smartphone, sans quota imposé et sans analyse de vos habitudes.

Contrairement à une machine domestique, un VPS dispose d'une bande passante montante stable indispensable au streaming à distance, d'une IP fixe pour configurer un domaine, et d'une disponibilité permanente sans surcoût d'électricité. Votre médiathèque ne dépend plus de la connexion ni du matériel de chez vous.

Jellyfin est entièrement libre (licence GPL) sans aucune fonctionnalité payante. Plex offre une expérience client plus soignée mais réserve le transcodage matériel au Plex Pass et, depuis le 29 avril 2025, la lecture à distance de vos vidéos personnelles au Plex Pass ou au Remote Watch Pass. Le choix se joue donc entre liberté totale et commodité préconfigurée.

Ce que vous gagnez en l'hébergeant vous-même

  • Accès à distance en HTTPS sans passer par un relais externe ni exposer votre contenu à un tiers
  • Aucune limite sur le nombre de comptes, de flux simultanés ou la taille de la bibliothèque
  • Transcodage à la volée piloté par vos propres ressources VPS (CPU ou GPU)
  • Sous-titres, métadonnées et jaquettes récupérés automatiquement et stockés sur votre serveur
  • Avec Jellyfin : zéro fonctionnalité payante, aucune télémétrie, code source auditable
  • Sauvegarde et migration triviales : tout tient dans un volume Docker et un dossier media
  • Support DLNA (via le plugin officiel de Jellyfin) pour diffuser vers des TV et lecteurs réseau sans client dédié

Prérequis pour un VPS media-server

Pour le streaming direct (remux sans ré-encodage), un VPS à 2 vCPU et 2 Go de RAM suffit. Dès que vous activez le transcodage logiciel d'un flux 1080p, comptez 4 vCPU et 4 Go ; pour plusieurs flux 4K simultanés, visez 6 à 8 vCPU. Le transcodage matériel (QSV, NVENC) reste rare sur les VPS partagés : privilégiez les fichiers déjà compatibles avec vos clients pour rester en Direct Play.

Côté stockage, prévoyez un volume généreux et idéalement un disque rapide pour les métadonnées. Vous aurez besoin de Docker et Docker Compose installés, d'un sous-domaine (ex. media.mondomaine.com) pointant vers l'IP du VPS, et d'un reverse proxy pour le TLS.

Déployer Jellyfin (ou Plex) avec Docker et reverse proxy

  1. Préparer l'arborescence et les volumes

    Sur le VPS, créez mkdir -p /srv/jellyfin/{config,cache} et un dossier media /srv/media/{films,series,musique}. Ces chemins seront montés en volumes pour persister la configuration et séparer proprement le contenu de la base de données.

  2. Rédiger le docker-compose.yml

    Déclarez le service jellyfin/jellyfin (ou plexinc/pms-docker), montez ./config, ./cache et /srv/media en lecture seule, et exposez le port 8096 (Jellyfin) ou 32400 (Plex) uniquement en local : 127.0.0.1:8096:8096. Le reverse proxy gérera l'exposition publique.

  3. Démarrer le conteneur

    Lancez docker compose up -d, puis suivez docker compose logs -f. Accédez à l'assistant de configuration via un tunnel SSH ssh -L 8096:127.0.0.1:8096 user@vps pour créer le compte administrateur avant toute exposition publique.

  4. Configurer le transcodage

    Dans l'interface Jellyfin, sous Tableau de bord → Lecture → Transcodage, laissez le chemin de transcodage par défaut (/cache/transcodes dans l'image officielle) : ces fichiers temporaires n'ont rien à faire dans ./config, que vous sauvegardez. Si votre VPS est limité en CPU, privilégiez le Direct Play et retirez, dans le profil de chaque utilisateur (Tableau de bord → Utilisateurs), l'autorisation de lire une vidéo qui nécessite un transcodage : les fichiers incompatibles échoueront plutôt que de saturer le serveur. Pour Plex, l'option équivalente, « Disable video stream transcoding », se trouve dans Paramètres → Serveur → Transcodeur.

  5. Mettre en place le reverse proxy et le SSL

    Configurez Caddy ou Nginx pour proxifier media.mondomaine.com vers 127.0.0.1:8096. Avec Caddy, deux lignes suffisent et le certificat Let's Encrypt est automatique. Pensez à transmettre les en-têtes WebSocket pour la lecture en temps réel. Attention avec Jellyfin 12 : les anciens préfixes /emby/ et /mediabrowser/ ont été supprimés — si vous aviez configuré votre reverse proxy sur ces chemins, mettez-le à jour pour pointer vers la racine /.

  6. Sécuriser l'accès avec l'authentification Jellyfin

    Jellyfin gère nativement l'authentification : imposez des mots de passe longs et, dans le profil de chaque utilisateur (Tableau de bord → Utilisateurs), fixez le nombre maximal de tentatives de connexion échouées avant verrouillage. Pour Plex derrière un reverse proxy, déclarez l'URL publique dans Paramètres → Serveur → Réseau (« Custom server access URLs ») ; la lecture à distance de vos vidéos exige en outre un Plex Pass sur le compte administrateur du serveur, ou un Remote Watch Pass sur le compte de chaque spectateur. N'ouvrez jamais le port 8096 ou 32400 directement sur le pare-feu : seuls les ports 80/443 doivent être accessibles.

  7. Indexer les bibliothèques

    Dans l'interface, ajoutez les dossiers /media/films et /media/series, choisissez l'agent de métadonnées, et lancez le scan. Vérifiez qu'un fichier se lit en Direct Play depuis un client externe pour confirmer que le proxy et les codecs sont corrects.

  8. Sauvegarder la configuration

    La sauvegarde de Jellyfin se résume à deux éléments : le dossier ./config (base de données, plugins, préférences) et vos fichiers media. Automatisez un tar -czf jellyfin-config-$(date +%Y%m%d).tar.gz ./config quotidien et synchronisez vers un stockage distant. Pour Plex, le dossier Plex Media Server/ contient l'équivalent. Testez la restauration sur un environnement de test avant d'en avoir besoin.

Jellyfin 12 : ce qui change et comment migrer

Jellyfin 12.0 est sorti le 7 septembre 2026 ; la branche en est à 12.4, publiée en octobre 2026. Le passage de 10.11.x à 12 tient à un changement de numérotation : le projet a abandonné le préfixe « 10. », et 12.0 est la version qui se serait appelée 10.12.0. Elle n'en introduit pas moins des changements incompatibles.

Suppression des préfixes d'API hérités. Les routes /emby/ et /mediabrowser/ ont été définitivement retirées : les anciens clients tiers et les scripts qui s'appuyaient dessus cessent de fonctionner tant qu'ils n'appellent pas les routes à la racine /. L'ancienne méthode d'autorisation (« legacy authorization ») est en outre désactivée par défaut, y compris sur les installations migrées. Vérifiez chaque application cliente avant de migrer.

Migration de base de données irréversible. Jellyfin 12 reste sur SQLite mais restructure sa base : playlists et collections deviennent relationnelles (nouvelle table LinkedChildren) et des routines de nettoyage s'exécutent automatiquement au premier démarrage. Ces changements empêchent tout retour arrière sans restauration complète. Sauvegardez intégralement le dossier config/ — notamment data/jellyfin.db — avant de lancer la mise à jour du conteneur. Revenir en arrière implique de restaurer cette sauvegarde avec l'image Docker de la version précédente. Après la mise à jour, lancez un scan complet des bibliothèques : il est requis pour rétablir les versions alternatives des médias.

Incompatibilité des plugins 10.11. Le serveur cible désormais .NET 10 : les plugins doivent être recompilés pour Jellyfin 12. Les notes de version recommandent de retirer les plugins installés depuis un dépôt (hors plugins intégrés) avant de migrer, puis de les réinstaller depuis le dépôt stable officiel une fois leurs versions compatibles publiées.

Migration directe supportée. Les mises à jour depuis 10.10.7 et 10.11.x vers 12 sont supportées — pas besoin de réinstaller depuis zéro ni de passer par une version intermédiaire ; en deçà de 10.10.7, passez d'abord par 10.10.7. Tirez ensuite la nouvelle image Docker, après sauvegarde.

Faites défiler le tableau

CritèreJellyfinPlex
Licence / coûtLibre (GPL), 100 % gratuitFreemium, Plex Pass payant pour les fonctionnalités clés
Transcodage matérielInclus et gratuitRéservé aux abonnés Plex Pass
Accès distantDirect via votre reverse proxyDirect ou par le relais Plex (débit limité) ; lecture à distance des vidéos sous Plex Pass ou Remote Watch Pass
ConfidentialitéAucune télémétrie, tout reste chez vousCompte Plex et métadonnées centralisés
Qualité des clients (TV, mobile)Bonne, en progression constanteTrès soignée et stable
Support DLNAVia le plugin DLNA officiel (réseau host requis sous Docker)Présent, moins configurable
Plugins et extensionsCatalogue communautaire riche, évolutifPlus fermé, fonctionnalités intégrées
Applications mobilesGratuites (Android, iOS)Gratuites, Plex Pass requis pour les téléchargements
CommunautéTrès active, open source, forums et MatrixActive, forum officiel, moins ouvert
ChromecastSupporté via l'app mobileSupporté nativement
Configuration initialeQuelques réglages manuelsAssistant très guidé

Dépannage : les erreurs les plus fréquentes

Transcodage qui échoue silencieusement. Le lecteur affiche une erreur générique ou la vidéo ne démarre pas. Première vérification : dans Tableau de bord → Journaux, filtrez sur Transcod. Si le journal signale un FFmpeg introuvable ou un refus de permission sur le dossier de transcodage, le conteneur ne trouve pas le binaire ou ne peut pas écrire dans ce dossier (/cache/transcodes par défaut). Vérifiez que le volume est bien monté en écriture et que l'image Docker utilisée est bien jellyfin/jellyfin (pas un fork non maintenu).

Échec de l'accélération matérielle. Sur un VPS sans GPU dédié, l'accélération matérielle (VAAPI, QSV, NVENC) n'est pas disponible : le transcodage échoue si vous avez activé une option matérielle que le serveur ne peut pas honorer. Dans Tableau de bord → Lecture → Transcodage, désactivez l'accélération matérielle pour revenir au transcodage logiciel, ou forcez le Direct Play. Sur une machine équipée d'un GPU, le conteneur doit y accéder : montez le périphérique de rendu (devices: - /dev/dri/renderD128:/dev/dri/renderD128, avec group_add sur le groupe render de l'hôte) pour VAAPI ou QSV, ou installez le pilote NVIDIA et le NVIDIA Container Toolkit sur l'hôte pour NVENC.

Accès distant bloqué derrière un reverse proxy (préfixe de chemin). Si vous servez Jellyfin sous un sous-chemin comme mondomaine.com/media/, les ressources statiques et l'API ne se chargent pas correctement. Un sous-domaine dédié (media.mondomaine.com) évite ces écueils ; la documentation signale d'ailleurs que le Base URL casse notamment le plugin DLNA, HDHomeRun, Sonarr et Radarr. Si le sous-chemin est incontournable, renseignez le champ Base URL dans Tableau de bord → Réseau (stocké dans network.xml, redémarrage requis) et assurez-vous que votre reverse proxy transmet le chemin complet sans le réécrire.

Synchronisation des métadonnées qui boucle. Le scan de bibliothèque tourne indéfiniment sans progresser. Causes courantes : permissions insuffisantes sur le dossier media (Jellyfin doit pouvoir lire les fichiers), nommage des fichiers non conforme au standard Titre (Année).mkv, ou problème de connectivité vers les agents de métadonnées distants. Consultez les journaux de tâche planifiée dans Tableau de bord → Tâches planifiées pour identifier quelle étape bloque.

Pour éviter de saturer le CPU de votre VPS, standardisez votre bibliothèque en H.264/AAC dans un conteneur MP4 ou MKV. Un simple script ffmpeg de remux (sans ré-encodage, option -c copy) reconditionne vos fichiers en quelques secondes et soulage le serveur durablement, notamment sur un VPS sans GPU. Cette opération ne touche pas la qualité vidéo : elle change uniquement le contenant, pas le contenu.

Déployez votre media-server en quelques minutes

Lancez un VPS Cloud ServOrbit avec un template Docker préconfiguré et faites tourner Jellyfin ou Plex avec reverse proxy et SSL automatique, sans quitter votre tableau de bord.