Installation de la stack "Downloads-VPN"
Cette stack docker-compose contient les logiciels :
- OpenVPN Client
- Jackett
- Prowlarr
- rutorrent
- Qbittorrent
- Sonarr
- Radarr
Elle permet d'installer rapidement ces logiciels et de s'assurer que ces derniers ne communiquerons que à travers le Client VPN.
Disclamer : Ce tutoriel n'est pas là pour vous apprendre à télécharger des fichiers illégaux, tous messages à ce sujet seront supprimés.
Table des matières
- 
- Dépannage ( Ce construira au fur et a mesure des questions )
 
1. Prérequis
- Cette stack est concu pour fonctionner dans un dossier downloads-vpn, avec l'architecture suivante :
downloads-vpn ---- vpn ------------ config
               |                 |_ scripts
               |
               |-- rutorrent ------ data
               |                 |_ passwd
               |                 |_ downloads
               |
               |-- prowlarr ------- config
               |
               |-- sonarr --------- config
               |                 |_ downloads
               |
               |-- radarr --------- config
               |                 |_ downloads
               |
               |-- jackett -------- config
               |
               |-- qbittorrent ---- config
               |                 |_ downloads
- Dans le paragraphe 1.a nous allons les créer avec une ligne de commande, et dans le paragraphe 1.b nous allons modifier le .env afin qu'il utilise bien ces dossiers ( en fonction de leurs localisation sur votre machine ).
1.a. Création des dossiers
- 
Avec cdaller dans le dossier de votre choix, par exemple "docker". Exemple : Si votre dossier "docker" ce trouve dans /volume1, alors la commande sera :cd /volume1/docker
- 
Maintenant que nous sommes dans le bon dossier, nous allons executer la commande suivante pour créer d'un coup, toute l'architecture nécessaire : 
mkdir -p downloads-vpn/vpn/{config,scripts} downloads-vpn/rutorrent/{data,passwd,downloads} downloads-vpn/prowlarr/config downloads-vpn/sonarr/{config,downloads} downloads-vpn/radarr/{config,downloads} downloads-vpn/jackett/config downloads-vpn/qbitorrent/{config,downloads}
1.b. Modifications des .env
- Récupérer sur votre machine les fichiers .env, TUN.sh, docker-compose.yml et rtorrent-rutorrent.env.
Vous pouvez faire un clic droit - Enregistrer sous ... sur les liens ci-dessus pour télécharger les fichiers.
- 
Par defaut, il n'y a rien a modifier dans rtorrent-rutorrent.env.
- 
Dans le fichier .envvous allez devoir modifier plusieurs chose :
PUID et PGID devront correspondre aux ID de votre utilisateurs, plus d'info ici : Connaitre le PUID / PGID d'un utilisateur
RACINE correspond au chemin vers le dossier downloads-vpn créé a l'étape 1.a.
Dans ce cas, c'est : /volume1/docker/downloads-vpn
1.c Transfert des fichiers dans /downloads-vpn
- Une fois les modifications effectuées, il faut transfert tous les fichiers (  .env, TUN.sh, docker-compose.yml, rtorrent-rutorrent.env ) dans le dossier /downloads-vpnprécédemment créé ! Par exemple, avec FileZilla.
1.d Mise en place de la config .opvn
- Dans notre dossier downloads-vpn/vpn/config, nous allons placer notre configuration .ovpn récupéré sur notre serveur OpenVPN.
Note : Si votre config VPN demande une identifications par mot de passe, alors il vous faudra modifier dans votre fichier .ovpn la ligne :
auth-user-passpar :
auth-user-pass /vpn/vpn.authDans le dossier
downloads-vpn/vpn/configen plus du fichier .ovpn, vous aller devoir créer un fichiervpn.authcontenant 2 lignes, sur la 1ere ligne, votre identifiant de connexion au VPN, et sur la 2eme ligne, votre mot de passe.Exemple :
votreidentifiantdeconnexion votremotdepasse
1.e Optionnel - Création et Execution de /tun
- 
Si vous êtes sur un NAS de type Synology par exemple, alors la création du TUN est obligatoire. 
- 
Pour cela : Recupérer le fichier TUN.shprésent, et placer le dans votre dossierdownloads-vpn.
Vous devez être "root" pour l'executer, pour cela, passer en root avec sudo :
sudo su -
Puis rendez-vous dans le dossier contenant TUN.sh, dans mon cas /volume1/docker/downloads-vpn
cd /volume1/docker/downloads-vpn
on chmod le script pour le rendre executable :
chmod 0755 TUN.sh
et executer le script :
./TUN.sh
2. Création des conteneurs
2.a Création du réseau
- On créé le reseau vpn-networknecesaire au fonctionnement du conteneurs VPN :
docker network create vpn-network
2.b Création des conteneurs
Maintenant que votre "stack" est prete rendez-vous dans le dossier downloads-vpn, dans mon cas /volume1/docker/downloads-vpn :
cd /volume1/docker/downloads-vpn
3. Les Bases
L'installation n'étant pas classique, si vous utilisez l'interface Docker de DSM par exemple, elle va refuser de démarrer les conteneurs rattachés au conteneur vpn ( car pour elle, il n'est relié a aucun réseau, et ne comprend pas que son réseau soit un conteneur.
Il faut donc obligatoirement utiliser les commandes en SSH ou autre logiciel de monitoring Docker compatible*. Voici quelques commandes de base :
*L'utilisation de Portainer est possible par exemple.
3.a Commandes de bases ( Docker )
- 
Arreter un conteneur : docker stop <nom_du_conteneur>Exemple pour le conteneur rutorrent :docker stop rutorrent
- 
Redémarrer un conteneur : docker restart <nom_du_conteneur>Exemple pour le conteneur rutorrent :docker restart rutorrent
- 
Démarrer un conteneur : docker start <nom_du_conteneur>Exemple pour le conteneur rutorrent :docker start rutorrent
- 
Supprimer un conteneur : docker rm <nom_du_conteneur>Exemple pour le conteneur rutorrent :docker rm rutorrent
- 
Créer / Mettre à jour la "stack" : docker-compose up -dCette commande permet de créer la stack présent dans le fichier docker-compose.yml, les conteneurs non-existant seront créés, les modifiés seront mis à jour.
Note : Vous devez etre dans la dossier contenant le fichier docker-compose.yml pour que cette commande fonctionne.
3.b Accès aux interfaces ( WebUI )
- 
L'acces à chaque service se fait via une WebUI ( Interface Web ), sur un port quil lui est propre. 
- 
Pour rutorrent, c'est le port 8080. Donc l'adresse sera sous la forme :http://IP_DE_LA_MACHINE:8080Exemple : Si l'adresse IP de votre machine est192.168.1.10, alors l'adresse d'accès sera :http://192.168.1.10:8080
- 
Ci-dessus la liste des ports des interfaces de chaque service : Service Port jackett 9117 prowlarr 9696 rutorrent 8080 sonarr 8989 radarr 7878 qbittorrent 8586 
4. Configuration de rutorrent
Depuis l'interface SSH, les commandes ci-dessous sont à executer en étant a la racine de votre dossier downloads-vpn.
4.a Réactiver la fonction Effacer / Effacer et Supprimer les données
- Par défaut dans l'image de crazymax, la fonction "Effacer et Supprimer les données" sur un torrent n'existe pas. Uniquement la fonction "Effacer", et celle-ci efface le torrent ET les données.
Il n'est donc pas possible d'effacer simplement un torrent du client, sans supprimer les fichiers associés.
Ici nous allons voir comment ré-activer cette fonction :
Ceci doit être fait, conteneur à l’arrêt, pour arrêter le conteneur, utiliser la commande :
docker stop rutorrent
Pour réactiver cette fonction, il faut éditer le fichier rtorrent-rutorrent.env :
Note : Vous pouvez l'éditer directement depuis SSH avec l'utilitaire
nano:nano rtorrent-rutorrent.env.
Retirer erasedata de la ligne ( N°23 ) suivante :
RU_REMOVE_CORE_PLUGINS=erasedata,httprpc,geoip,geoip2
Ce qui donne :
RU_REMOVE_CORE_PLUGINS=httprpc,geoip,geoip2
Enregistrer, et quitter.
Puis, nous allons editer le fichier .rtorrent.rc présent dans downloads-vpn/rutorrent/data/rtorrent :
Note : Vous pouvez l'éditer directement depuis SSH avec l'utilitaire
nano:nano rutorrent/data/rtorrent/.rtorrent.rc.
Les deux dernieres lignes sont :
# Erase data when torrent deleted (no need erasedata plugin on ruTorrent)
method.set_key = event.download.erased,delete_erased,"execute=rm,-rf,--,$d.data_path="
Nous allons commenter la commande avec le caractère # afin de la désactiver, ce qui donne :
# Erase data when torrent deleted (no need erasedata plugin on ruTorrent)
#method.set_key = event.download.erased,delete_erased,"execute=rm,-rf,--,$d.data_path="
Enregistrer, et quitter.
Nous allons re-créer le conteneur rutorrent, avec cette nouvelle configuration, pour cela nous executons simplement la commande : docker-compose up -d.
4.b Sécuriser l’accès à l'interface
- La création du fichier htaccess afin de sécuriser l'acces a l'interface de rutorrent est très simple.
Arreter le conteneur :
docker stop rutorrent
Puis executer la commande suivante :
docker run --rm -it httpd:2.4-alpine htpasswd -Bbn MON_PSEUDO MON_MOT_DE_PASSE >> $(pwd)/rutorrent/passwd/rutorrent.htpasswd
Dans cette commande, il faut modifier : MON_PSEUDO, par le pseudo voulu pour l'identification MON_MOT_DE_PASSE, par le mot de passe souhaité pour l'identification
Une fois la commande executée, redémarrer le conteneur rutorrent :
docker start rutorrent
Maintenant, l'acces à l'interface de rutorrent réclame une identification :)
5. Configuration de jackett]
5.a Configurer Flaresolverr]
6. Aller plus loin
- Retrouvez ici des astuces pour aller "un peu plus loin" dans la configurations de vos conteneurs, avec par exemple, la méthode pour rajouter des montages ( dossier de votre serveur dans le conteneur ), ou régler la mise à jour automatique de vos conteneurs.
/!\ Depuis l'interface SSH, les commandes ci-dessous sont à executer en étant à la racine de votre dossier downloads-vpn.
6.a Rajouter les chemins vers ces médias
Comment rajouter simplement des montages de dossiers aux instances rutorrent, qbittorrent, sonarr, ... ?
Pour cela plusieurs méthodes, en voici une :
Nous allons ici rajouter un dossier de Films ( /volume1/films ) et un dossier Series ( /volume1/series )
Editer le fichier .env avec la commande nano .env
En dessus de la ligne RACINE=... rajouter les lignes vers vos medias sous la forme :
NOM_VARIABLE=/Chemin/Dossier
Dans notre exemple, le fichier .env aura donc la forme suivante :
PUID=1000
PGID=1000
TZ=Europe/Paris
RACINE=/volume1/docker/downloads-vpn
FILMS=/volume1/films
SERIES=/volume1/series
Une fois les modifications effectuées, on enregistre et on quitte le fichier.
Maintenant, nous allons donner acces à ces dossiers a nos conteneurs. Prenons exemple avec le conteneur rutorrent.
Editer le fichier docker-compose.yml avec la commande nano docker-compose.yml
Trouver dans le fichier la configuration du conteneur rutorrent que voici :
  rtorrent-rutorrent:
    image: crazymax/rtorrent-rutorrent:latest
    container_name: rutorrent
#    labels:
#     - com.centurylinklabs.watchtower.enable=true
#     - autoheal=true
    depends_on:
      - vpn
    env_file:
      - "./rtorrent-rutorrent.env"
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
    network_mode: "service:vpn"
    volumes:
      - ${RACINE}/rutorrent/data:/data
      - ${RACINE}/rutorrent/passwd:/passwd
      - ${RACINE}/rutorrent/downloads:/downloads
    ulimits:
      nproc: 65535
      nofile:
         soft: 32000
         hard: 40000
    restart: unless-stopped
Dans la partie volumes, nous allons rajouter 2 lignes correspondantes à nos dossiers Films et Series qui nous avons configurés dans le fichier .env.
De cette manière :
  rtorrent-rutorrent:
    image: crazymax/rtorrent-rutorrent:latest
    container_name: rutorrent
#    labels:
#     - com.centurylinklabs.watchtower.enable=true
#     - autoheal=true
    depends_on:
      - vpn
    env_file:
      - "./rtorrent-rutorrent.env"
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
    network_mode: "service:vpn"
    volumes:
      - ${RACINE}/rutorrent/data:/data
      - ${RACINE}/rutorrent/passwd:/passwd
      - ${RACINE}/rutorrent/downloads:/downloads
      - ${FILMS}:/media/film
      - ${SERIES}:/media/series
    ulimits:
      nproc: 65535
      nofile:
        soft: 32000
        hard: 40000
    restart: unless-stopped
De cette manières, les dossiers films et séries seront accessible dans le conteneur rutorrent dans un dossier /media. Vous pouvez suivre cette même procédure pour les autres conteneurs.
Pour appliquer les changements, il ne reste qu'à mettre à jour la stack avec la commande docker-compose up -d, plus d'info dans le point 3.a Commandes de bases ( Docker ).
6.b Mise à jour automatique ( watchtower )
Watchtower est un conteneur qui va surveiller vos conteneurs à la recherche de mise à jour disponible ! Si une mise a jour est disponible, alors Watchtower, arrete le conteneur, récupere la nouvelle image, et re-créé le conteneur avec le nouvelle image.
Pour l'installation de Watchtower en Docker sur votre serveur, je vous laisse avec ce tuto : Installation de Watchtower en Docker un NAS Synology, le point 1 vous apprendra à installer Watchtower.
une fois Watchtower installé, il vous suffit de décommenter pour chaque services la ligne labels ( si cela n'est pas déja fait ) et la ligne - com.centurylinklabs.watchtower.enable=true.
Exemple :
  rtorrent-rutorrent:
    image: crazymax/rtorrent-rutorrent:latest
    container_name: rutorrent
    labels:
     - com.centurylinklabs.watchtower.enable=true
#     - autoheal=true
    depends_on:
      - vpn
    env_file:
      - "./rtorrent-rutorrent.env"
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
    network_mode: "service:vpn"
    volumes:
      - ${RACINE}/rutorrent/data:/data
      - ${RACINE}/rutorrent/passwd:/passwd
      - ${RACINE}/rutorrent/downloads:/downloads
    ulimits:
      nproc: 65535
      nofile:
        soft: 32000
        hard: 40000
    restart: unless-stopped
La procédure est identique pour chacun des services du docker-compose que vous souhaitez surveiller.
Pour appliquer les changements, il ne reste qu'à mettre à jour la stack avec la commande docker-compose up -d, plus d'info dans le point 3.a Commandes de bases ( Docker ).