Merge pull request 'Ajout du paragraphe sur autoheal' (#107) from evo-stackdl-autoheal into master

Reviewed-on: #107
This commit is contained in:
NightPumpkin 2021-08-22 23:44:14 +02:00
commit d8cb84f500

View File

@ -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).