Stack média complète : Jellyfin + arr + qBittorrent

Dernière mise à jour le

#jellyfin#radarr#sonarr#bazarr#prowlarr#qbittorrent#jellyseerr#media#docker#self-hosting

🎯 Vue d’ensemble

La stack média repose sur un principe simple : automatiser tout le pipeline, de la recherche d’un film à son apparition dans l’interface de streaming, sans intervention manuelle.

Jellyseerr        ← interface de demande (toi ou tes proches)
    │
Radarr/Sonarr     ← gestion films / séries (téléchargement auto)
    │
Prowlarr          ← proxy d'indexers (sources torrent)
    │
qBittorrent       ← client de téléchargement
    │
Bazarr            ← sous-titres automatiques
    │
Jellyfin          ← streaming (films, séries, musique)
    │
Suggestarr        ← suggestions personnalisées

→ Pour la musique et les mangas, voir Extension de la stack média.


🎬 Jellyfin — le serveur de streaming

Jellyfin est l’équivalent open-source et 100% gratuit de Plex. Il indexe tes dossiers média, génère les métadonnées (affiches, résumés, acteurs via TheMovieDB), et expose une interface web + des clients natifs pour TV, mobile, navigateur.

Installation Docker

services:
  jellyfin:
    image: lscr.io/linuxserver/jellyfin:latest
    container_name: jellyfin
    restart: unless-stopped
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Brussels
    volumes:
      - ./config:/config
      - /chemin/vers/films:/data/films
      - /chemin/vers/series:/data/series
      - /chemin/vers/musique:/data/music
    ports:
      - "8096:8096"

Points importants

  • Transcoding hardware : sur Raspberry Pi, active le transcoding V4L2 dans les paramètres (Dashboard → Lecture) pour utiliser le GPU intégré et ne pas saturer le CPU.
  • Bibliothèques : crée des bibliothèques séparées Films / Séries TV / Musique avec les bons types — Jellyfin utilise le type pour récupérer les bonnes métadonnées.
  • Naming convention : les *arr rangent les fichiers dans le format attendu par Jellyfin automatiquement — ne pas renommer à la main.

🔍 Prowlarr — centralisateur d’indexers

Prowlarr est le point central qui agrège tous tes indexers torrent (ou Usenet) et les expose aux *arr. Tu gères tes indexers en un seul endroit plutôt que de les configurer dans chaque service.

services:
  prowlarr:
    image: lscr.io/linuxserver/prowlarr:latest
    container_name: prowlarr
    restart: unless-stopped
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Brussels
    volumes:
      - ./config:/config
    ports:
      - "9696:9696"

Configuration

  1. Ajoute tes indexers (trackers publics ou privés) dans Indexers
  2. Dans les paramètres de chaque *arr, configure Prowlarr comme application — il synchronisera les indexers automatiquement

🎥 Radarr — gestion automatique des films

Radarr surveille une liste de films suivis, cherche via Prowlarr, télécharge via qBittorrent, et range les fichiers dans le bon dossier au bon format.

services:
  radarr:
    image: lscr.io/linuxserver/radarr:latest
    container_name: radarr
    restart: unless-stopped
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Brussels
    volumes:
      - ./config:/config
      - /chemin/vers/films:/movies
      - /chemin/vers/downloads:/downloads
    ports:
      - "7878:7878"

À configurer après l’installation

  • Profils de qualité : définis les qualités acceptables (1080p, 4K, etc.) et leurs limites de taille
  • Gestion du chemin : Root Folder → le dossier films final, Download Clients → qBittorrent
  • Indexers : configurer Prowlarr comme source (une seule fois via l’intégration Prowlarr)
  • Import mode : “Hardlink” si les downloads et la bibliothèque sont sur le même filesystem — évite la copie et économise l’espace disque

📺 Sonarr — gestion automatique des séries

Même principe que Radarr mais pour les séries TV : suivi par saison/épisode, téléchargement automatique dès la sortie.

services:
  sonarr:
    image: lscr.io/linuxserver/sonarr:latest
    container_name: sonarr
    restart: unless-stopped
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Brussels
    volumes:
      - ./config:/config
      - /chemin/vers/series:/tv
      - /chemin/vers/downloads:/downloads
    ports:
      - "8989:8989"

Sonarr surveille les épisodes manquants et les nouvelles saisons de chaque série ajoutée — une fois une série dans la liste, tu n’as plus à t’en occuper.


🌐 qBittorrent — client de téléchargement

Le client BitTorrent que Radarr/Sonarr/Lidarr pilotent via son API web.

services:
  qbittorrent:
    image: lscr.io/linuxserver/qbittorrent:latest
    container_name: qbittorrent
    restart: unless-stopped
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Brussels
      - WEBUI_PORT=8080
    volumes:
      - ./config:/config
      - /chemin/vers/downloads:/downloads
    ports:
      - "8080:8080"
      - "6881:6881"
      - "6881:6881/udp"
    healthcheck:
      test: ["CMD", "curl", "-f", "http://127.0.0.1:8080"]
      interval: 30s

Configuration dans les *arr

Dans Radarr/Sonarr : Settings → Download Clients → Add → qBittorrent. Configure une catégorie différente par *arr (radarr, sonarr, lidarr) — ça permet un rangement propre.


🔤 Bazarr — sous-titres automatiques

Bazarr se connecte à Sonarr et Radarr, détecte les films/épisodes sans sous-titres, et les télécharge automatiquement depuis plusieurs sources (OpenSubtitles, Subscene, etc.).

services:
  bazarr:
    image: lscr.io/linuxserver/bazarr:latest
    container_name: bazarr
    restart: unless-stopped
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Brussels
    volumes:
      - ./config:/config
      - /chemin/vers/films:/movies
      - /chemin/vers/series:/tv
    ports:
      - "6767:6767"

Configure ensuite les connexions Sonarr/Radarr dans Settings → Sonarr et Settings → Radarr, et active les langues souhaitées (français, anglais…).


🙋 Jellyseerr — interface de demandes

Jellyseerr permet à des proches (ou à toi-même) de demander des films et séries via une interface simple, sans accès à l’admin Radarr/Sonarr. Chaque demande est automatiquement transmise au bon *arr.

services:
  jellyseerr:
    image: fallenbagel/jellyseerr:latest
    container_name: jellyseerr
    restart: unless-stopped
    environment:
      - TZ=Europe/Brussels
    volumes:
      - ./config:/app/config
    ports:
      - "5055:5055"

À configurer : connexions Jellyfin + Radarr + Sonarr dans l’interface (Settings → Services). Les utilisateurs s’authentifient avec leur compte Jellyfin.


💡 Suggestarr — suggestions automatiques

Suggestarr analyse la bibliothèque Jellyfin et suggère automatiquement des films/séries similaires à ce que tu as déjà, en les ajoutant dans Jellyseerr. C’est un “Discover Weekly” pour le cinéma/séries.

services:
  suggestarr:
    image: ciuse99/suggestarr:latest
    container_name: suggestarr
    restart: unless-stopped
    environment:
      - TZ=Europe/Brussels
      - JELLYSEERR_URL=http://jellyseerr:5055
      - JELLYSEERR_API_KEY=<ta_clé>
      - JELLYFIN_URL=http://jellyfin:8096
      - JELLYFIN_API_KEY=<ta_clé>

🗂️ Organisation des dossiers

Structure recommandée pour que les hardlinks fonctionnent (downloads et bibliothèque sur la même partition) :

/media/
├── downloads/          ← qBittorrent écrit ici
│   ├── radarr/
│   ├── sonarr/
│   └── lidarr/
├── films/              ← Radarr range ici (hardlink depuis downloads)
├── series/             ← Sonarr range ici
└── musique/            ← Lidarr range ici

Hardlink = le fichier n’est pas copié, juste référencé depuis deux endroits. Zéro espace disque supplémentaire, import instantané.


🔒 Sécurité et accès

  • Les interfaces *arr et qBittorrent ne sont jamais exposées publiquement — accessibles uniquement en LAN ou via Tailscale
  • Seul Jellyfin (et optionnellement Jellyseerr) peuvent être exposés via le reverse proxy (Nginx Proxy Manager) avec SSL
  • Active l’authentification dans chaque service

🔗 Voir aussi