154 lines
6.3 KiB
Markdown
154 lines
6.3 KiB
Markdown
---
|
|
title: Dozzle
|
|
created: 2026-06-07
|
|
updated: 2026-06-07
|
|
type: app
|
|
tags: [catalogue, docker, container, monitoring-docker, logs, ui, beginner]
|
|
confidence: high
|
|
contested: false
|
|
sources: [https://selfh.st/apps/?tag=Docker, https://github.com/amir20/dozzle]
|
|
---
|
|
|
|
# 🐳 Dozzle
|
|
|
|
> **Le viewer de logs Docker temps réel le plus simple et le plus léger** — interface web fluide, pas de stockage, pas de config.
|
|
|
|
## 📋 Informations Générales
|
|
|
|
| Champ | Valeur |
|
|
| :--- | :--- |
|
|
| **Site web** | [dozzle.dev](https://dozzle.dev/) |
|
|
| **GitHub** | [amir20/dozzle](https://github.com/amir20/dozzle) |
|
|
| **License** | MIT |
|
|
| **Langage** | Go |
|
|
| **Étoiles GitHub** | 13,2k ⭐ |
|
|
| **Dernière MAJ** | 2026-06-05 |
|
|
| **Catégorie** | [[cat-docker\|Docker]] |
|
|
|
|
## 📝 Description
|
|
|
|
**Dozzle** est un **viewer de logs Docker en temps réel** accessible depuis une interface web. Sa philosophie : **ne rien stocker, juste afficher en streaming ce que vos conteneurs écrivent sur stdout/stderr**. Zéro indexation, zéro Elasticsearch, zéro base de données — du `docker logs -f` revisité en webapp.
|
|
|
|
Le résultat : un binaire statique Go de **~15 Mo**, qui démarre en quelques secondes et consomme quelques dizaines de Mo de RAM. Idéal pour un homelab où l'on veut **déboguer rapidement** sans déployer un Loki + Grafana.
|
|
|
|
- ✅ **Streaming temps réel** des logs de tous vos conteneurs
|
|
- ✅ **Recherche full-text** (regex possibles) dans les logs
|
|
- ✅ **Filtrage par conteneur, niveau, date**
|
|
- ✅ **Multi-hôtes** (Docker Swarm, agents distants)
|
|
- ✅ **Mode agent** pour interroger un hôte distant
|
|
- ✅ **Statistiques de logs** (volume, débit par conteneur)
|
|
- ✅ **Dark mode** natif
|
|
- ✅ **Authentification** basique (user/password, support OIDC via reverse proxy)
|
|
- ✅ **Pas de stockage** = aucun risque de saturation disque
|
|
- ✅ **Docker stats** (CPU/RAM/Net) intégrées à l'UI
|
|
- ✅ **Mobile-friendly**
|
|
|
|
**Public cible** : **tout homelaber qui veut un `tail -f` graphique**. Dozzle ne remplace pas un Loki/Grafana, mais le complète à merveille pour le debug quotidien.
|
|
|
|
**Alternatives directes** : [[app-cadvisor]] (métriques, pas logs), **Portainer** (logs basiques), **Loki + Grafana** (stack complète, lourde), **LoggiFly** (notifications de logs).
|
|
|
|
## 🚀 Installation
|
|
|
|
### Option 1 : Docker Compose (recommandé)
|
|
|
|
```yaml
|
|
# docker-compose.yml
|
|
version: '3.8'
|
|
services:
|
|
dozzle:
|
|
image: amir20/dozzle:latest
|
|
container_name: dozzle
|
|
restart: unless-stopped
|
|
security_opt:
|
|
- no-new-privileges:true
|
|
volumes:
|
|
- /var/run/docker.sock:/var/run/docker.sock:ro # ro = read-only (suffisant)
|
|
ports:
|
|
- "8888:8080"
|
|
environment:
|
|
- DOZZLE_AUTH=admin:$2y$10$XXXXXXXXXXXXXX # bcrypt hash, voir ci-dessous
|
|
# ou: DOZZLE_ENABLE_ACTIONS=true # permet start/stop depuis l'UI
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.dozzle.rule=Host(`dozzle.example.com`)"
|
|
- "traefik.http.routers.dozzle.entrypoints=websecure"
|
|
- "traefik.http.routers.dozzle.tls.certresolver=letsencrypt"
|
|
- "traefik.http.routers.dozzle.middlewares=authelia@docker" # recommandé
|
|
```
|
|
|
|
> 🔐 **Pour générer le hash bcrypt** : `htpasswd -nB admin` puis retirer le `:` et utiliser le hash `$2y$...` complet.
|
|
|
|
### Option 2 : Binaire natif (sans Docker)
|
|
|
|
```bash
|
|
# Linux / macOS / Windows : un seul binaire statique
|
|
curl -sL https://github.com/amir20/dozzle/releases/latest/download/dozzle-linux-amd64 -o dozzle
|
|
chmod +x dozzle
|
|
./dozzle
|
|
# UI sur http://localhost:8080
|
|
```
|
|
|
|
## ⚙️ Configuration Initiale
|
|
|
|
1. **Accéder à l'UI** : `http://IP:8888`
|
|
2. **Vérifier que la liste des conteneurs s'affiche** (lecture du socket Docker)
|
|
3. **Cliquer sur un conteneur** : les logs s'affichent en streaming
|
|
4. **Utiliser la barre de recherche** : regex, filtres rapides (ex : `error`, `level=warn`)
|
|
5. **Activer l'auth** : variable `DOZZLE_AUTH` ou via reverse proxy
|
|
6. **(Optionnel) Activer les actions** : `DOZZLE_ENABLE_ACTIONS=true` permet de start/stop des conteneurs depuis l'UI
|
|
|
|
## 🔄 Alternatives
|
|
|
|
### Open Source
|
|
|
|
- **Loki + Grafana** — Stack complète, indexation, alertes, retention (lourd)
|
|
- **Portainer** — Logs basiques inclus
|
|
- [[app-cadvisor]] — Métriques (pas logs)
|
|
- **LoggiFly** — Notifications de logs
|
|
- **Docker** natif — `docker logs -f` en CLI
|
|
- **Sentry** — Pour les erreurs applicatives, pas Docker en soi
|
|
|
|
### Propriétaires
|
|
|
|
- **Datadog Logs** — Payant, très complet
|
|
- **Loggly** (SolarWinds) — SaaS logging
|
|
- **Papertrail** — Cloud log management
|
|
- **Splunk** — Enterprise
|
|
|
|
### Tableau comparatif
|
|
|
|
| Critère | Dozzle | Loki+Grafana | Portainer logs | `docker logs` |
|
|
| :--- | :--- | :--- | :--- | :--- |
|
|
| Stockage logs | ❌ (streaming) | ✅ (retention) | ❌ | ❌ |
|
|
| Recherche | ✅ (regex) | ✅ (LogQL puissant) | Basique | ❌ |
|
|
| UI web | ✅ (élégante) | ✅ (Grafana) | ✅ (basique) | ❌ |
|
|
| RAM/CPU | ~30 Mo | ~500 Mo+ | Inclus | 0 |
|
|
| Setup | 2 min | 30 min+ | 5 min | 0 |
|
|
| Alertes | ❌ | ✅ | ❌ | ❌ |
|
|
| Licence | MIT | AGPL | Zlib (CE) | Apache-2.0 |
|
|
|
|
**Verdict** : **Dozzle est imbattable pour le debug quotidien**. Pour des besoins de rétention et d'alertes, ajouter Loki+Grafana à côté.
|
|
|
|
## 🔐 Sécurité
|
|
|
|
- ⚠️ **Socket Docker exposé** : Dozzle a besoin du socket pour lister les conteneurs et lire les logs. **Montez-le en `:ro`** (read-only) — Dozzle n'a pas besoin d'écrire.
|
|
- **Auth obligatoire** en exposition web : activez `DOZZLE_AUTH` ou passez par un middleware [[app-traefik]] (Authelia, Authentik, oauth2-proxy).
|
|
- **Activer `DOZZLE_NO_LOG_LEVEL=true`** si vous ne voulez pas que Dozzle injecte des niveaux dans les logs.
|
|
- **Ne pas activer `DOZZLE_ENABLE_ACTIONS`** si vous exposez Dozzle publiquement — risque de DoS par arrêt de conteneurs critiques.
|
|
- **Restriction IP / VPN** : idéal est de n'exposer Dozzle que sur le réseau interne ou via Tailscale.
|
|
|
|
## 📚 Ressources
|
|
|
|
- [GitHub amir20/dozzle](https://github.com/amir20/dozzle)
|
|
- [Site officiel](https://dozzle.dev/)
|
|
- [Documentation](https://dozzle.dev/guide/getting-started)
|
|
- [Démo live](https://demo.dozzle.dev/)
|
|
|
|
## Pages Liées
|
|
- [[cat-docker]] — Catégorie Docker
|
|
- [[app-cadvisor]] — Métriques conteneurs
|
|
- [[app-portainer]] — Alternative plus complète
|
|
- [[app-traefik]] — Reverse proxy
|
|
- [[observabilite]] — Stack observabilité
|
|
- [[securisation-home-lab]] — Durcir l'infra
|