Watchtower sous Docker
Watchtower est un conteneur qui sert à mettre à jour automatiquement vos conteneurs Docker. Il permet également d’être lié à un Webhook pour vous envoyer des notifications lors des scans automatiques.
Installation de Watchtower
1. Créer un dossier Watchtower et un fichier docker-compose.yml
mkdir Watchtower
cd Watchtower
nano docker-compose.yml
2. Coller la configuration et enregistrer
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://discord.com/api/webhooks/xxxxxxxxxxx/xxxxxxxxxxx/slack
volumes:
- /var/run/docker.sock:/var/run/docker.sock
3. Lancer le conteneur avec docker-compose
docker-compose up -d
Le conteneur Watchtower est maintenant créé.
Il est possible de modifier la fréquence de vérifications en modifiant la ligne WATCHTOWER_SCHEDULE avec le cron que notre choix.
Par la suite, nous verrons comment ajouter les conteneurs à la surveillance de Watchtower, et comment configurer les notifications via Discord.
Ajouter un conteneur à Watchtower
Pour ajouter un conteneur à Watchtower, il faut éditer le fichier docker-compose du stack que l’on souhaite mettre à jour.
Par exemple, ici un stack pour Apache Guacamole :
version: "2"
services:
guacamole:
image: oznu/guacamole
container_name: guacamole
volumes:
- postgres:/config
ports:
- 8080:8080
volumes:
postgres:
driver: local
Pour ajouter la surveillance, il suffit d’ajouter le label « com.centurylinklabs.watchtower.enable=true«
version: "2"
services:
guacamole:
image: oznu/guacamole
container_name: guacamole
labels:
- com.centurylinklabs.watchtower.enable=true
volumes:
- postgres:/config
ports:
- 8080:8080
volumes:
postgres:
driver: local
Dès maintenant, mon conteneur est surveillé !
Activer les notifications Discord
Pour activer les notifications Discord, il faut aller modifier le docker-compose de watchtower pour décommenter les dernières lignes :
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://discord.com/api/webhooks/xxxxxxxxxxx/xxxxxxxxxxx/slack
volumes:
- /var/run/docker.sock:/var/run/docker.sock
Sur Discord : Créer un serveur, ou modifiez un de vos serveur en allant dans Paramètres du serveur → Intégrations → Créer un Webhook
Cliquez sur Copier l’URL du webhook.
Collez l’URL dans le fichier docker-compose en ligne 16.
Il faudra ajouter /slack à la fin de l’URL.
- WATCHTOWER_NOTIFICATION_SLACK_HOOK_URL=https://discord.com/api/webhooks/xxxxxxxxxxx/xxxxxxxxxxx/slack
Si votre configuration est bonne, vous devriez avoir un message sur votre serveur :
Et voici ce qu’il se passe lorsqu’il met à jour un conteneur :
Activer les notifications Email
Pour activer les notifications email, il faut éditeur les variables d’environnement du docker-compose.
Remplacez les dernières lignes du docker-compose par celles ci :
environment:
- TZ= Europe/Paris
- WATCHTOWER_SCHEDULE= 0 0 6 * * *
- WATCHTOWER_LABEL_ENABLE= true
- WATCHTOWER_CLEANUP= true
- WATCHTOWER_NOTIFICATIONS=email
- [email protected]
- [email protected]
- WATCHTOWER_NOTIFICATION_EMAIL_SERVER=mailserver.xyz
- WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT=587
- [email protected]
- WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD=password
- WATCHTOWER_NOTIFICATION_EMAIL_DELAY=30
volumes:
- /var/run/docker.sock:/var/run/docker.sock