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). J’ai créé aussi un répertoire qui contiendra toutes 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.
mkdir watchtower
Le fichier de configuration
Si vous souhaitez sécuriser le lancement de ‘watchtower’, je vous engage à parcourir l’article sécuriser Docker.
Il est important 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 par défaut pour accéder à l’interface avec votre navigateur,
- PUID et PGID : celui de votre utilisateur Docker (omdocker pour ce blog),
- 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),
- WATCHTOWER_NOTIFICATIONS_XXX : à adapter avec votre email
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 !
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 des projets GitHub concernés de mes containeurs pour ^tre tenu au courant des nouvelles versions.