Monter un media center complet avec Jellyfin et la stack *arr

Monter un media center complet avec Jellyfin et la stack *arr

·5 min de lecture·Mis à jour le 17 février 2026

Pourquoi un media center auto-hébergé

Multiplier les abonnements pour regarder deux séries par mois finit par coûter cher, et chaque film regardé, chaque pause, chaque recherche est enregistré et monétisé. L'auto-hébergement rend le contrôle : pas d'abonnement qui augmente, pas de contenu qui disparaît du catalogue, et un partage familial sans limite de streams simultanés.

La stack décrite ici tourne sur un TerraMaster F4-424 sous Debian 13, de la recherche jusqu'au visionnage sur n'importe quel écran de la maison.

Jellyfin : le cœur du système

Jellyfin est un fork open-source d'Emby, sans feature derrière un paywall. Il gère films, séries, musique, photos, et la TV en direct avec un tuner.

Contrairement aux autres services Docker du NAS, Jellyfin tourne en host network mode : DLNA/SSDP, le protocole de découverte automatique sur le réseau, a besoin du multicast, que le bridge Docker gère mal. Sans ça, un client DLNA sur le LAN ne voit tout simplement pas le serveur.

# docker-compose.yml - Jellyfin
services:
  jellyfin:
    image: jellyfin/jellyfin:latest
    container_name: jellyfin
    network_mode: host
    environment:
      - JELLYFIN_PublishedServerUrl=https://jellyfin.home.lan
    volumes:
      - /mnt/data/apps/jellyfin/config:/config
      - /mnt/data/apps/jellyfin/cache:/cache
      - /mnt/data/media/movies:/data/movies
      - /mnt/data/media/tv:/data/tv
      - /mnt/data/media/music:/data/music
    restart: unless-stopped

L'interface web écoute sur le port 8096. Jellyfin supporte le hardware transcoding via Intel Quick Sync (QSV) grâce au GPU intégré du N95 : transcodage 4K HEVC en temps réel sans faire chauffer le CPU. Côté authentification, Jellyfin se connecte à Authelia en OIDC/SSO, avec des identifiants centralisés pour chaque membre de la famille.

La stack *arr

L'écosystème *arr automatise recherche, téléchargement et organisation. Chaque application a un rôle précis :

  • Prowlarr (port 9696) centralise les indexeurs. Au lieu de configurer les mêmes sources dans Sonarr et Radarr, on les déclare une fois et Prowlarr synchronise automatiquement.
  • Sonarr (8989) pour les séries et Radarr (7878) pour les films. On ajoute un titre, on définit un profil de qualité, et l'application surveille les flux RSS, récupère les nouveaux épisodes ou les meilleures versions disponibles, et renomme le tout selon une convention que Jellyfin comprend.
  • Bazarr (6767) surveille les bibliothèques Sonarr/Radarr et télécharge les sous-titres manquants, en choisissant le meilleur match selon la version du fichier.
  • qBittorrent est le client de téléchargement utilisé par Sonarr/Radarr : interface web sur le 8080, protocole BitTorrent sur le 6881.
  • FlareSolverr (8191) agit comme proxy pour résoudre les challenges CloudFlare, indispensable pour certains indexeurs.
  • Jellyseerr (5055) est la couche utilisateur : on cherche une série, on clique « Demander », et Sonarr/Radarr s'occupent du reste. Connecté à Authelia en OIDC.

Architecture réseau et stockage

Tous les services *arr tournent sur un réseau Docker isolé arr_net. Seuls Jellyfin (host network) et Jellyseerr (via reverse proxy) sont accessibles du LAN.

# docker-compose.yml - Sonarr + Radarr
services:
  sonarr:
    image: lscr.io/linuxserver/sonarr:latest
    container_name: sonarr
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Paris
    volumes:
      - /mnt/data/apps/arr/sonarr:/config
      - /mnt/data/media/tv:/tv
      - /mnt/data/downloads:/downloads
    networks:
      - arr_net
    restart: unless-stopped

  radarr:
    image: lscr.io/linuxserver/radarr:latest
    container_name: radarr
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Paris
    volumes:
      - /mnt/data/apps/arr/radarr:/config
      - /mnt/data/media/movies:/movies
      - /mnt/data/downloads:/downloads
    networks:
      - arr_net
    restart: unless-stopped

networks:
  arr_net:
    name: arr_net

Les images LinuxServer utilisent PUID/PGID (ici 1000:1000) pour que les permissions soient correctes sur les fichiers créés.

L'arborescence, point critique

/mnt/data/
├── apps/arr/
│   ├── sonarr/          # Config Sonarr
│   ├── radarr/          # Config Radarr
│   ├── prowlarr/        # Config Prowlarr
│   ├── bazarr/          # Config Bazarr
│   ├── qbittorrent/     # Config qBittorrent
│   └── jellyseerr/      # Config Jellyseerr
├── downloads/
│   ├── complete/        # Téléchargements finis
│   └── incomplete/      # En cours
└── media/
    ├── movies/          # Films organisés par Radarr
    └── tv/              # Séries organisées par Sonarr

Le point essentiel : downloads et media doivent être sur le même filesystem. Sonarr et Radarr peuvent alors utiliser des hardlinks au lieu de copier — instantané, et sans duplication d'espace disque.

Le flux complet

  1. Jellyseerr : l'utilisateur cherche et demande un film
  2. Radarr : reçoit la requête, interroge les indexeurs via Prowlarr
  3. Prowlarr : envoie la recherche aux sources
  4. qBittorrent : télécharge dans /mnt/data/downloads/complete
  5. Radarr : détecte le fichier terminé, le renomme, crée un hardlink dans /mnt/data/media/movies
  6. Bazarr : détecte le nouveau film, télécharge les sous-titres
  7. Jellyfin : scanne la bibliothèque, le film est disponible

Du point de vue de l'utilisateur : un bouton cliqué, et le film apparaît quelques minutes plus tard. Aucune interface technique visible.

Bilan

La configuration initiale prend une bonne journée, mais l'ensemble tourne ensuite sans intervention, et Ansible gère le redéploiement. La stack *arr + Jellyfin atteint un niveau de service comparable au streaming commercial, sans abonnement et avec un contrôle total. Le N95 gère le transcoding hardware sans effort, et l'isolation réseau arr_net garde l'ensemble propre.


Série NAS Debian from scratch — Cet article fait partie d'une série complète sur la construction d'un NAS Debian.

Précédent : Accès distant sécurisé à son NAS avec Tailscale | Suivant : Gérer ses photos avec Immich en auto-hébergé

PartagerLinkedInXBluesky

Articles similaires