Informations: Ce tutoriel n'est plus maintenu.
Vous pouvez toujours consulter : [Tuto] Installation de Watchtower en Docker
Vous pouvez toujours consulter : [Tuto] Installation de Watchtower en Docker
Bonjour,
Voici un tuto, pour ceux qui souhaiterai installer Watchtower en docker sur un NAS Synology.
Nous allons ici utiliser Portainer ou docker-compose, cette solution ne pourra donc ce faire, uniquement sur un NAS ou est possible d'installer Docker.
Le but de ce tuto sera de rendre cette installation facile et accessible a tous, bien que loin d’être un expert de docker/docker-compose, n’hésiter pas à répondre à ce sujet avec vos interrogations, ..
Pour ceux qui sont plus à l'aise avec ce genre d'installation, n'hésiter pas a proposer des améliorations, ou des conseils, ...
Pré-requis :
Avoir installé le paquet Docker
Avoir un accès SSH au Synology*
* Pour faire cette manip, il vous faudra vous connecter en SSH à votre NAS, si vous ne savez pas le faire, vous trouverez ici un tuto explicatif : [Tuto] Acceder à son NAS en lignes de commande.
Note : Cette installation n'est pas possible via Docker DSM, car Watchtower demande l'acces au sock Docker.
Watchtower c'est quoi ?
Watchtower est un conteneur qui va surveiller vos conteneurs à la recherche de mise a 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.
Sommaire :
1/ Création du conteneur
_____a/ via Portainer
_____b/ via docker-compose
2/ Utilisation
3/ Les notifications
_____a/ via Discord
_____b/ via Gotify
1/ Création du conteneur
Watchtower peut être paramètré de deux façon, soit par defaut il surveille tous les conteneurs SAUF ceux qu'on souhaite exclure, ou alors il ne surveille QUE les conteneurs que l'on souhaite.
Ici, c'est cette deuxième option que j'ai choisi, je souhaite que Watchtower ne mette a jour que les conteneurs auquel je lui aurait autorisé a la faire.
_____b/ via Portainer
Dans Portainer, cliquer sur Stacks, puis Add Staks :
Donner un nom a votre stack, par exemple "watchtower", en en dessous, coller le compose ci dessous :
Code:
version: "2.3"
services:
watchtower:
container_name: watchtower
image: containrrr/watchtower:amd64-latest
restart: unless-stopped
environment:
- TZ=Europe/Paris
- WATCHTOWER_SCHEDULE= 0 0 6 * * *
- WATCHTOWER_LABEL_ENABLE=true
- WATCHTOWER_CLEANUP=true
- WATCHTOWER_REMOVE_VOLUMES=true
- WATCHTOWER_NOTIFICATIONS_LEVEL=debug
volumes:
- /var/run/docker.sock:/var/run/docker.sock
Ensuite, pour créer le conteneur on clique sur "Deploy the stack"
_____b/ via docker-compose
Nous allons créer un fichier "docker-compose.yml" avec les paramètres du conteneurs.
Celui-ci est a placer dans /volume1/docker/watchtower.
Voici mon fichier "docker-compose.yml" :
Code:
version: "2.3"
services:
watchtower:
container_name: watchtower
image: containrrr/watchtower:amd64-latest
restart: unless-stopped
environment:
- TZ=Europe/Paris
- WATCHTOWER_SCHEDULE= 0 0 6 * * *
- WATCHTOWER_LABEL_ENABLE=true
- WATCHTOWER_CLEANUP=true
- WATCHTOWER_REMOVE_VOLUMES=true
- WATCHTOWER_NOTIFICATIONS_LEVEL=debug
volumes:
- /var/run/docker.sock:/var/run/docker.sock
Il n'y a normalement aucunes modifications a faire, enregistrer votre fichier sous le nom : docker-compose.yml
Puis charger le fichier sur votre NAS ( chez moi, il se trouve dans /volume1/docker/ )
Ensuite en SSH, je passe en mode administrateur avec la commande :
sudo su -
Le mot de passe admin vous est demandé.
Dans mon dossier /volume1/docker/watchtower, j'ai chargé mon fichier docker-compose.yml. Je vais donc accéder à ce dossier, pour cela je fait :
cd /volume1/docker/watchtower
Ensuite, afin "d’exécuter" mon fichier docker-compose.yml, je tape en ssh :
sudo docker-compose up -d
Le conteneur est créer, puis démarre.
2/ Utilisation
Maintenant que Watchtower est en route, nous allons lui dire quel conteneur il peu mettre à jour.
Pour cela, il faut rajouter le labels "com.centurylinklabs.watchtower.enable=true" aux conteneurs que watchtower doit surveiller.
Un exemple sur mon compose de jellyfin :
A l'origine, il est comme ceci :
Code:
version: "3"
services:
jellyfin:
image: linuxserver/jellyfin:latest
container_name: jellyfin
restart: unless-stopped
environment:
- PUID=9999
- PGID=111
- TZ=Europe/Paris
devices:
- /dev/dri/renderD128:/dev/dri/renderD128
sysctls:
- net.ipv6.conf.all.disable_ipv6=0
networks:
- jellyfin
ports:
- 8096:8096
expose:
- 8096
volumes:
- /volume1/docker/jellyfin/config:/config
- /volume1/docker/jellyfin/cache:/cache
nginx:
image: nginxinc/nginx-unprivileged:alpine
container_name: jellyfin_proxy
restart: unless-stopped
networks:
- jellyfin
volumes:
- /volume1/docker/jellyfin/jellyfin_nginx.conf:/etc/nginx/conf.d/default.conf:ro
ports:
- "8083:8080"
networks:
jellyfin:
external:
name: jellyfin
Afin que watchtower surveille le conteneur jellyfin, nous allons rajouter le labels, ce qui donne ceci :
Code:
version: "3"
services:
jellyfin:
image: linuxserver/jellyfin:latest
container_name: jellyfin
restart: unless-stopped
labels:
- com.centurylinklabs.watchtower.enable=true
environment:
- PUID=9999
- PGID=111
- TZ=Europe/Paris
devices:
- /dev/dri/renderD128:/dev/dri/renderD128
sysctls:
- net.ipv6.conf.all.disable_ipv6=0
networks:
- jellyfin
ports:
- 8096:8096
expose:
- 8096
volumes:
- /volume1/docker/jellyfin/config:/config
- /volume1/docker/jellyfin/cache:/cache
nginx:
image: nginxinc/nginx-unprivileged:alpine
container_name: jellyfin_proxy
restart: unless-stopped
networks:
- jellyfin
volumes:
- /volume1/docker/jellyfin/jellyfin_nginx.conf:/etc/nginx/conf.d/default.conf:ro
ports:
- "8083:8080"
networks:
jellyfin:
external:
name: jellyfin
Dans cette exemple, le conteneur jellyfin est surveillé
3/ Les notifications
_____a/ Discord
Pour utiliser les notifications Discord, nous allons modifier notre docker-compose afin d'y inclure quelques arguments supplémentaires.
Voici les arguments a inclure :
Code:
- WATCHTOWER_NOTIFICATIONS=slack
- WATCHTOWER_NOTIFICATION_SLACK_IDENTIFIER=Watchtower
- WATCHTOWER_NOTIFICATION_SLACK_HOOK_URL=https://discordapp.com/api/webhooks/
Notre compose prend donc cette forme :
Code:
version: "2.3"
services:
watchtower:
container_name: watchtower
image: containrrr/watchtower:amd64-latest
restart: unless-stopped
environment:
- TZ=Europe/Paris
- WATCHTOWER_SCHEDULE= 0 0 6 * * *
- WATCHTOWER_LABEL_ENABLE=true
- WATCHTOWER_CLEANUP=true
- WATCHTOWER_REMOVE_VOLUMES=true
- WATCHTOWER_NOTIFICATIONS_LEVEL=debug
- WATCHTOWER_NOTIFICATIONS=slack
- WATCHTOWER_NOTIFICATION_SLACK_IDENTIFIER=Watchtower
- WATCHTOWER_NOTIFICATION_SLACK_HOOK_URL=https://discordapp.com/api/webhooks/
volumes:
- /var/run/docker.sock:/var/run/docker.sock
Ici, nous allons devoir modifier la variable WATCHTOWER_NOTIFICATION_SLACK_HOOK_URL par l'url du webhooks que va vous fournir Discord.
A la fin de l'url, il faudra rajouter /slack
Exemple sur votre url est alors il faudra renseigner :
_____b/ Gotify
Pour utiliser les notifications Gotify, nous allons modifier notre docker-compose afin d'y inclure quelques arguments supplémentaires.
Voici les arguments a inclure :
Code:
- WATCHTOWER_NOTIFICATIONS=gotify
- WATCHTOWER_NOTIFICATION_GOTIFY_URL=https://gotify
- WATCHTOWER_NOTIFICATION_GOTIFY_TOKEN=xxxxxxxxxxx
Notre compose prend donc cette forme :
Code:
version: "2.3"
services:
watchtower:
container_name: watchtower
image: containrrr/watchtower:amd64-latest
restart: unless-stopped
environment:
- TZ=Europe/Paris
- WATCHTOWER_SCHEDULE= 0 0 6 * * *
- WATCHTOWER_LABEL_ENABLE=true
- WATCHTOWER_CLEANUP=true
- WATCHTOWER_REMOVE_VOLUMES=true
- WATCHTOWER_NOTIFICATIONS_LEVEL=debug
- WATCHTOWER_NOTIFICATIONS=gotify
- WATCHTOWER_NOTIFICATION_GOTIFY_URL=https://gotify
- WATCHTOWER_NOTIFICATION_GOTIFY_TOKEN=xxxxxxxxxxx
volumes:
- /var/run/docker.sock:/var/run/docker.sock
Ici, nous allons devoir modifier la variable WATCHTOWER_NOTIFICATION_GOTIFY_URL par l'url de votre serveur Gotify et WATCHTOWER_NOTIFICATION_GOTIFY_TOKEN par le "token" que vous aurait créer dans la section "App" de Gotify.
Vous trouverez également sur nas-forum.com un autre tuto sur watchtower par .Shad., avec, entre autre, une explication plus détaillé sur la fréquence de mise à jour.
Source :
GitHub - containrrr/watchtower: A process for automating Docker container base image updates.
A process for automating Docker container base image updates. - GitHub - containrrr/watchtower: A process for automating Docker container base image updates.
github.com
24-05-2021 - Changement du cron pour 0 0 6 * * * ( Tous les jours a 6h du matin )
15-01-2021 - Correction d'une "coquille"
29-12-2020 - Il semble y avoir un soucis avec l'image récupéré en utilisant le tag d'image "containrrr/watchtower:latest", j'ai donc modifié le tuto afin de préciser l'architecture voulu ( dans notre cas, amd64, ce qui donne : "containrrr/watchtower:amd64-latest"
18-10-2020 - Suppression de la variable "WATCHTOWER_POLL_INTERVAL=21600", elle ne peu pas co-habiter avec "WATCHTOWER_SCHEDULE" il faut donc choisir l'un ou l'autre. Merci @oracle7
05-09-2020 - Explications sur la mise en place des notifications discord et/ou gotify
04-09-2020 - Création du tuto
Dernière édition: