Initial vault setup
This commit is contained in:
@@ -0,0 +1,166 @@
|
||||
---
|
||||
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
|
||||
Reference in New Issue
Block a user