Très bien, je vous montre comment j'ai développé la stack arr.
Je me dois de vous préciser que je me suis fait beaucoup aidé par deux IA : perplexity pour la recherche de tous les problèmes rencontrés sur l'installation d'une stack arr. avec un NAS Asustor, Docker et Portainer. Puis avec l'IA Anthropic Claude pour la mise en place du stack et résolution des problèmes mineurs.
Intro - Mise en place d'une stack simple pour commencer :
- Transmission (client téléchargement torrent) pour sa simplicité.
- Gluetun (client VPN)
- Lidarr (recherche et gestionnaire de musique)
- Prowlarr (indexeur de site torrent et usenet).
1 - stack downloader
D'abord je créé une stack downloader c'est à dire Transmission avec Gluetun derrière.
J'ai demandé à l'IA Claude de me construire un compose docker à partir de ces 2 sites :
https://gluetun.com/ et
https://docs.linuxserver.io/images/docker-transmission/#user-group-identifiers. Pourquoi ? par ce que je veux l'empecher de chercher des compositions exotiques. Et je le précise bien que je suis client chez ProtonVPN et que je veux utiliser le protocole OpenVPN pour sa stabilité.
- Il faut avant de valider la stack créer plusieurs dossiers dans le nas. Un sous-dossier Gluetun et un autre Transmission pour la configuration, dans le dossier Docker (qui a été créé lorsqu'on a installé l'application via app central) et un dossier partagé Downloads avec dedans 2 sous-dossiers "complete/lidarr" et "incomplete".
- Dans portainer, j'ai créé un réseau virtuel media_network = équivalent d'un switch virtuel entre conteneurs
J'avais vu quelque part et grâce à Perplexity un soucis avec ça : /dev/net/tun:/dev/net/tun = interface qui permet de créer des interfaces réseau virtuelles pour les VPN. Et visiblement il n'était pas présent dans mon NAS. Je l'ai donc créé via ssh mais avant il faut vérifier si le fichier est présent :
Si la réponse est négative, on ajoute le code suivant pour créer le fichier dev/net/tun :
Bash:
sudo mkdir -p /dev/net
sudo mknod /dev/net/tun c 10 200
sudo chmod 666 /dev/net/tun

Attention, sur Asustor ce fichier disparaît à chaque redémarrage du NAS car /dev est recréé dynamiquement au boot. Il est possible de faire un script de démarrage Asustor pour que la solution soit pérenne. Je ne l'ai pas encore fait, chaque chose en son temps.
On vérifie avec ça "ls -la /dev/net/tun" et on obtient normalement ceci :
Bash:
crw-rw-rw- 1 root root 10, 200 ... /dev/net/tun
- Une fois fait, on fait la compose-docker.
Voici le compose détaillé à ma demande pour bien comprendre :
YAML:
---
# ============================================================
# dl-stack : Gluetun (ProtonVPN / OpenVPN) + Transmission
# ============================================================
# Prérequis ProtonVPN :
# - Identifiants OpenVPN spécifiques (≠ identifiants du compte Proton)
# → https://account.proton.me/u/0/vpn/OpenVpn
# - Pour activer le port forwarding (P2P), ajouter "+pmp" à l'username
# ex: username+pmp
# ============================================================
networks:
media_network:
external: true # Réseau partagé avec manage-stack (*arr)
services:
# ----------------------------------------------------------
# GLUETUN — client VPN, passerelle réseau pour Transmission
# ----------------------------------------------------------
gluetun:
image: qmcgaw/gluetun:latest
container_name: gluetun
cap_add:
- NET_ADMIN
devices:
- /dev/net/tun:/dev/net/tun
networks:
- media_network
ports:
- 9091:9091 # Transmission WebUI
- 51413:51413 # Transmission port torrent TCP
- 51413:51413/udp # Transmission port torrent UDP
# - 8000:8000 # API HTTP Gluetun (optionnel, utile pour debug)
volumes:
- /share/Docker/gluetun:/gluetun
environment:
# --- Provider ---
- VPN_SERVICE_PROVIDER=protonvpn
- VPN_TYPE=openvpn
# --- Identifiants OpenVPN ProtonVPN ---
# Pour activer le port forwarding P2P, ajouter +pmp à l'username
- OPENVPN_USER=VOTRE_USERNAME_OPENVPN+pmp
- OPENVPN_PASSWORD=VOTRE_PASSWORD_OPENVPN
# --- Sélection du serveur ---
# Choisir un pays avec serveurs P2P (ex: Netherlands, Switzerland, etc.)
- SERVER_COUNTRIES=Netherlands
# - SERVER_CITIES=Amsterdam # Filtrage optionnel par ville
- PORT_FORWARD_ONLY=on # Forcer serveurs P2P uniquement
# --- Port forwarding ---
- VPN_PORT_FORWARDING=on
- VPN_PORT_FORWARDING_UP_COMMAND=/bin/sh -c 'echo $VPN_FORWARDED_PORT > /tmp/gluetun/forwarded_port'
# --- DNS & firewall ---
- BLOCK_SURVEILLANCE=on
- UPDATER_PERIOD=24h # Mise à jour de la liste des serveurs toutes les 24h
# --- Timezone ---
- TZ=Europe/Paris
restart: unless-stopped
healthcheck:
test: ["CMD", "/gluetun-entrypoint", "healthcheck"]
interval: 30s
timeout: 10s
retries: 3
start_period: 30s
# ----------------------------------------------------------
# TRANSMISSION — client BitTorrent (réseau via Gluetun)
# ----------------------------------------------------------
transmission:
image: lscr.io/linuxserver/transmission:latest
container_name: transmission
# Transmission utilise le réseau de Gluetun (tout le trafic passe par le VPN)
network_mode: "service:gluetun"
depends_on:
gluetun:
condition: service_healthy
volumes:
- /share/Docker/transmission:/config
- /share/Downloads:/downloads
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Paris
# - USER=admin # Authentification WebUI (optionnel)
# - PASS=motdepasse # Authentification WebUI (optionnel)
restart: unless-stopped

Attention, bien vérifier les PUID et PGID. Chez moi c'est différent. Pareil pour les chemins vers docker/gluetun et downloads, chez vous vous organisez vos dossiers probalement d'une autre manière.
Ca n'avait pas fonctionné au premier coup. L'IA Claude m'avait proposé d'installer nginx sous docker pour contourner quelque chose dont je ne me souviens plus. Et d'un coup, alors que nginx ne fonctionnait pas bien, Transmission et Gluetun fonctionnaient. peut être avaient-ils besoin d'un certain temps d'intallation et de mise en route. J'ai par la suite supprimé nginx.
- Je teste cette stack downloader (kill switch, vpn fonctionnel avec tracker ip et dns etc.) puis test avec un torrent par exemple un fichier Ubuntu.Iso.
Tout est bon

2 - stack manage
On passe à la suite avec l'installation d'une stack manage avec Lidarr et Prowlarr.
C'est bien plus simple qu'avec la stack précédente.
- Je créé 2 sous dossiers dans le dossier docker pour la config : lidarr et prowlarr. C'est tout.
- Et ensuite la compose docker :
YAML:
services:
prowlarr:
image: lscr.io/linuxserver/prowlarr:latest
container_name: prowlarr
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Paris
volumes:
- /share/Docker/prowlarr/config:/config
ports:
- 9696:9696
restart: unless-stopped
networks:
- media_network
lidarr:
image: lscr.io/linuxserver/lidarr:latest
container_name: lidarr
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Paris
volumes:
- /share/Docker/lidarr/config:/config
- /share/Musique:/music
- /share/Downloads/complete:/downloads/complete
ports:
- 8686:8686
restart: unless-stopped
networks:
- media_network
networks:
media_network:
external: true

Pareil, attention aux chemins des dossiers et aux PUID et PGID.
On teste, ca fonctionne.
3 - connection entre Transmission, Lidarr et Prowlarr
Ensuite, on passe à la connection entre Transmission, Lidarr et Prowlarr :
- Dans Lidarr, on ajouter le client de téléchargement Transmission. Dans la fenêtre d'ajout de client, Host : on met l'ip du NAS. Et le port : 9091. Username et Password à mettre si on a créé un compte Transmission. Sinon laisser vide. Test puis Save. Il faut aussi ajouter la racine du dossier de bibliothèque musicale : /musique dans paramètre, gestion des médias.
- Dans Prowlarr, il faut ajouter l'application Lidarr. Dans la fenêtre, prowlarr serveur : mettre l'url de l'ip du nas et le port. Pareil, lidarr serveur : url ip du nas + le port. Ensuite l'API key de Lidarr, à chercher dans Lidarr, paramètre, général, clé API. Copier et coller dans la fenêtre.
Test puis Save !
Et tout fonctionne bien. Heureux

Bien sûr, tout n'a pas fonctionné du premier coup. Parfois je ne sais pas pourquoi ca bloquait puis peu de temps après ca s'est mis à rouler. Je n'ai acune explication. Ca fait 2 jours que je laisse tourner et je n'ai pas rencontré de soucis.
Probablement que dans ce partage je dois manquer de clarté et possiblement j'ai dû oublier quelques infos. Je reviendrai là dessus quand j'aurai un peu de temps pour vous partager.
N'hésistez pas si vous avez des questions ou surtout si vous remarquez des erreurs. Je vous rappelle que je suis débutant et que j'ai été aidé par IA Claude et Perplexity + de nombreuses recherches sur le web et sur ce site Forum-Nas. Et bcp de tests et d'échecs (et de frustations !) par le passé. Il est possible que demain ou plus tard, je retesterai avec Wireguard qui est plus récent, plus léger et plus rapide que OpenVPN.
Merci
