---
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
