167 lines
7.0 KiB
Markdown
167 lines
7.0 KiB
Markdown
---
|
|
title: Diun
|
|
created: 2026-06-07
|
|
updated: 2026-06-07
|
|
type: app
|
|
tags: [catalogue, docker, container, update, monitoring-docker, notifications, cron]
|
|
confidence: high
|
|
contested: false
|
|
sources: [https://selfh.st/apps/?tag=Docker, https://github.com/crazy-max/diun]
|
|
---
|
|
|
|
# 🐳 Diun
|
|
|
|
> **Le notificateur d'updates d'images Docker en Go** — soyez prévenu à chaque nouvelle version disponible sur le registry.
|
|
|
|
## 📋 Informations Générales
|
|
|
|
| Champ | Valeur |
|
|
| :--- | :--- |
|
|
| **Site web** | [crazymax.dev/diun](https://crazymax.dev/diun/) |
|
|
| **GitHub** | [crazy-max/diun](https://github.com/crazy-max/diun) |
|
|
| **License** | MIT |
|
|
| **Langage** | Go |
|
|
| **Étoiles GitHub** | 4,7k ⭐ |
|
|
| **Dernière MAJ** | 2026-06-05 |
|
|
| **Catégorie** | [[cat-docker\|Docker]] |
|
|
|
|
## 📝 Description
|
|
|
|
**Diun** (Docker Image Update Notifier) est un outil écrit en Go qui **scanne périodiquement les images Docker que vous utilisez** (via votre `docker-compose.yml` ou ses propres labels) et **vous notifie** quand une nouvelle version est disponible sur le registry (Docker Hub, GHCR, Quay, ECR, registries privés…). C'est le complément idéal de [[app-wud]] avec un focus sur la **détection seule**, pas la mise à jour automatique.
|
|
|
|
Diun est **léger** (binaire statique < 20 Mo), **configurable via YAML**, et **supporte +90 providers de notification** (Discord, Telegram, Slack, Matrix, email, webhook, Gotify, Ntfy, Pushover…). Il sait aussi **comparer les tags par regex**, suivre les tags `latest`/`stable`, et **ignorer certaines images** (jeux de données, images locales).
|
|
|
|
- ✅ **Scan périodique** configurable (par défaut : 6h)
|
|
- ✅ **Multi-registries** : Docker Hub, GHCR, Quay, ECR, ACR, GCR, Harbor, registries privés
|
|
- ✅ **Multi-providers de notification** : Discord, Telegram, Slack, Matrix, email, Gotify, Ntfy, +80 autres
|
|
- ✅ **Comparaison par tag exact, regex, ou semver**
|
|
- ✅ **Labels Docker** : `diun.enable=true` pour scanner une image, `diun.include_tags` pour filtrer
|
|
- ✅ **Cron interne** (pas de dépendance externe)
|
|
- ✅ **API HTTP** (statut, déclenchement manuel)
|
|
- ✅ **Base SQLite** (zéro config)
|
|
- ✅ **Watchtower-compatible** : peut notifier Watchtower pour déclencher l'update
|
|
|
|
**Public cible** : **homelabers et équipes DevOps** qui veulent **savoir** quand des MAJ sont dispos, sans pour autant auto-updater. Sépare clairement la **détection** (Diun) de **l'action** (Watchtower, Diun auto-update…).
|
|
|
|
**Alternatives directes** : [[app-wud]] (notification + auto-update), **Watchtower** (update auto, pas de notif fine), **Cupdate** (zero-config, plus simple), **Cup** (alertes simples).
|
|
|
|
## 🚀 Installation
|
|
|
|
### Option 1 : Docker Compose (recommandé)
|
|
|
|
```yaml
|
|
# docker-compose.yml
|
|
version: '3.8'
|
|
services:
|
|
diun:
|
|
image: crazymax/diun:latest
|
|
container_name: diun
|
|
restart: unless-stopped
|
|
security_opt:
|
|
- no-new-privileges:true
|
|
command: serve
|
|
environment:
|
|
- DIUN_WATCH_SCHEDULE=0 9 * * * # tous les jours à 9h
|
|
- DIUN_WATCH_JITTER=30s
|
|
- DIUN_PROVIDERS_DOCKER=true
|
|
- DIUN_PROVIDERS_DOCKER_WATCHBYDEFAULT=true
|
|
- DIUN_NOTIF_DISCORD_WEBHOOKURL=https://discord.com/api/webhooks/...
|
|
volumes:
|
|
- /var/run/docker.sock:/var/run/docker.sock:ro # read-only suffit
|
|
- diun_data:/data
|
|
- /var/lib/docker/volumes:/var/lib/docker/volumes:ro # pour scanner les stacks
|
|
- ./diun.yml:/etc/diun/diun.yml:ro # config optionnelle
|
|
|
|
volumes:
|
|
diun_data:
|
|
```
|
|
|
|
### Option 2 : Binaire natif
|
|
|
|
```bash
|
|
curl -L https://github.com/crazy-max/diun/releases/latest/download/diun-linux-amd64 -o diun
|
|
chmod +x diun
|
|
./diun serve
|
|
```
|
|
|
|
### Fichier de config `diun.yml` (optionnel mais recommandé)
|
|
|
|
```yaml
|
|
providers:
|
|
docker:
|
|
watchByDefault: true
|
|
watchStopped: true
|
|
|
|
notif:
|
|
discord:
|
|
webhookURL: https://discord.com/api/webhooks/...
|
|
telegram:
|
|
token: "123456:ABC-DEF..."
|
|
chatID: -1001234567890
|
|
```
|
|
|
|
## ⚙️ Configuration Initiale
|
|
|
|
1. **Choisir sa méthode de scan** : par défaut, Diun lit le socket Docker et scanne tous les conteneurs en cours.
|
|
2. **Ajouter des labels** sur les stacks à surveiller (par ex. `diun.enable=true`, `diun.include_tags=^v[0-9.]+$`).
|
|
3. **Configurer au moins un provider de notification** : *Discord* recommandé pour débuter, *Gotify* ou *Ntfy* pour du self-hosted pur.
|
|
4. **Tester la notif** : `docker exec diun diun notify` (depuis le conteneur).
|
|
5. **Définir le cron** : `DIUN_WATCH_SCHEDULE=0 */6 * * *` = toutes les 6h.
|
|
6. **Vérifier l'API** : `curl http://diun:8055/api/v1/diun/status` (si exposée).
|
|
|
|
## 🔄 Alternatives
|
|
|
|
### Open Source
|
|
|
|
- [[app-wud]] — Notification + auto-update (plus large scope)
|
|
- **Watchtower** — Update automatique (peut notifier, mais pas son cœur)
|
|
- **Cupdate** — Zero-config, UI web minimaliste
|
|
- **Cup** — Mises à jour Docker simplifiées
|
|
- **Docker Update** (portainer) — Natif Portainer
|
|
- **Renovate** / **Dependabot** — Updates, mais pour le code (pas conteneurs en runtime)
|
|
|
|
### Propriétaires
|
|
|
|
- **Docker Hub Pro** — Webhooks de MAJ
|
|
- **Snyk Container** — Vuln + updates, payant
|
|
- **JFrog Xray** — Enterprise
|
|
- **Prisma Cloud** (Palo Alto) — Cloud security
|
|
- **Aqua Security** — Container security
|
|
- **Sysdig Secure** — Runtime security + MAJ
|
|
|
|
### Tableau comparatif
|
|
|
|
| Critère | Diun | WUD | Watchtower | Cupdate | Cup |
|
|
| :--- | :--- | :--- | :--- | :--- | :--- |
|
|
| Notification seule | ✅ | ✅ (par défaut) | ⚠️ basique | ✅ | ✅ |
|
|
| Update auto | ❌ (via Watchtower) | ✅ (option) | ✅ | ❌ | ✅ (option) |
|
|
| Multi-registry | ✅ (tous) | ✅ | ✅ | ✅ | ✅ |
|
|
| Regex tags | ✅ | ✅ | ⚠️ | ❌ | ❌ |
|
|
| Config | YAML | YAML | Env | UI web | UI web |
|
|
| Notifications | +90 | +15 | Discord/email/SMTP | Discord/Slack | Discord/Telegram |
|
|
| Licence | MIT | MIT | Apache-2.0 | MIT | MIT |
|
|
|
|
**Verdict** : **Diun est le plus flexible pour la détection pure** : regex de tags, multi-registries, +90 notif providers, base SQLite stable. Pour *auto-update*, ajouter Watchtower ou utiliser [[app-wud]].
|
|
|
|
## 🔐 Sécurité
|
|
|
|
- ⚠️ **Le socket Docker est lu** pour découvrir les conteneurs. **Montez-le en `:ro`** (read-only) — Diun n'a pas besoin d'écrire.
|
|
- **Pas de credentials en clair** : utilisez des fichiers `*.env` montés en `:ro` ou les secrets Docker (`docker secret`).
|
|
- **HTTPS pour les webhooks** : ne pas notifier en HTTP vers des endpoints non chiffrés.
|
|
- **Limiter la fréquence** : `DIUN_WATCH_SCHEDULE` à 6h minimum pour ne pas saturer les registries (Docker Hub a des rate limits).
|
|
- **Auto-update désactivé par défaut** : c'est un choix de sécurité — la mise à jour auto peut casser une prod sans surveillance.
|
|
|
|
## 📚 Ressources
|
|
|
|
- [GitHub crazy-max/diun](https://github.com/crazy-max/diun)
|
|
- [Documentation officielle](https://crazymax.dev/diun/)
|
|
- [Configuration providers](https://crazymax.dev/diun/config/providers/)
|
|
|
|
## Pages Liées
|
|
- [[cat-docker]] — Catégorie Docker
|
|
- [[app-wud]] — Concurrent (notif + auto-update)
|
|
- [[app-portainer]] — UI complète
|
|
- [[app-traefik]] — Reverse proxy
|
|
- [[observabilite]] — Stack d'observabilité
|
|
- [[securisation-home-lab]] — Durcir l'infra
|