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