Media Stack
Le guide pas-à-pas pour les débutants : demande un film sur ton téléphone, il est téléchargé, trié et dispo sur ta TV automatiquement.
Le Concept (Pour les non-initiés)
Imaginez l'expérience parfaite : vous êtes dans le canapé, vous ouvrez une application sur votre téléphone et vous demandez le dernier film sorti. Vous posez le téléphone, et 5 minutes plus tard, le film apparaît sur votre télévision, avec sa belle affiche, ses sous-titres, parfaitement rangé.
Pas de recherche sur des sites obscurs, pas de copier-coller de fichiers, pas de renommage manuel. Tout est 100% automatique. Ce miracle est possible grâce à un ensemble de logiciels gratuits et légaux (la "Stack") qui vont travailler ensemble. Ce guide est écrit pour que n'importe qui puisse y arriver, étape par étape.
Le Matériel : Sur quoi installer tout ça ?
Pour que cela fonctionne H24, il faut un appareil allumé en permanence. Vous avez deux grands choix :
- Un NAS Synology : C'est un boîtier avec plusieurs disques durs (très populaire).
- Un Mini-PC (Alternative recommandée) : Un petit ordinateur (comme un Intel N100 sous Ubuntu/Debian) caché à côté de la box internet. Souvent moins cher qu'un NAS, plus puissant pour la vidéo, et plus facile à configurer car il n'a pas les limitations imposées par Synology.
Note : Dans ce tutoriel, si vous n'utilisez pas de NAS Synology, vous devrez simplement remplacer les mentions /volume1/ du fichier d'installation par le chemin de votre disque dur (ex: /home/user/media/).
Étape 1 : Le Déploiement (La fondation)
Tous nos logiciels vont tourner dans "Docker". Imaginez Docker comme un grand immeuble, et chaque logiciel va occuper un appartement (un "conteneur") bien isolé.
Tout à la fin de cet article, vous trouverez un grand bloc de texte appelé docker-compose.yml. C'est le plan de construction de votre immeuble.
- Installez Docker sur votre NAS ou Mini-PC.
- Créez les dossiers qui accueilleront vos fichiers (ex:
mediaettorrents). - Lancez ce fichier
docker-compose.yml(n'oubliez pas d'y mettre les vraies informations de votre fournisseur VPN !).
Une fois lancé, l'immeuble est construit. Passons maintenant à la décoration de chaque appartement !
Étape 2 : Configuration Pas-à-Pas (Le cœur du guide)
Règle vitale pour les débutants : Dans toutes les interfaces web que nous allons configurer, quand on vous demande de choisir un dossier, ne choisissez jamais les dossiers de votre ordinateur physique (comme C:/ ou /volume1/). Choisissez TOUJOURS les dossiers internes de Docker, c'est-à-dire /data/media ou /data/torrents.
1. qBittorrent (Le Téléchargeur)
C'est le logiciel qui va récupérer les fichiers sur internet (protégé par votre VPN).
- Où aller ? Ouvrez votre navigateur et tapez
http://IP_DE_VOTRE_MACHINE:8080. - Identifiants : Par défaut, tapez
adminetadminadmin. - À faire : 1. Allez dans les réglages (l'engrenage) > Web UI et changez la langue en Français.
2. Allez dans Téléchargements et vérifiez que le chemin par défaut est bien
/data/torrents. 3. Changez le mot de passe par défaut pour des raisons de sécurité.
2. Prowlarr (L'Annuaire)
C'est lui qui connaît les adresses de tous les sites de téléchargement (les "trackers").
- Où aller ?
http://IP_DE_VOTRE_MACHINE:9696. - À faire :
- Cliquez sur Add Indexer (Ajouter un indexeur).
- Cherchez vos sites préférés (ex: YGG, C411, La Cale) et entrez vos identifiants.
- Cliquez sur Test puis Save. S'il y a une coche verte, c'est gagné ! Prowlarr est connecté.
3. Radarr & Sonarr (Les Cerveaux)
Ce sont les chefs d'orchestre. Radarr gère les Films, Sonarr gère les Séries. La configuration est la même pour les deux.
- Où aller ?
http://IP_DE_VOTRE_MACHINE:7878(Radarr) et8989(Sonarr). - À faire :
- Lier le téléchargeur : Allez dans Settings > Download Clients > cliquez sur le
+. Choisissez qBittorrent. Dans "Host", tapezqbittorrent, le port8080, et mettez le mot de passe que vous avez créé à l'étape 1. Cliquez sur Test et Sauvegardez. - Créer la bibliothèque : Allez dans Settings > Media Management. Tout en bas, dans Root Folders, ajoutez le dossier
/data/media/movies(pour Radarr) ou/data/media/tv(pour Sonarr). - Activer la magie (Hardlinks) : Toujours dans Media Management, cochez la case "Use Hardlinks instead of Copy". C'est ce qui évite que votre disque dur ne se remplisse deux fois plus vite !
- Lier le téléchargeur : Allez dans Settings > Download Clients > cliquez sur le
(Note : Prowlarr se liera tout seul à Radarr/Sonarr, vous n'avez rien à faire de ce côté !)
4. Jellyfin (Votre Netflix personnel)
C'est l'interface magnifique que vous verrez sur votre télévision.
- Où aller ?
http://IP_DE_VOTRE_MACHINE:8096. - À faire :
- Créez votre compte administrateur.
- Il va vous demander d'ajouter des bibliothèques. Cliquez sur le
+. - Choisissez le type "Films", et pour le dossier, naviguez jusqu'à
/data/media/movies. - Faites pareil pour les Séries en pointant vers
/data/media/tv. Jellyfin va scanner ces dossiers et télécharger les affiches automatiquement.
5. Jellyseerr (Le Portail de Requêtes)
C'est l'application "vitrine" que vous donnerez à vos amis ou votre famille pour qu'ils demandent des films facilement, sans rien casser.
- Où aller ?
http://IP_DE_VOTRE_MACHINE:5055. - À faire :
- À la première ouverture, choisissez de vous connecter avec Jellyfin. Mettez l'adresse
http://jellyfin:8096et vos identifiants Jellyfin. - Ensuite, il vous demandera d'ajouter vos serveurs Radarr et Sonarr. Utilisez les adresses
http://radarr:7878ethttp://sonarr:8989. Et voilà !
- À la première ouverture, choisissez de vous connecter avec Jellyfin. Mettez l'adresse
Dépannage (Les erreurs classiques)
- Mon qBittorrent refuse de s'ouvrir ! Si vous utilisez un NAS Synology, il "oublie" souvent une pièce maîtresse pour le VPN au démarrage. Tapez ceci dans le terminal (SSH) de votre NAS pour réparer :
sudo mkdir -p /dev/net
sudo mknod /dev/net/tun c 10 200
sudo chmod 600 /dev/net/tun
sudo docker-compose up -d
- Rien ne marche, mes conteneurs sont "fantômes". Parfois, Docker s'emmêle les pinceaux. La solution miracle est d'éteindre complètement l'immeuble et de le rallumer (les données ne seront pas perdues) :
sudo docker-compose down
sudo docker-compose up -d
Le Fichier Docker Compose Complet
Voici le plan de construction à utiliser à l'Étape 1.
Pensez absolument à remplacer TA_CLE_PRIVEE_ICI et TON_IP_WIREGUARD_ICI par les informations fournies par votre fournisseur VPN (comme Surfshark, NordVPN, ou ProtonVPN).
version: "3.8"
services:
# ── VPN & TÉLÉCHARGEMENT ──────────────────────
gluetun:
image: qmcgaw/gluetun
container_name: gluetun
cap_add:
- NET_ADMIN
devices:
- /dev/net/tun:/dev/net/tun
environment:
- VPN_SERVICE_PROVIDER=custom
- VPN_TYPE=wireguard
- WIREGUARD_PRIVATE_KEY=TA_CLE_PRIVEE_ICI
- WIREGUARD_ADDRESSES=TON_IP_WIREGUARD_ICI
ports:
- 8080:8080 # qBittorrent Web UI
- 6881:6881 # qBittorrent écoute (TCP)
- 6881:6881/udp
volumes:
- /volume1/docker/gluetun:/gluetun
restart: unless-stopped
qbittorrent:
image: lscr.io/linuxserver/qbittorrent:latest
container_name: qbittorrent
# C'est cette ligne qui oblige le téléchargement à passer par le VPN :
network_mode: "service:gluetun"
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Paris
- WEBUI_PORT=8080
volumes:
- /volume1/docker/qbittorrent:/config
- /volume1/torrents:/data/torrents
depends_on:
- gluetun
restart: unless-stopped
# ── RECHERCHE & INDEXEURS ─────────────────────
flaresolverr:
image: 21hsmw/flaresolverr:nodriver
container_name: flaresolverr
environment:
- TZ=Europe/Paris
- DRIVER=nodriver
ports:
- 8191:8191
restart: unless-stopped
jackett:
image: lscr.io/linuxserver/jackett:latest
container_name: jackett
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Paris
ports:
- 9117:9117
volumes:
- /volume1/docker/jackett:/config
- /volume1/torrents:/downloads
restart: unless-stopped
prowlarr:
image: lscr.io/linuxserver/prowlarr:latest
container_name: prowlarr
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Paris
ports:
- 9696:9696
volumes:
- /volume1/docker/prowlarr:/config
restart: unless-stopped
# ── GESTIONNAIRES DE MÉDIAS (*ARR) ────────────
radarr:
image: lscr.io/linuxserver/radarr:latest
container_name: radarr
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Paris
ports:
- 7878:7878
volumes:
- /volume1/docker/radarr:/config
- /volume1:/volume1
restart: unless-stopped
sonarr:
image: lscr.io/linuxserver/sonarr:latest
container_name: sonarr
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Paris
ports:
- 8989:8989
volumes:
- /volume1/docker/sonarr:/config
- /volume1:/volume1
restart: unless-stopped
# ── STREAMING & REQUÊTES ──────────────────────
jellyfin:
image: lscr.io/linuxserver/jellyfin:latest
container_name: jellyfin
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Paris
ports:
- 8096:8096
volumes:
- /volume1/docker/jellyfin:/config
- /volume1/media:/data/media
restart: unless-stopped
jellyseerr:
image: fallenbagel/jellyseerr:latest
container_name: jellyseerr
environment:
- TZ=Europe/Paris
ports:
- 5055:5055
volumes:
- /volume1/docker/jellyseerr:/app/config
restart: unless-stopped
# ── SYSTÈME & ACCÈS EXTERNE ───────────────────
npm:
image: jc21/nginx-proxy-manager:latest
container_name: npm
ports:
- 80:80 # HTTP
- 443:443 # HTTPS (SSL)
- 81:81 # Admin NPM
volumes:
- /volume1/docker/npm/data:/data
- /volume1/docker/npm/letsencrypt:/etc/letsencrypt
restart: unless-stopped
homarr:
image: ghcr.io/ajnart/homarr:latest
container_name: homarr
ports:
- 7575:7575
volumes:
- /volume1/docker/homarr/configs:/app/data/configs
- /volume1/docker/homarr/icons:/app/public/icons
- /volume1/docker/homarr/data:/data
restart: unless-stopped
watchtower:
image: containrrr/watchtower
container_name: watchtower
environment:
- TZ=Europe/Paris
- WATCHTOWER_CLEANUP=true
volumes:
- /var/run/docker.sock:/var/run/docker.sock
restart: unless-stopped