Ceci est une ancienne révision du document !
Table des matières
Mises à jour des images Docker
Dernière mise à jour : août 2026
Stratégie de gestion des versions d'images Docker sur le serveur cahute (192.168.1.9) : tags épinglés + notification des mises à jour via Diun + application manuelle. Objectif : maîtriser ce qui tourne, éviter les mises à jour surprises (notamment Nextcloud et les montées de version majeure).
Principe
Trois règles :
- Tags épinglés : chaque service utilise une version précise (ex.
v1.13.2), jamais un tag flottant (latest,stable). On sait exactement ce qui tourne et on peut reproduire. - Diun notifie : le conteneur Diun vérifie chaque jour les registres et envoie un email quand une nouvelle version d'une image surveillée est disponible. Il n'applique rien lui-même.
- Application manuelle : à réception d'une notif, on modifie le tag dans le
docker-compose.yml, on relance, on vérifie.
Pourquoi pas d'auto-update (Watchtower) ? Une mise à jour automatique casse sans prévenir. Nextcloud exige les montées majeures une par une ; un latest qui saute deux versions met le service en rade. Le contrôle manuel est délibéré.
Contrepartie : une version épinglée fige aussi ses failles jusqu'à la prochaine mise à jour manuelle. D'où l'importance de traiter les notifs Diun sans trop tarder.
Versions épinglées (référence)
État validé en août 2026. Ces valeurs sont dans les docker-compose.yml respectifs.
| Service | Image | Tag épinglé | Stack |
|---|---|---|---|
| Homepage | ghcr.io/gethomepage/homepage | v1.13.2 | surveillance |
| Uptime-Kuma | louislam/uptime-kuma | 1.23.17 | surveillance |
| Dozzle | amir20/dozzle | v10.6.6 | surveillance |
| lldap | lldap/lldap | v0.6.3-alpine | lldap |
| Diun | crazymax/diun | 4.29.0 | diun |
| Imaginary | nextcloud/aio-imaginary | @sha256:15d3b43… (digest) | imaginary |
Cas Imaginary — épinglage par digest : l'image nextcloud/aio-imaginary n'a pas de tag de version sémantique lisible (tags datés, label de version absent). Elle est donc épinglée par digest (@sha256:…), qui fige exactement l'image validée. Conséquence : Diun ne peut pas notifier de mise à jour (un digest est immuable, aucune version « plus récente » à comparer). Vérifier manuellement les mises à jour de temps en temps :
docker pull nextcloud/aio-imaginary:latest docker images --digests nextcloud/aio-imaginary # si le digest de :latest diffère de celui épinglé -> nouvelle version dispo
Pour mettre à jour : remplacer le digest dans le compose par le nouveau, docker compose up -d, puis retester un aperçu HEIC.
Stack Diun
- Compose :
/mnt/stockage/docker/compose/diun/docker-compose.yml - Config :
/mnt/stockage/docker/compose/diun/diun.yml(contient les identifiants SMTP en clair →chmod 600) - Données :
/mnt/stockage/docker/data/diun(base de suivi des images) - Réseau Docker :
diun_net
docker-compose.yml
services: diun: image: crazymax/diun:4.29.0 container_name: diun command: serve restart: unless-stopped volumes: - /mnt/stockage/docker/data/diun:/data - /mnt/stockage/docker/compose/diun/diun.yml:/etc/diun/diun.yml:ro - /var/run/docker.sock:/var/run/docker.sock:ro environment: - TZ=Europe/Paris - LOG_LEVEL=info networks: default: name: diun_net
diun.yml
watch: workers: 10 schedule: "0 8 * * *" # vérification quotidienne à 8h00 firstCheckNotif: false providers: docker: watchByDefault: true # surveille tous les conteneurs en cours d'exécution notif: mail: host: mail.infomaniak.com port: 587 # 587 = STARTTLS, 465 = SSL/TLS ssl: false # true si port 465 insecureSkipVerify: false username: "beafrancois@beafrancois.fr" password: "<mot de passe SMTP>" from: "beafrancois@beafrancois.fr" to: "beafrancois@beafrancois.fr"
Note SMTP (Infomaniak) : le champ from doit être une adresse réellement autorisée sur le compte, sinon l'envoi est refusé. On réutilise l'adresse du compte authentifié.
Note watchByDefault : Diun surveille automatiquement tout conteneur qui tourne, sans label à ajouter. Il lit les tags réellement en cours d'exécution, pas les fichiers compose — un conteneur doit donc être recréé après épinglage pour que Diun surveille le bon tag.
Procédure : appliquer une mise à jour
À réception d'un email Diun signalant une nouvelle version :
- Identifier le service et la nouvelle version dans le mail.
- Consulter le changelog upstream (surtout Nextcloud, lldap : vérifier s'il y a des étapes de migration ou des breaking changes).
- Éditer le tag dans le
docker-compose.ymlde la stack concernée :nano /mnt/stockage/docker/compose/<stack>/docker-compose.yml
Remplacer l'ancienne version par la nouvelle sur la ligne
image:. - Appliquer :
cd /mnt/stockage/docker/compose/<stack> docker compose up -d
Docker télécharge la nouvelle image et recrée uniquement le conteneur modifié.
- Vérifier que le service tourne et répond :
docker ps --format '{{.Names}}\t{{.Image}}\t{{.Status}}' docker compose logs --tail 30 <service>
- Mettre à jour la table « Versions épinglées » de cette page.
- En cas de problème, revenir en arrière : remettre l'ancien tag dans le compose et relancer
docker compose up -d.
Commandes utiles
# Forcer une vérification Diun immédiate (sans attendre 8h) docker restart diun && docker logs diun --tail 20 # Voir les images surveillées et le résultat de la dernière analyse docker logs diun --tail 30 # Lister les versions réellement en cours d'exécution docker ps --format '{{.Names}}\t{{.Image}}' # Connaître la version d'une image qui tourne (si label présent) docker inspect --format '{{index .Config.Labels "org.opencontainers.image.version"}}' <conteneur>
Points d'attention
- Nextcloud est bare-metal, pas dans Docker — il n'est pas surveillé par Diun. Ses mises à jour se gèrent séparément (
occ upgrade), une version majeure à la fois. - Recréer
uptime-kuma(lors d'une mise à jour) le redémarre : les monitors de surveillance (gitea-ioc-watch,cpu-load-watch) clignotent brièvement puis repassent au vert au prochain heartbeat cron (~5 min). - Les fichiers de config contenant des secrets (
diun.yml) doivent rester enchmod 600. - Sauvegardes des compose avant modification : conservées dans
/root/ir/pour les stacks touchées lors de la mise en place.
