diff --git a/docker-compose/openvpn-rutorrent-prowlarr-jackett-flaresolver-radarr-sonarr/readme.md b/docker-compose/openvpn-rutorrent-prowlarr-jackett-flaresolver-radarr-sonarr/readme.md index fd47b47..605ae9a 100644 --- a/docker-compose/openvpn-rutorrent-prowlarr-jackett-flaresolver-radarr-sonarr/readme.md +++ b/docker-compose/openvpn-rutorrent-prowlarr-jackett-flaresolver-radarr-sonarr/readme.md @@ -1,576 +1,579 @@ -Installation de la stack "Downloads-VPN" -============ - -Bienvenue sur mon nouveau tutoriel. Celui-ci, je l'espere va vous apprendre a installer Jackett, Prowlarr, rutorrent, Qbittorrent, Sonarr, Radarr et Lidarr et à faire en sorte que tout ce petit monde communique au travers d'un conteneur OpenVPN. - -Cette stack docker-compose contient les logiciels suivants : -| Nom du service | Dépot Officiel | Dépot utilisé* | -| ------ | ------ | ------ | -| OpenVPN Client | [dperson](https://github.com/dperson/openvpn-client) | [dperson](https://github.com/dperson/openvpn-client) | -| Jackett | [Jackett](https://github.com/Jackett/Jackett) | [Linuxserver](https://github.com/linuxserver/docker-jackett) | -| Prowlarr | [Prowlarr](https://github.com/Prowlarr/Prowlarr) | [Linuxserver](https://github.com/linuxserver/docker-prowlarr) | -| rtorrent-rutorrent | [rakshasa](https://github.com/rakshasa/rtorrent)-[Novik](https://github.com/Novik/ruTorrent) | [Crazymax](https://github.com/crazy-max/docker-rtorrent-rutorrent) | -| qBittorrent | [qBittorrent](https://github.com/qbittorrent/qBittorrent) | [Linuxserver](https://github.com/linuxserver/docker-qbittorrent) | -| Sonarr | [Sonarr](https://github.com/Sonarr/Sonarr) | [Linuxserver](https://github.com/linuxserver/docker-sonarr) | -| Radarr | [Radarr](https://github.com/Radarr/Radarr) | [Linuxserver](https://github.com/linuxserver/docker-radarr) | -| Lidarr | [Lidarr](https://github.com/Lidarr/Lidarr) | [Linuxserver](https://github.com/linuxserver/docker-lidarr) | - -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 -- 1. [Prérequis](#1-prérequis) - - 1.a [Création des dossiers](#1-a-création-des-dossiers) - - 1.b [Modifications des .env](#1-b-modifications-des-env) - - 1.c [Transfert des fichiers dans /downloads-vpn](#1-c-transfert-des-fichiers-dans-downloads-vpn) - - 1.d [Mise en place de la config .opvn](#1-d-mise-en-place-de-la-config-opvn) - - 1.e [Optionnel - Création et Execution de TUN.sh](#1-e-optionnel-création-et-execution-de-tun) -- 2. [Création des conteneurs](#2-création-des-conteneurs) - - 2.a [Création du réseau](#2-a-création-du-réseau) - - 2.b [Création des conteneurs](#2-b-création-des-conteneurs) -- 3. [Les Bases](#3-les-bases) - - 3.a [Commandes de bases ( Docker )](#3-a-commandes-de-bases-docker) - - 3.b [Accès aux interfaces ( WebUI )](#3-b-accès-aux-interfaces-webui) -- 4. [Configuration de rutorrent](#4-configuration-de-rutorrent) - - 4.a [Réactiver la fonction Effacer / Effacer et Supprimer les données](#4-a-réactiver-la-fonction-effacer-effacer-et-supprimer-les-données) - - 4.b [Sécuriser l’accès à l'interface](#4-b-sécuriser-l-accès-à-l-interface) -- 5. [Configuration de jackett](#5-configuration-de-jackett) - - 5.a [Configurer Flaresolverr](#5-a-configurer-flaresolverr) -- 6. [Aller plus loin](#6-aller-plus-loin) - - 6.a [S'assurer qu'on passe bien par le VPN](#6-a-s-assurer-qu-on-passe-bien-par-le-vpn) - - 6.b [Rajouter les chemins vers ces médias](#6-b-rajouter-les-chemins-vers-ces-medias) - - 6.c [Mise à jour automatique ( watchtower )](#6-c-mise-à-jour-automatique-watchtower) - - 6.d [Reboot automatique en cas de soucis ( autoheal )](#6-d-reboot-automatique-en-cas-de-soucis-autoheal) -- 7. 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 - | - |-- qbittorrent ---- config - | |_ downloads - | - |-- prowlarr ------- config - | - |-- sonarr --------- config - | - |-- radarr --------- config - | - |-- jackett -------- config - | - |-- lidarr --------- config - |_ music - -``` - -- 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 `cd` aller 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/qbitorrent/{config,downloads} downloads-vpn/prowlarr/config downloads-vpn/sonarr/config downloads-vpn/radarr/config downloads-vpn/jackett/config downloads-vpn/lidarr/{config,music}` - -### 1.b. Modifications des .env -- Récupérer sur votre machine les fichiers [.env](https://gitea.zoz-serv.org/Zoz/plex_fr_discord_repo/raw/branch/evo-stackdl/docker-compose/openvpn-rutorrent-prowlarr-jackett-flaresolver-radarr-sonarr/.env), [TUN.sh](https://gitea.zoz-serv.org/Zoz/plex_fr_discord_repo/raw/branch/evo-stackdl/docker-compose/openvpn-rutorrent-prowlarr-jackett-flaresolver-radarr-sonarr/TUN.sh), [docker-compose.yml](https://gitea.zoz-serv.org/Zoz/plex_fr_discord_repo/raw/branch/evo-stackdl/docker-compose/openvpn-rutorrent-prowlarr-jackett-flaresolver-radarr-sonarr/docker-compose.yml) et [rtorrent-rutorrent.env](https://gitea.zoz-serv.org/Zoz/plex_fr_discord_repo/raw/branch/evo-stackdl/docker-compose/openvpn-rutorrent-prowlarr-jackett-flaresolver-radarr-sonarr/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 `.env` vous 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](https://www.forum-nas.fr/viewtopic.php?f=56&t=13213) -**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-vpn` pré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-pass ->``` ->par : ->``` ->auth-user-pass /vpn/vpn.auth ->``` -> ->Dans le dossier `downloads-vpn/vpn/config` en plus du fichier .ovpn, vous aller devoir créer un fichier `vpn.auth` contenant 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.sh` présent, et placer le dans votre dossier `downloads-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-network` necesaire 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](https://www.forum-nas.fr/viewtopic.php?f=56&t=14030) est possible par exemple.* - -### 3.a Commandes de bases ( Docker ) -- Arreter un conteneur : `docker stop ` -Exemple pour le conteneur **rutorrent** : `docker stop rutorrent` - -- Redémarrer un conteneur : `docker restart ` -Exemple pour le conteneur **rutorrent** : `docker restart rutorrent` - -- Démarrer un conteneur : `docker start ` -Exemple pour le conteneur **rutorrent** : `docker start rutorrent` - -- Supprimer un conteneur : `docker rm ` -Exemple pour le conteneur **rutorrent** : `docker rm rutorrent` - -- Créer / Mettre à jour la "stack" : `docker-compose up -d` -Cette 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:8080` -Exemple : Si l'adresse IP de votre machine est `192.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 | -| ------ | ------ | -| rutorrent | 8080 | -| qbittorrent | 8586 | -| jackett | 9117 | -| prowlarr | 9696 | -| sonarr | 8989 | -| radarr | 7878 | -| lidarr | 8686 | - -## 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-configuration-de-jackett)] -### 5.a [Configurer Flaresolverr](#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 S'assurer qu'on passe bien par le VPN - - Pour s'assurer que notre client torrent utilise bien le conteneur VPN, on peu utliser un service comme [Check my IP](http://checkmyip.torrentprivacy.com/). - - Quand vous allez cliquer sur le lien du site, vous arrivez sur une page indiquant à gauche votre adresse IP. - - Cliquer sur **Download test torrent fileimage** pour récupérer le .torrent, ne fermer pas la page du site et rendez-vous dans votre client torrent. - - Placer le torrent en téléchargement comme un torrent normal, et retourner sur la page du site [Check my IP](http://checkmyip.torrentprivacy.com/). Quelques dizaines de secondes plus tard, la case de droite doit retourner l'IP de votre VPN ( une IP différente de la votre ! ) - - Si c'est le cas, c'est parfait :) - Si la case n'affiche rien, vérifier que le conteneur VPN à établi la connexion. - - -### 6.b 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 )](#3-a-commandes-de-bases-docker). - -### 6.c 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](https://www.forum-nas.fr/viewtopic.php?f=56&t=14474), 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 )](#3-a-commandes-de-bases-docker). - -### 6.d Reboot automatique en cas de soucis ( autoheal ) - -- En cas de soucis de VPN la connexion est coupée, et donc, plus rien ne fonctionne. Souvent, un reboot soucis à faire re-prendre la connexion VPN. Afin de ne pas avoir à la faire manulement nous allons utiliser le conteneur [autoheal](https://github.com/willfarrell/docker-autoheal). Celui-ci va surveiller notre conteneur VPN, et dans le cas ou la connexion est interrompu va redémarrer le conteneur sans action de notre part. - -Malheuresement, cela ne suffit pas, les conteneurs rattaché au conteneur vpn doivent également être redémarrés :) - -Nous allons voir ci-dessous comment mettre ceci en place. - -#### 6.d.1 Installation de Autoheal - -- Dans un 1er temps, installer le conteneur autoheal en suivant le **point 2/** de ce tutoriel : [Redémarrer automatiquement un conteneur Docker avec un statut unhealthy](https://www.forum-nas.fr/viewtopic.php?f=90&t=16019) - - -#### 6.d.2 Surveillance du conteneur VPN - -Maintenant, pour activer la surveillance du conteneur VPN, il vous suffit de décommenter pour le service vpn la ligne `labels` ( si cela n'est pas déja fait ) et la ligne `- autoheal=true`. - -**Exemple :** -``` - vpn: - image: dperson/openvpn-client:latest - container_name: vpn - restart: unless-stopped - cap_add: - - NET_ADMIN - sysctls: - - net.ipv6.conf.all.disable_ipv6=0 - security_opt: - - label:disable - labels: -# - com.centurylinklabs.watchtower.enable=true - - autoheal=true - environment: - - PUID=${PUID} - - PGID=${PGID} - - TZ=${TZ} - networks: - - vpn-network - dns: - - 84.200.69.80 - - 8.8.8.8 - - 9.9.9.9 - ports : - - 8586:8586 # WebUI qbittorrent - - 9117:9117 # WebUI jackett - - 7878:7878 # WebUI radarr - - 8989:8989 # WebUI sonarr - - 8191:8191 # Flaresolver - - 8080:8080 # WebUI rutorrent - - 9696:9696 # WebUI prowlarr - - 8686:8686 # WebUI Lidarr - devices: - - /dev/net/tun:/dev/net/tun - volumes: - - ${RACINE}/vpn/config:/vpn - - ${RACINE}/vpn/scripts:/scripts - command: '-f "" -r 192.168.0.0/24' - healthcheck: - test: ["CMD", "curl", "-Ss", "ifconfig.me"] - interval: 60s - timeout: 15s -``` - -Le conteneur vpn possèdent un healcheck celui-ci sera surveillé par autoheal, et redémarré en cas de soucis. - -#### 6.d.2 Surveillance des autres conteneurs - -- Étudions maintenant la mise en place sur les autres conteneurs. Nous allons prendre exemple sur rtorrent-rutorrent, la méthode sera identique pour les autres conteneurs : - -Le Healtcheck que nous allons utiliser ce présente comme ceci : -``` - healthcheck: - test: ["CMD-SHELL", "curl --fail http://PASSERELLE_NETWORK_VPN:PORT_WEB_UI/ || exit 1"] - interval: 1m30s - timeout: 10s - retries: 3 -``` - -Ici deux choses sont à modifier `PASSERELLE_NETWORK_VPN` et `PORT_WEB_UI`. - -- **PASSERELLE_NETWORK_VPN** est à modifier par l'adresse IP de la passerelle de votre réseau **vpn-network**. -Pour la connaitre, en SSH, executer la commande `docker network inspect vpn-network`, dans la réponse à cette commande, vous allez trouver une adresse IP précédée de *Gateway*, par exemple : **"Gateway": "172.20.0.1"** -Ici, l'adresse de la passerelle est donc : **172.20.0.1**. - - -- **PORT_WEB_UI** est à modifier par le port de l'interface du service, référez-vous à [Accès aux interfaces ( WebUI )](#3-b-accès-aux-interfaces-webui) pour connaitre ce port. -Dasn notre exemple, rutorrent utilise le port **8080**. - - -Voici donc notre healcheck adapté à rutorrent : -``` - healthcheck: - test: ["CMD-SHELL", "curl --fail http://172.20.0.1:8080/ || exit 1"] - interval: 1m30s - timeout: 10s - retries: 3 -``` - -Maintenant que notre healthcheck est pret, nous allons l'intégrer à notre compose. Tous les services du compose sont disposés de la même façon. -Le début du service commence par une ligne avec le nom du service suivi de `:` et la fin par la politique de redémarrage du conteneur : `restart: unless-stopped`. - -Deux choses à faire pour mettre en place la surveillance sur notre conteneur maintenant : -1 - Nous allons placer notre healcheck à la fin du service soit, à la ligne, après `restart: unless-stopped`. -2 - Décommenter la ligne `labels` ( si cela n'est pas déja fait ) et la ligne `- autoheal=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 - healthcheck: - test: ["CMD-SHELL", "curl --fail http://172.20.0.1:8080/ || exit 1"] - interval: 1m30s - timeout: 10s - retries: 3 -``` -La procédure est identique pour chacun des services du docker-compose que vous souhaitez surveiller. ( -> N'oublier pas d'adapter **PORT_WEB_UI** en fonction du conteneur. - +Installation de la stack "Downloads-VPN" +============ + +Bienvenue sur mon nouveau tutoriel. Celui-ci, je l'espere va vous apprendre a installer Jackett, Prowlarr, rutorrent, Qbittorrent, Sonarr, Radarr et Lidarr et à faire en sorte que tout ce petit monde communique au travers d'un conteneur OpenVPN. + +Cette stack docker-compose contient les logiciels suivants : +| Nom du service | Dépot Officiel | Dépot utilisé* | +| ------ | ------ | ------ | +| OpenVPN Client | [dperson](https://github.com/dperson/openvpn-client) | [dperson](https://github.com/dperson/openvpn-client) | +| Jackett | [Jackett](https://github.com/Jackett/Jackett) | [Linuxserver](https://github.com/linuxserver/docker-jackett) | +| Prowlarr | [Prowlarr](https://github.com/Prowlarr/Prowlarr) | [Linuxserver](https://github.com/linuxserver/docker-prowlarr) | +| rtorrent-rutorrent | [rakshasa](https://github.com/rakshasa/rtorrent)-[Novik](https://github.com/Novik/ruTorrent) | [Crazymax](https://github.com/crazy-max/docker-rtorrent-rutorrent) | +| qBittorrent | [qBittorrent](https://github.com/qbittorrent/qBittorrent) | [Linuxserver](https://github.com/linuxserver/docker-qbittorrent) | +| Sonarr | [Sonarr](https://github.com/Sonarr/Sonarr) | [Linuxserver](https://github.com/linuxserver/docker-sonarr) | +| Radarr | [Radarr](https://github.com/Radarr/Radarr) | [Linuxserver](https://github.com/linuxserver/docker-radarr) | +| Lidarr | [Lidarr](https://github.com/Lidarr/Lidarr) | [Linuxserver](https://github.com/linuxserver/docker-lidarr) | + +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 +- 1. [Prérequis](#1-prérequis) + - 1.a [Création des dossiers](#1-a-création-des-dossiers) + - 1.b [Modifications des .env](#1-b-modifications-des-env) + - 1.c [Transfert des fichiers dans /downloads-vpn](#1-c-transfert-des-fichiers-dans-downloads-vpn) + - 1.d [Mise en place de la config .opvn](#1-d-mise-en-place-de-la-config-opvn) + - 1.e [Optionnel - Création et Execution de TUN.sh](#1-e-optionnel-création-et-execution-de-tun) +- 2. [Création des conteneurs](#2-création-des-conteneurs) + - 2.a [Création du réseau](#2-a-création-du-réseau) + - 2.b [Création des conteneurs](#2-b-création-des-conteneurs) +- 3. [Les Bases](#3-les-bases) + - 3.a [Commandes de bases ( Docker )](#3-a-commandes-de-bases-docker) + - 3.b [Accès aux interfaces ( WebUI )](#3-b-accès-aux-interfaces-webui) +- 4. [Configuration de rutorrent](#4-configuration-de-rutorrent) + - 4.a [Réactiver la fonction Effacer / Effacer et Supprimer les données](#4-a-réactiver-la-fonction-effacer-effacer-et-supprimer-les-données) + - 4.b [Sécuriser l’accès à l'interface](#4-b-sécuriser-l-accès-à-l-interface) +- 5. [Configuration de jackett](#5-configuration-de-jackett) + - 5.a [Configurer Flaresolverr](#5-a-configurer-flaresolverr) +- 6. [Aller plus loin](#6-aller-plus-loin) + - 6.a [S'assurer qu'on passe bien par le VPN](#6-a-s-assurer-qu-on-passe-bien-par-le-vpn) + - 6.b [Rajouter les chemins vers ces médias](#6-b-rajouter-les-chemins-vers-ces-medias) + - 6.c [Mise à jour automatique ( watchtower )](#6-c-mise-à-jour-automatique-watchtower) + - 6.d [Reboot automatique en cas de soucis ( autoheal )](#6-d-reboot-automatique-en-cas-de-soucis-autoheal) + - 6.a.1 [Installation de Autoheal](#6-d-1-installation-de-autoheal) + - 6.a.2 [Surveillance du conteneur VPN](#6-d-2-surveillance-du-conteneur-vpn) + - 6.a.3 [Surveillance des autres conteneurs](#6-d-3-surveillance-des-autres-conteneurs) +- 7. 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 + | + |-- qbittorrent ---- config + | |_ downloads + | + |-- prowlarr ------- config + | + |-- sonarr --------- config + | + |-- radarr --------- config + | + |-- jackett -------- config + | + |-- lidarr --------- config + |_ music + +``` + +- 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 `cd` aller 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/qbitorrent/{config,downloads} downloads-vpn/prowlarr/config downloads-vpn/sonarr/config downloads-vpn/radarr/config downloads-vpn/jackett/config downloads-vpn/lidarr/{config,music}` + +### 1.b. Modifications des .env +- Récupérer sur votre machine les fichiers [.env](https://gitea.zoz-serv.org/Zoz/plex_fr_discord_repo/raw/branch/evo-stackdl/docker-compose/openvpn-rutorrent-prowlarr-jackett-flaresolver-radarr-sonarr/.env), [TUN.sh](https://gitea.zoz-serv.org/Zoz/plex_fr_discord_repo/raw/branch/evo-stackdl/docker-compose/openvpn-rutorrent-prowlarr-jackett-flaresolver-radarr-sonarr/TUN.sh), [docker-compose.yml](https://gitea.zoz-serv.org/Zoz/plex_fr_discord_repo/raw/branch/evo-stackdl/docker-compose/openvpn-rutorrent-prowlarr-jackett-flaresolver-radarr-sonarr/docker-compose.yml) et [rtorrent-rutorrent.env](https://gitea.zoz-serv.org/Zoz/plex_fr_discord_repo/raw/branch/evo-stackdl/docker-compose/openvpn-rutorrent-prowlarr-jackett-flaresolver-radarr-sonarr/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 `.env` vous 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](https://www.forum-nas.fr/viewtopic.php?f=56&t=13213) +**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-vpn` pré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-pass +>``` +>par : +>``` +>auth-user-pass /vpn/vpn.auth +>``` +> +>Dans le dossier `downloads-vpn/vpn/config` en plus du fichier .ovpn, vous aller devoir créer un fichier `vpn.auth` contenant 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.sh` présent, et placer le dans votre dossier `downloads-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-network` necesaire 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](https://www.forum-nas.fr/viewtopic.php?f=56&t=14030) est possible par exemple.* + +### 3.a Commandes de bases ( Docker ) +- Arreter un conteneur : `docker stop ` +Exemple pour le conteneur **rutorrent** : `docker stop rutorrent` + +- Redémarrer un conteneur : `docker restart ` +Exemple pour le conteneur **rutorrent** : `docker restart rutorrent` + +- Démarrer un conteneur : `docker start ` +Exemple pour le conteneur **rutorrent** : `docker start rutorrent` + +- Supprimer un conteneur : `docker rm ` +Exemple pour le conteneur **rutorrent** : `docker rm rutorrent` + +- Créer / Mettre à jour la "stack" : `docker-compose up -d` +Cette 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:8080` +Exemple : Si l'adresse IP de votre machine est `192.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 | +| ------ | ------ | +| rutorrent | 8080 | +| qbittorrent | 8586 | +| jackett | 9117 | +| prowlarr | 9696 | +| sonarr | 8989 | +| radarr | 7878 | +| lidarr | 8686 | + +## 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-configuration-de-jackett)] +### 5.a [Configurer Flaresolverr](#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 S'assurer qu'on passe bien par le VPN + - Pour s'assurer que notre client torrent utilise bien le conteneur VPN, on peu utliser un service comme [Check my IP](http://checkmyip.torrentprivacy.com/). + + Quand vous allez cliquer sur le lien du site, vous arrivez sur une page indiquant à gauche votre adresse IP. + + Cliquer sur **Download test torrent fileimage** pour récupérer le .torrent, ne fermer pas la page du site et rendez-vous dans votre client torrent. + + Placer le torrent en téléchargement comme un torrent normal, et retourner sur la page du site [Check my IP](http://checkmyip.torrentprivacy.com/). Quelques dizaines de secondes plus tard, la case de droite doit retourner l'IP de votre VPN ( une IP différente de la votre ! ) + + Si c'est le cas, c'est parfait :) + Si la case n'affiche rien, vérifier que le conteneur VPN à établi la connexion. + + +### 6.b 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 )](#3-a-commandes-de-bases-docker). + +### 6.c 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](https://www.forum-nas.fr/viewtopic.php?f=56&t=14474), 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 )](#3-a-commandes-de-bases-docker). + +### 6.d Reboot automatique en cas de soucis ( autoheal ) + +- En cas de soucis de VPN la connexion est coupée, et donc, plus rien ne fonctionne. Souvent, un reboot soucis à faire re-prendre la connexion VPN. Afin de ne pas avoir à la faire manulement nous allons utiliser le conteneur [autoheal](https://github.com/willfarrell/docker-autoheal). Celui-ci va surveiller notre conteneur VPN, et dans le cas ou la connexion est interrompu va redémarrer le conteneur sans action de notre part. + +Malheuresement, cela ne suffit pas, les conteneurs rattaché au conteneur vpn doivent également être redémarrés :) + +Nous allons voir ci-dessous comment mettre ceci en place. + +#### 6.d.1 Installation de Autoheal + +- Dans un 1er temps, installer le conteneur autoheal en suivant le **point 2/** de ce tutoriel : [Redémarrer automatiquement un conteneur Docker avec un statut unhealthy](https://www.forum-nas.fr/viewtopic.php?f=90&t=16019) + + +#### 6.d.2 Surveillance du conteneur VPN + +Maintenant, pour activer la surveillance du conteneur VPN, il vous suffit de décommenter pour le service vpn la ligne `labels` ( si cela n'est pas déja fait ) et la ligne `- autoheal=true`. + +**Exemple :** +``` + vpn: + image: dperson/openvpn-client:latest + container_name: vpn + restart: unless-stopped + cap_add: + - NET_ADMIN + sysctls: + - net.ipv6.conf.all.disable_ipv6=0 + security_opt: + - label:disable + labels: +# - com.centurylinklabs.watchtower.enable=true + - autoheal=true + environment: + - PUID=${PUID} + - PGID=${PGID} + - TZ=${TZ} + networks: + - vpn-network + dns: + - 84.200.69.80 + - 8.8.8.8 + - 9.9.9.9 + ports : + - 8586:8586 # WebUI qbittorrent + - 9117:9117 # WebUI jackett + - 7878:7878 # WebUI radarr + - 8989:8989 # WebUI sonarr + - 8191:8191 # Flaresolver + - 8080:8080 # WebUI rutorrent + - 9696:9696 # WebUI prowlarr + - 8686:8686 # WebUI Lidarr + devices: + - /dev/net/tun:/dev/net/tun + volumes: + - ${RACINE}/vpn/config:/vpn + - ${RACINE}/vpn/scripts:/scripts + command: '-f "" -r 192.168.0.0/24' + healthcheck: + test: ["CMD", "curl", "-Ss", "ifconfig.me"] + interval: 60s + timeout: 15s +``` + +Le conteneur vpn possèdent un healcheck celui-ci sera surveillé par autoheal, et redémarré en cas de soucis. + +#### 6.d.3 Surveillance des autres conteneurs + +- Étudions maintenant la mise en place sur les autres conteneurs. Nous allons prendre exemple sur rtorrent-rutorrent, la méthode sera identique pour les autres conteneurs : + +Le Healtcheck que nous allons utiliser ce présente comme ceci : +``` + healthcheck: + test: ["CMD-SHELL", "curl --fail http://PASSERELLE_NETWORK_VPN:PORT_WEB_UI/ || exit 1"] + interval: 1m30s + timeout: 10s + retries: 3 +``` + +Ici deux choses sont à modifier `PASSERELLE_NETWORK_VPN` et `PORT_WEB_UI`. + +- **PASSERELLE_NETWORK_VPN** est à modifier par l'adresse IP de la passerelle de votre réseau **vpn-network**. +Pour la connaitre, en SSH, executer la commande `docker network inspect vpn-network`, dans la réponse à cette commande, vous allez trouver une adresse IP précédée de *Gateway*, par exemple : **"Gateway": "172.20.0.1"** +Ici, l'adresse de la passerelle est donc : **172.20.0.1**. + + +- **PORT_WEB_UI** est à modifier par le port de l'interface du service, référez-vous à [Accès aux interfaces ( WebUI )](#3-b-accès-aux-interfaces-webui) pour connaitre ce port. +Dasn notre exemple, rutorrent utilise le port **8080**. + + +Voici donc notre healcheck adapté à rutorrent : +``` + healthcheck: + test: ["CMD-SHELL", "curl --fail http://172.20.0.1:8080/ || exit 1"] + interval: 1m30s + timeout: 10s + retries: 3 +``` + +Maintenant que notre healthcheck est pret, nous allons l'intégrer à notre compose. Tous les services du compose sont disposés de la même façon. +Le début du service commence par une ligne avec le nom du service suivi de `:` et la fin par la politique de redémarrage du conteneur : `restart: unless-stopped`. + +Deux choses à faire pour mettre en place la surveillance sur notre conteneur maintenant : +1 - Nous allons placer notre healcheck à la fin du service soit, à la ligne, après `restart: unless-stopped`. +2 - Décommenter la ligne `labels` ( si cela n'est pas déja fait ) et la ligne `- autoheal=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 + healthcheck: + test: ["CMD-SHELL", "curl --fail http://172.20.0.1:8080/ || exit 1"] + interval: 1m30s + timeout: 10s + retries: 3 +``` +La procédure est identique pour chacun des services du docker-compose que vous souhaitez surveiller. ( +> N'oublier pas d'adapter **PORT_WEB_UI** en fonction du conteneur. + 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 )](#3-a-commandes-de-bases-docker). \ No newline at end of file