Vous suivez notre guide sur la création du Media Server Docker ultime ? Bienvenue dans la phase d’intelligence.
Dans la Partie 1, nous avons construit un bunker : un client de téléchargement (qBittorrent) isolé du monde par un VPN (Gluetun) et piloté par une interface moderne (Qui). C’est robuste, mais c’est bête. Pour l’instant, vous devez ajouter vos torrents manuellement.
Aujourd’hui, nous installons le « Cerveau » de votre Media Server. Nous allons automatiser la recherche, standardiser le nommage des fichiers et, surtout, garantir que nous ne téléchargeons que de la qualité (fini les CAMs russes et les fakes 4K).
Au programme :
- Prowlarr : La tour de contrôle des indexers (la résilience).
- Sonarr & Radarr : Les chefs d’orchestre, connectés via le proxy sécurisé de Qui.
- Recyclarr : La gestion des qualités des releases à télécharger.
- qbit_manage : Le majordome de qBittorrent (Gestion des tags, catégories et nettoyage).
1. L’extension du docker-compose.yml
On reprend notre fichier de la Partie 1 et on y ajoute nos gestionnaires.
⚠️ Notez bien le mapping des volumes
${DATA_DIR}:/data(ou/data:/data). Il doit être identique à celui de qBittorrent pour que les Hardlinks fonctionnent. Si Sonarr voit/media/tvet qBittorrent voit/data/torrents, le hardlink échouera, provoquant une copie lente et doublant l’espace disque utilisé.
Ajoutez ces services à votre docker-compose.yml :
services:
# ... (gluetun, qbittorrent, qui sont déjà là) ...
prowlarr:
image: lscr.io/linuxserver/prowlarr:latest
container_name: prowlarr
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TZ}
volumes:
- ${CONFIG_DIR}/prowlarr:/config
ports:
- 9696:9696
restart: always
sonarr:
image: lscr.io/linuxserver/sonarr:latest
container_name: sonarr
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TZ}
volumes:
- ${CONFIG_DIR}/sonarr:/config
- ${DATA_DIR}:/data
ports:
- 8989:8989
restart: always
radarr:
image: lscr.io/linuxserver/radarr:latest
container_name: radarr
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TZ}
volumes:
- ${CONFIG_DIR}/radarr:/config
- ${DATA_DIR}:/data
ports:
- 7878:7878
restart: always
recyclarr:
image: recyclarr/recyclarr
container_name: recyclarr
user: ${PUID}:${PGID}
volumes:
- ${CONFIG_DIR}/recyclarr:/config
qbit_manage:
image: ghcr.io/stuffbymax/qbit_manage:latest
container_name: qbit_manage
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TZ}
volumes:
- ${CONFIG_DIR}/qbit_manage:/config
- ${DATA_PATH}:/data
restart: always
Lancez la mise à jour de la stack :
docker compose up -d2. Prowlarr : L’Abstraction nécessaire
Oubliez Jackett. Prowlarr s’intègre nativement avec Sonarr et Radarr. Son rôle est simple : vous configurez vos sites de torrents (Indexers) ici, et il les synchronise automatiquement vers les autres applications.
- Accédez à
http://VOTRE_IP:9696. - Créez un compte ou configurez l’auth (recommandé).
- Ajoutez vos indexers (bouton « Add Indexer »).
- Pour commencer simple : Cherchez des trackers publics fiables comme
1337x,TorrentGalaxyou des trackers FR si disponibles.
- Pour commencer simple : Cherchez des trackers publics fiables comme
- Allez dans Settings > Apps.
- Connectez Sonarr et Radarr :
- Prowlarr Server :
http://prowlarr:9696(C’est l’URL que Sonarr utilisera pour interroger Prowlarr. Attention à bien mettre le nom du conteneur !) - Sonarr/Radarr Server :
http://sonarr:8989ouhttp://radarr:7878(L’URL que Prowlarr utilise pour pousser les infos). - API Key : Récupérez-les via votre navigateur dans Settings > General (sur
http://VOTRE_IP:8989ethttp://VOTRE_IP:7878).
- Prowlarr Server :
- Cliquez sur « Sync App Indexers ».

Si un site change d’URL ou ferme, vous le modifiez uniquement dans Prowlarr. Sonarr et Radarr n’ont même pas besoin de savoir que la source a changé. C’est du découplage propre.
3. La Connexion Sécurisée via « Qui » (Le Reverse Proxy)
C’est ici que notre architecture se distingue des tutos de 2020.
Habituellement, on connecte Sonarr à qBittorrent en entrant le login/mdp administrateur de qBittorrent dans la config de Sonarr. C’est une mauvaise pratique de sécurité (couplage fort, credentials root qui traînent).
Nous allons utiliser le Reverse Proxy intégré à Qui.
- Accédez à Qui (
http://VOTRE_IP:7476). - Allez dans Settings > Client Proxy Keys.
- Cliquez sur Create Client API Key.
- Nommez-la « Sonarr » et sélectionnez votre instance qBittorrent.
- Copiez l’URL générée. Elle ressemble à :
http://localhost:7476/proxy/abc123...
Configuration dans Sonarr (et Radarr) :
- Allez dans Settings > Download Clients.
- Cliquez sur le bouton
+pour ajouter un client qBittorrent. - Activez « Show Advanced » (en bas à gauche, à côté du bouton Test) pour voir le champ URL Base.
- Name :
qBit-Qui - Host :
gluetun(Qui tourne dans le réseau de Gluetun, c’est son hostname Docker). - Port :
7476(Le port de Qui, pas celui de qBit !). - URL Base :
/proxy/VOTRE_CLE_API_GENEREE(Collez la partie après le port, ex:/proxy/abc...). - Username/Password : Laissez vide ! C’est Qui qui gère l’auth via la clé dans l’URL.
- Category : Changez
tv-sonarr(par défaut) ensonarr(etradarrpour les films). Qui ne gère pas encore bien les tirets-dans les noms de catégories et risque de bloquer la sauvegarde.
Testez. Ça passe au vert. Vous avez maintenant une connexion découplée et sécurisée. Répétez l’opération pour Radarr.
4. Recyclarr : La gestion des qualités
Configurer les « Custom Formats » à la main dans Sonarr (pour préférer le x265, éviter le HDR si on n’a pas d’écran compatible, bannir les CAMs) est un enfer de clics. Les TRaSH Guides sont la référence mondiale, mais ils sont fastidieux à appliquer manuellement.
Recyclarr automatise ça. On définit ce qu’on veut dans un fichier YAML, et il configure Sonarr/Radarr pour nous via leurs APIs.
Le secret pour bien démarrer : Les Templates.
Ne réinventez pas la roue. Recyclarr fournit des fichiers de configuration « prêts à l’emploi » (Starter Configs) maintenus par la communauté. C’est le moyen le plus simple et le plus sûr de commencer : Voir les templates officiels sur GitHub
Créez le fichier ${CONFIG_DIR}/recyclarr/recyclarr.yml. Voici un exemple basique utilisant les templates pour une configuration 4K optimisée, à adapter avec vos clés API :
sonarr:
fr-bluray-web-2160p-v4:
base_url: http://sonarr:8989
api_key: VOTRE_API_KEY_SONARR
# On importe les templates officiels pour ne pas tout écrire à la main
include:
- template: sonarr-quality-definition-series
- template: sonarr-v4-quality-profile-bluray-web-2160p-french-multi-vo
- template: sonarr-v4-custom-formats-bluray-web-2160p-french-multi-vo
# On peut surcharger ou ajouter des Custom Formats spécifiques ici
custom_formats:
# Exemple : Bannir les releases "bad audio" (ID TRaSH fictif pour l'exemple)
- trash_ids:
- 9b27ab6498ec0f31a3353992e19434ca
assign_scores_to:
- name: FR-MULTi-VO-WEB-2160p # Nom du profil défini dans le template
# Exemple : Donner un gros score au x265
- trash_ids:
- 47435ece6b99a0b477caf360e79ba0bb
assign_scores_to:
- name: FR-MULTi-VO-WEB-2160p
score: 100
Lancez la synchro manuelle pour appliquer la config :
docker compose run --rm recyclarr sync
Allez voir dans Sonarr (Settings > Custom Formats) : vos règles sont importées. Dans vos profils de qualité, les versions « CAM » auront un score négatif ou seront rejetées. Votre stack est devenue intelligente. Maintenant que Sonarr est configuré, n’oubliez pas de faire la même chose avec Radarr.
Voici un exemple avec ma configuration. Ça différera forcément d’un Media Server à l’autre, chacun ayant des besoins différents.

5. qbit_manage : Le Majordome
Sonarr et Radarr savent lancer des téléchargements, mais ils ne savent pas nettoyer derrière eux. Si vous mettez à jour un film, l’ancien fichier reste souvent en seed indéfiniment. C’est là qu’intervient qbit_manage. Il peut :
- Tagguer automatiquement vos torrents en fonction du tracker (utile pour le filtrage).
- Gérer les catégories.
- Supprimer les torrents orphelins (fichiers qui ne sont plus dans qBit).
- Identifier les torrents sans seeders.
Configuration : Au premier lancement, qbit_manage va créer un fichier config.yml vierge dans votre dossier de config. Vous devez l’éditer pour le connecter à votre qBittorrent.
Vous pouvez utiliser le proxy Qui ici aussi pour la connexion ! (url: http://gluetun:7476/proxy/...).
Voici une configuration de base robuste pour commencer :
commands:
dry_run: false
tag_nohardlinks: true
share_limits: true
cat_update: false
tag_update: false
rem_unregistered: false
recheck: false
tag_tracker_error: false
rem_orphaned: false
skip_cleanup: false
skip_qb_version_check: false
qbt:
host: http://gluetun:7476/proxy/VOTRE_CLE_API_GENEREE
user:
pass:
directory:
root_dir: /data/torrents
settings:
force_auto_tmm: false
tracker_error_tag: issue
nohardlinks_tag: noHL
stalled_tag: stalledDL
share_limits_tag: ~share_limit
share_limits_min_seeding_time_tag: MinSeedTimeNotReached
share_limits_min_num_seeds_tag: MinSeedsNotMet
share_limits_last_active_tag: LastActiveLimitNotReached
cat_filter_completed: true
share_limits_filter_completed: true
tag_nohardlinks_filter_completed: true
rem_unregistered_filter_completed: false
cat_update_all: true
force_auto_tmm_ignore_tags: []
disable_qbt_default_share_limits: true
tag_stalled_torrents: true
rem_unregistered_ignore_list: []
rem_unregistered_grace_minutes: 10
rem_unregistered_max_torrents: 10
private_tag:
cat:
radarr: /data/torrents/downloads
sonarr: /data/torrents/downloads
cross-seed-link: /data/torrents/cross-seed
radarr.cross-seed: /data/torrents/cross-seed
sonarr.cross-seed: /data/torrents/cross-seed
# Vous pouvez tagguer vos trackers ici
tracker:
other:
tag: other
# On liste uniquement les catégories qu'on veut scanner pour les hardlinks.
nohardlinks:
radarr:
exclude_tags: []
sonarr:
exclude_tags: []
cross-seed-link:
exclude_tags: []
radarr.cross-seed:
exclude_tags: []
sonarr.cross-seed:
exclude_tags: []
share_limits:
# RÈGLE 1 : PROTECTION
# On garde en seed les fichiers utilisés par Plex
protected_media:
priority: 1
exclude_all_tags: [noHL]
categories:
- radarr
- sonarr
- cross-seed-link
- radarr.cross-seed
- sonarr.cross-seed
max_ratio: -1
max_seeding_time: -1
cleanup: false
# RÈGLE 2 : NETTOYAGE
# Si un fichier n'est pas utilisé par Plex => On supprime après X temps/ratio
recycle_bin:
priority: 2
include_all_tags: [noHL]
categories:
- radarr
- sonarr
- cross-seed-link
- radarr.cross-seed
- sonarr.cross-seed
max_ratio: 1.0
max_seeding_time: 21600 # 15 jours
min_seeding_time: 10080 # 7 jours min
cleanup: true
6. Configuration Média (Root Folders & Renaming)
Avant de lancer le premier téléchargement, il faut expliquer à Sonarr/Radarr où ranger les fichiers et comment les nommer. C’est ici que l’architecture /data prend tout son sens.
A. Les Root Folders (Où ranger ?)
Dans Sonarr et Radarr, allez dans Settings > Media Management. Tout en bas, cherchez la section Root Folders.
⚠️ Attention : Ne choisissez surtout pas /data tout court ! Cela mélangerait vos séries avec vos torrents en vrac. Respectez la structure de la Partie 1 :
- Pour Sonarr : Ajoutez
/data/media/tv. - Pour Radarr : Ajoutez
/data/media/movies.
Comme ces dossiers sont sur le même point de montage (/data) que /data/torrents/downloads, le déplacement du fichier sera instantané (Atomic Move / Hardlink).
B. Le Standard de Renaming (Comment nommer ?)
Toujours dans Media Management, activez « Rename » et « Replace Illegal Characters ».
Le nommage est vital pour que Plex et votre futur « moi » s’y retrouvent. Le format recommandé par les TRaSH Guides (optimisé pour le nouvel agent Plex avec ID TMDb) permet une reconnaissance instantanée.
Standard Movie Format (Radarr) : {Movie CleanTitle} {(Release Year)} {tmdb-{TmdbId}} - {edition-{Edition Tags}} {[MediaInfo 3D]}{[Custom Formats]}{[Quality Full]}{[Mediainfo AudioCodec}{ Mediainfo AudioChannels]}{[MediaInfo VideoDynamicRangeType]}{[MediaInfo VideoCodec]}{-Release Group}
Standard Series Format (Sonarr) : {Series CleanTitle} {tvdb-{TvdbId}} - S{season:00}E{episode:00} - {Episode CleanTitle} {[Custom Formats]}{[Quality Full]}{[MediaInfo VideoDynamicRangeType]}{[Mediainfo AudioCodec}{ Mediainfo AudioChannels]}{[Mediainfo VideoCodec]}{-Release Group}
Note : Ces formats sont longs, mais ils contiennent toutes les métadonnées techniques (HDR, Codec, Audio) directement dans le nom du fichier. En plus d’aider Plex, c’est votre assurance vie en cas de crash ou de migration : Sonarr ou Radarr pourra reconstruire sa base de données parfaitement juste en lisant les noms de fichiers, sans rien deviner.
Conclusion Partie 2
Nous avons maintenant un Media Server intelligent et autonome.
- Prowlarr trouve les sources et nous permet de switcher de tracker en 2 minutes.
- Recyclarr garantit que nous ne téléchargeons pas de CAMs pourries.
- qbit_manage maintient l’ordre dans les téléchargements.
- Qui sécurise la connexion au bunker de téléchargement.
- Sonarr/Radarr orchestrent le tout et rangent proprement les fichiers.
Mais il manque le principal : pouvoir regarder ce qu’on télécharge ! Pas question d’aller fouiller dans les dossiers.
Dans la Partie 3, nous installerons la « Vitrine » de votre Media Server : Plex pour diffuser vos contenus (avec transcodage matériel) et Seerr pour centraliser les demandes de votre famille.

Ping : Guide Media Server Docker 2026 (Partie 3) : Plex, Seerr et Transcodage - LabDuGeek.fr