Introduction
Watchtower est une application qui permet de surveiller les mises à jours des images de nos containeurs installés. Watchtower est capable d’installer automatiquement ses mises à jour ou de simplement faire une surveillance et de nous notifier en cas de mises à jours disponibles.
Pour cette installation j’utilise l’image officielle qui est présente ici : https://github.com/containrrr/watchtower
Remarque : J’ai créé au préalable un utilisateur omdocker (voir l’article création d ‘un utilisateur Docker pour le détail). J’ai créé aussi un répertoire qui contiendra tous mes installations docker. dans ce blog, j’utiliserais pour exemple le chemin /volume/docker. |
Nous allons créer aussi le répertoire watchtower en ligne de commande sur le NAS (connexion en SSH) dans notre répertoire docker : /volume/docker. Cette étape est facultative, le containeur créera le répertoire automatiquement lors du déploiement si celui ci n’existe pas.
$ cd /volume/docker
$ mkdir watchtower
Le fichier de configuration
Si vous souhaitez sécuriser le lancement de ‘watchtower‘, je vous engage à parcourir l’article securiser docker
Il est importent de bien respecter l’indentation des fichiers de configurations : pas de tabulation. Attention aussi à la version du fichier, il y a des légères évolutions de syntaxe d’une version à l’autre.
Le fichier yml en détails. Il faut remplacer pour votre configuration :
- port 8881 : numéro de port pour accéder à l’interface avec votre navigateur.
- PUID et PGID : celui de votre utilisateur Docker (omdocker pour ce blog),
- TZ : Votre zone de temps,
- WATCHTOWER_NOTIFICATIONS : Il convient de personnaliser votre notification, si vous souhaitez l’utiliser,
- WATCHTOWER_LABEL_ENABLE : true. Cela indique que seul les containeurs qui contiendront un ‘label’ spécifique seront surveillés (voir remarque tout en bas de l’article),
- WATCHTOWER_LABEL_MONITOR-ONLY= true. Cela indique que les containeurs seront seulement surveillés (pas d’installation automatique de mises à jours).
Remarque : Les notifications sont envoyés ici par email. Il est possible d’envoyer des notifications vers ‘Gotify‘, ‘Slack‘, ‘MSteams’ et ‘Shoutrrr ‘ . Je vous renvoi vers la documentation pour plus de détails ! https://containrrr.dev/watchtower/notifications/ |
version: "2.3"
services:
watchtower:
container_name: watchtower
image: containrrr/watchtower
restart: unless-stopped
environment:
- PUID=1003
- PGID=100
- TZ=Europe/Paris
- WATCHTOWER_SCHEDULE= 0 0 6 * * *
- WATCHTOWER_LABEL_ENABLE=true
- WATCHTOWER_LABEL_MONITOR-ONLY=true
- WATCHTOWER_CLEANUP=true
- WATCHTOWER_REMOVE_VOLUMES=true
- WATCHTOWER_NOTIFICATIONS_LEVEL=debug
- WATCHTOWER_NOTIFICATIONS=email
- WATCHTOWER_NOTIFICATION_EMAIL_FROM=votreemail@gmail.com
- WATCHTOWER_NOTIFICATION_EMAIL_TO=votreemail@gmail.com
- WATCHTOWER_NOTIFICATION_EMAIL_SERVER=smtp.gmail.com
- WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT=465
- WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER=utilisateur
- WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD=passwd
- WATCHTOWER_NOTIFICATION_EMAIL_DELAY=2
volumes:
- /var/run/docker.sock:/var/run/docker.sock
Vous copiez le contenu de ce fichier dans votre interface de gestion Portainer en allant dans ‘Stacks‘ et ‘Add stack‘.

Donnez un nom à votre pile, par exemple ‘watchtower‘, puis déployer cotre containeur en cliquant en bas sur « Deploy the stack‘.
Après une phase de téléchargement de l’image, puis d’installation de l’application, vous devriez arriver sur cet écran si tout s’est bien passé :

Vous devriez recevoir une notification au lancement du containeur :

Remarque : Il sera nécessaire de rajouter le bloc suivant dans chaque containeur que nous souhaitons surveiller : |
labels:
- com.centurylinklabs.watchtower.monitor-only=true
Mise à jour 13/10/2022
J’ai finis par désactiver Watchtower sur mon NAS. Il fonctionne très bien mais en terme de sécurité, il laisse à désirer. Le fait de monter /var/run/docker.socket peut donner l’accès root à tous le système. J’utilise comme alternative les flux rss (voir installation freshrss) des projets GitHub concernés de tous mes containeurs. Je relance mes piles Docker à chaque nouvelles images Docker mises en ligne sur GitHub.