Offre Durée limitée : -10% sur tout le site* avec le code WELCOME10

Installer Jellyfin sur un VPS Linux avec Docker : serveur multimédia auto-hébergé

Mis à jour le 29 octobre 2026 9 min de lecture 10 sections

Pourquoi installer Jellyfin sur un VPS Linux

Jellyfin est un serveur multimédia open source qui permet de diffuser vos films, séries, musiques et photos depuis votre propre serveur vers n'importe quel appareil (navigateur, application mobile, Smart TV, Chromecast). Contrairement aux solutions propriétaires, Jellyfin est entièrement gratuit, sans abonnement, sans compte obligatoire et sans télémétrie. Le code source est publié sous licence GPL et le projet est maintenu par une communauté active.

Installer Jellyfin sur un VPS Linux plutôt que sur un NAS domestique offre plusieurs avantages pour l'administrateur : une bande passante montante stable (les connexions fibre résidentielles plafonnent souvent à 300-700 Mbit/s en upload), un accès depuis n'importe où sans ouvrir de port sur votre box, et la possibilité de centraliser la médiathèque sur un serveur que vous administrez déjà.

La version stable la plus récente est Jellyfin 12.4, publiée le 26 octobre 2026. La branche 12.x, inaugurée par Jellyfin 12.0 le 7 septembre 2026, a apporté la migration vers FFmpeg 8.1, la prise en charge des versions alternatives d'épisodes (coupes différentes, résolutions multiples), un moteur de recommandation extensible par plugin, et une interface modernisée par défaut. Ce guide couvre l'installation via Docker Compose sur un VPS Linux, la configuration d'un reverse proxy HTTPS avec Nginx, l'activation du transcodage matériel VAAPI et la mise en place de sauvegardes.

Prérequis

  • Un VPS Linux sous Ubuntu 22.04/24.04 LTS ou Debian 12 avec au moins 2 Go de RAM et 2 vCPU ;
  • Un accès SSH sécurisé configuré sur le VPS ;
  • Docker et Docker Compose installés (Docker Engine 24+ recommandé) ;
  • Un nom de domaine pointant vers l'adresse IP du VPS (enregistrement DNS de type A) ;
  • De l'espace disque suffisant pour votre médiathèque (un film en 1080p occupe entre 4 et 15 Go).

Si Docker n'est pas encore installé sur votre VPS, suivez notre guide installer Docker sur un VPS Linux avant de continuer.

Déployer Jellyfin avec Docker Compose

L'image Docker officielle de Jellyfin est jellyfin/jellyfin, publiée sur Docker Hub et sur le GitHub Container Registry (ghcr.io/jellyfin/jellyfin). Le tag latest suit la dernière version stable.

Créez un répertoire de travail et le fichier Docker Compose :

mkdir -p /opt/jellyfin
nano /opt/jellyfin/docker-compose.yml

Contenu du fichier docker-compose.yml :

services:
  jellyfin:
    image: jellyfin/jellyfin:latest
    container_name: jellyfin
    restart: unless-stopped
    environment:
      - JELLYFIN_PublishedServerUrl=https://media.example.com
    volumes:
      - ./config:/config
      - ./cache:/cache
      - /chemin/vers/films:/media/films:ro
      - /chemin/vers/series:/media/series:ro
      - /chemin/vers/musique:/media/musique:ro
    ports:
      - "8096:8096"
    networks:
      - jellyfin-net

networks:
  jellyfin-net:

Remplacez /chemin/vers/films, /chemin/vers/series et /chemin/vers/musique par les répertoires réels de votre médiathèque sur le VPS. Le suffixe :ro monte les volumes en lecture seule : Jellyfin n'a pas besoin d'écrire dans vos fichiers multimédia.

Lancez le conteneur :

cd /opt/jellyfin
docker compose up -d

Vérifiez que le conteneur tourne :

docker compose logs -f jellyfin

L'interface web de Jellyfin est accessible sur http://IP_DU_VPS:8096. Ne laissez pas ce port ouvert vers Internet : la section suivante configure un reverse proxy HTTPS.

Configuration initiale de Jellyfin

Au premier accès, Jellyfin affiche un assistant de configuration. Les étapes :

  1. Choisissez la langue de l'interface (le français est disponible nativement) ;
  2. Créez le compte administrateur avec un mot de passe fort ;
  3. Ajoutez vos bibliothèques multimédia : sélectionnez le type de contenu (Films, Séries TV, Musique, Photos) et pointez vers les répertoires montés (/media/films, /media/series, /media/musique) ;
  4. Configurez les sources de métadonnées (The Movie Database pour les films et séries, MusicBrainz pour la musique) ;
  5. Désactivez l'accès distant dans l'assistant si vous prévoyez d'utiliser un reverse proxy (vous le réactiverez après).

Jellyfin lance automatiquement l'analyse de vos bibliothèques. Sur un VPS avec un stockage NVMe, une médiathèque de 500 fichiers se scanne en quelques minutes. Les jaquettes, résumés, dates de sortie et sous-titres sont récupérés depuis les fournisseurs de métadonnées configurés.

Reverse proxy HTTPS avec Nginx

Exposer Jellyfin directement sur Internet sans HTTPS expose les identifiants de connexion en clair sur le réseau. La bonne pratique est de placer un reverse proxy Nginx devant le conteneur et de gérer le certificat TLS avec Certbot (Let's Encrypt).

Installez Nginx et Certbot sur le VPS :

sudo apt install -y nginx certbot python3-certbot-nginx

Créez le fichier de configuration Nginx pour Jellyfin :

sudo nano /etc/nginx/sites-available/jellyfin

Contenu :

server {
    listen 80;
    server_name media.example.com;

    location / {
        proxy_pass http://127.0.0.1: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;
    }

    location /socket {
        proxy_pass http://127.0.0.1:8096;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
    }

    client_max_body_size 20M;
}

Le bloc /socket gère les WebSockets utilisés par Jellyfin pour les mises à jour en temps réel de l'interface. Sans cette directive, les notifications de progression de lecture ne fonctionnent pas.

Activez le site et générez le certificat TLS :

sudo ln -s /etc/nginx/sites-available/jellyfin /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
sudo certbot --nginx -d media.example.com

Certbot modifie automatiquement le fichier Nginx pour activer HTTPS et configure le renouvellement automatique du certificat. Votre instance Jellyfin est désormais accessible sur https://media.example.com.

Restreignez le port 8096 pour qu'il ne soit accessible que depuis le VPS lui-même. Dans le fichier docker-compose.yml, remplacez la ligne des ports :

    ports:
      - "127.0.0.1:8096:8096"

Redémarrez le conteneur pour appliquer la modification :

cd /opt/jellyfin
docker compose down
docker compose up -d

Vérifiez avec UFW que seuls les ports SSH, 80 et 443 sont ouverts :

sudo ufw status

Transcodage matériel avec VAAPI

Le transcodage est la conversion en temps réel d'un fichier vidéo dans un format ou une résolution compatible avec l'appareil du lecteur. Sans accélération matérielle, le CPU du VPS effectue tout le travail, ce qui consomme énormément de ressources. Sur un VPS équipé d'un GPU intégré Intel (iGPU), VAAPI (Video Acceleration API) délègue le transcodage au matériel et réduit la charge CPU de 80 à 95 %.

Sur le VPS hôte, installez les pilotes VAAPI et vérifiez la disponibilité :

sudo apt install -y intel-media-va-driver-non-free vainfo
vainfo

La commande vainfo doit lister les profils de décodage et d'encodage disponibles (H.264, H.265/HEVC, VP9). Si vainfo affiche une erreur ou aucun profil, le VPS n'a pas d'iGPU accessible (cas des VPS purement virtualisés sans passthrough GPU).

Pour activer VAAPI dans Docker, modifiez le fichier docker-compose.yml pour monter le device de rendu :

services:
  jellyfin:
    image: jellyfin/jellyfin:latest
    container_name: jellyfin
    restart: unless-stopped
    environment:
      - JELLYFIN_PublishedServerUrl=https://media.example.com
    volumes:
      - ./config:/config
      - ./cache:/cache
      - /chemin/vers/films:/media/films:ro
      - /chemin/vers/series:/media/series:ro
      - /chemin/vers/musique:/media/musique:ro
    ports:
      - "127.0.0.1:8096:8096"
    devices:
      - /dev/dri/renderD128:/dev/dri/renderD128
    networks:
      - jellyfin-net

networks:
  jellyfin-net:

Ajoutez l'utilisateur du conteneur au groupe render du système hôte. Identifiez le GID du groupe render :

getent group render | cut -d: -f3

Si le GID est 109 (valeur courante sur Debian/Ubuntu), ajoutez-le dans la section du service Jellyfin du fichier Compose :

    group_add:
      - "109"

Redémarrez le conteneur, puis activez l'accélération dans l'interface Jellyfin : Tableau de bord > Lecture > Transcodage, sélectionnez Video Acceleration API (VAAPI) et définissez le périphérique VA-API sur /dev/dri/renderD128.

Sur un VPS sans GPU dédié ou sans passthrough, le transcodage logiciel reste la seule option. Dans ce cas, prévoyez au moins 4 vCPU pour transcoder un flux 1080p en temps réel. L'alternative est de convertir vos fichiers à l'avance dans un format largement compatible (H.264 avec conteneur MP4 et codec audio AAC) pour éviter le transcodage en lecture.

Sauvegarder la configuration et la médiathèque

La configuration de Jellyfin (comptes utilisateurs, préférences, progression de lecture, métadonnées téléchargées) est stockée dans le volume ./config. C'est le répertoire critique à sauvegarder. La médiathèque elle-même (les fichiers vidéo et audio) doit aussi être protégée, mais son volume rend les sauvegardes plus coûteuses en espace et en temps de transfert.

Sauvegarde de la configuration

Arrêtez le conteneur avant de sauvegarder pour éviter les fichiers corrompus (la base de données SQLite de Jellyfin peut être en cours d'écriture) :

cd /opt/jellyfin
docker compose stop
tar czf /root/backups/jellyfin-config-$(date +%F).tar.gz ./config
docker compose start

Automatisez cette sauvegarde avec un cron quotidien. La configuration compressée pèse généralement entre 50 et 500 Mo selon le nombre de bibliothèques et la quantité de métadonnées.

Sauvegarde distante avec rsync

Transférez les sauvegardes vers un serveur distant ou un espace de stockage externe avec rsync :

rsync -avz /root/backups/jellyfin-config-*.tar.gz user@backup-server:/backups/jellyfin/

Pour la médiathèque, un rsync incrémental (qui ne transfère que les fichiers modifiés) est plus efficace qu'une archive complète :

rsync -avz --delete /chemin/vers/films/ user@backup-server:/backups/media/films/

Restauration

Pour restaurer une instance Jellyfin sur un nouveau VPS, redéployez le conteneur avec le même fichier docker-compose.yml, puis extrayez la sauvegarde dans le répertoire ./config :

tar xzf jellyfin-config-2026-10-29.tar.gz -C /opt/jellyfin/
docker compose up -d

Jellyfin retrouve ses utilisateurs, ses bibliothèques et l'historique de lecture.

Auto-hébergement vs streaming propriétaire

Critère Jellyfin (auto-hébergé) Streaming propriétaire
CoûtGratuit (seul le VPS est payant)Abonnement mensuel par plateforme
CatalogueVotre propre médiathèque, sans restrictionCatalogue imposé, titres qui disparaissent
Vie privéeAucune télémétrie, aucun compte tiers requisCollecte de données de visionnage
Transcodage matérielGratuit (VAAPI, QSV, NVENC)Parfois payant ou limité
Accès hors ligneTéléchargement direct de vos fichiersLimité aux applications mobiles
Nombre d'utilisateursIllimité (limité par les ressources du VPS)Plans par nombre d'écrans
DisponibilitéDépend de votre infrastructure serveurGérée par le fournisseur
PersonnalisationPlugins, thèmes, métadonnées personnaliséesInterface imposée

Mettre à jour Jellyfin

L'un des avantages de Docker est la simplicité des mises à jour. Pour passer à la dernière version de Jellyfin :

cd /opt/jellyfin
docker compose pull
docker compose down
docker compose up -d

Docker télécharge la nouvelle image, supprime l'ancien conteneur et en crée un nouveau avec la configuration et les données préservées dans les volumes. La mise à jour vers Jellyfin 12.x depuis une version 10.x nécessite une migration de la base de données : Jellyfin l'effectue automatiquement au premier démarrage, mais sauvegardez la configuration avant par précaution.

Conclusion

Jellyfin transforme un VPS Linux en serveur de streaming personnel, sans abonnement ni télémétrie. Docker Compose simplifie le déploiement et les mises à jour, le reverse proxy Nginx sécurise l'accès via HTTPS, et VAAPI réduit la charge CPU lors du transcodage. Avec des sauvegardes régulières de la configuration, votre médiathèque est protégée et portable d'un serveur à l'autre. Pour aller plus loin dans la gestion de vos conteneurs, consultez notre guide Portainer, Dockge et Cosmos pour gérer Docker sur un VPS.

FAQ

Combien de RAM faut-il pour Jellyfin sur un VPS ?

Jellyfin consomme environ 200 à 500 Mo de RAM au repos avec une médiathèque de taille moyenne. Le transcodage logiciel d'un flux 1080p ajoute 1 à 2 Go selon le codec. Prévoyez 2 Go de RAM minimum pour un usage sans transcodage, et 4 Go si vous transcodez régulièrement.

Peut-on utiliser Jellyfin sans transcodage ?

Oui. Si vos appareils de lecture supportent nativement le format de vos fichiers (H.264 en MP4 avec audio AAC, par exemple), Jellyfin diffuse le fichier tel quel sans transcodage. C'est le mode le plus économe en ressources. Convertissez vos fichiers à l'avance avec FFmpeg si nécessaire.

Jellyfin est-il vraiment gratuit ?

Oui. Jellyfin est un logiciel libre sous licence GPL. Il n'y a aucun abonnement, aucune fonctionnalité payante, aucun compte obligatoire et aucune télémétrie. Le transcodage matériel est inclus gratuitement, contrairement à certaines solutions propriétaires qui réservent cette fonctionnalité à un abonnement payant.

Comment accéder à Jellyfin depuis un smartphone ou une Smart TV ?

Jellyfin propose des applications officielles pour Android, iOS, Android TV, Amazon Fire TV, Roku et LG webOS. Un client web est aussi accessible depuis n'importe quel navigateur. Configurez un reverse proxy HTTPS pour sécuriser l'accès distant depuis ces appareils.

Le transcodage VAAPI fonctionne-t-il sur tous les VPS ?

Non. VAAPI nécessite un GPU intégré Intel (iGPU) accessible depuis le VPS, ce qui implique un passthrough GPU configuré par l'hébergeur. Sur un VPS purement virtualisé sans accès au matériel graphique, le transcodage reste logiciel (CPU). Vérifiez avec la commande vainfo si un périphérique de rendu est disponible.

Comment transférer des fichiers multimédia vers le VPS ?

Utilisez rsync via SSH pour transférer vos fichiers depuis votre ordinateur local : rsync -avz --progress /chemin/local/films/ user@IP_VPS:/chemin/vers/films/. Pour les gros transferts, rsync reprend automatiquement en cas d'interruption. Vous pouvez aussi monter un stockage distant via SSHFS ou utiliser un client SFTP graphique comme FileZilla.