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 7bb8108..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 @@ -42,6 +42,9 @@ Elle permet d'installer rapidement ces logiciels et de s'assurer que ces dernier - 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 @@ -434,3 +437,143 @@ Pour appliquer les changements, il ne reste qu'à mettre à jour la stack avec l ### 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