Files
wiki/Catalogue-Self-Hosted/apps/app-traefik-log-dashboard.md
T
2026-06-09 18:40:21 +02:00

216 lines
9.4 KiB
Markdown

---
title: Traefik Log Dashboard
created: 2026-06-06
updated: 2026-06-06
type: app
tags: [catalogue, reverse-proxy, monitoring, logs, dashboard, traefik, observabilite]
confidence: high
contested: false
sources: [https://selfh.st/apps/?tag=Reverse+Proxy, https://github.com/hhftechnology/traefik-log-dashboard]
---
# 🚦 Traefik Log Dashboard
> **Dashboard temps réel pour analyser les logs Traefik avec géolocalisation IP, codes HTTP et métriques par service**. Stack React (Shadcn UI) + agent Go haute performance, supporte les déploiements multi-instances Traefik.
## 📋 Informations Générales
| Champ | Valeur |
| :--- | :--- |
| **Site web** | [hhf.technology](https://hhf.technology/) |
| **GitHub** | [hhftechnology/traefik-log-dashboard](https://github.com/hhftechnology/traefik-log-dashboard) |
| **License** | AGPL-3.0 |
| **Langage** | TypeScript (75.4 %), Go (20.2 %) |
| **Étoiles GitHub** | 779 ⭐ |
| **Dernière MAJ** | 2026-04-14 (v3.1.1) |
| **Catégorie** | [[cat-reverse-proxy|Reverse Proxy]], Monitoring, Observabilité |
## 📝 Description
**Traefik Log Dashboard** est un **dashboard analytique dédié à Traefik** qui parse les logs d'accès et d'erreur du reverse proxy pour fournir une visualisation temps-réel des flux : top IPs, top services, codes de réponse, géolocalisation sur **globe 3D interactif**, alertes Discord, et bien plus. C'est l'outil de référence pour quiconque veut **comprendre son trafic** sans exporter vers un ELK/Grafana/Loki lourd à maintenir.
L'architecture est en **deux composants** :
- **Agent (Go, ~15 MB)** : un service léger qui **tail les logs Traefik en JSON** (CLF/JSON supportés), parse incrémentalement avec **position tracking** (pas de reparse à chaque redémarrage) et expose une **API REST** (port 5000) consommée par le dashboard.
- **Dashboard (Vite/React, ~151 MB)** : l'UI web servie sur le port 3000, construite avec **Shadcn UI** et **Recharts** pour les graphes.
**Caractéristiques principales** :
-**Globe 3D interactif** : visualisation géographique des requêtes par pays
-**Multi-agent** : un dashboard peut centraliser les logs de **plusieurs instances Traefik** (ex: cluster multi-host, plusieurs sites)
-**Filtres avancés** : include/exclude, filtres géographiques, regex custom
-**Alertes Discord** : webhooks, résumés quotidiens, seuils configurables
-**GeoIP automatique** sans base MaxMind externe (intégré)
-**Mobile app** : iOS et Android (apps natives officielles)
-**CLI TUI** (Bubble Tea) : consulter les stats depuis un terminal SSH
-**Compatibilité Traefik v2 et v3**, intégration **Pangolin** native
-**Auth Pangolin / Basis** supportée pour sécuriser l'accès
**Public cible** : opérateurs de Traefik qui veulent **un outil clé en main** au lieu d'assembler Grafana + Loki + Promtail + GeoIP, ou d'utiliser des SaaS comme Datadog. Particulièrement pertinent pour les setups **Pangolin** (la même équipe édite Middleware Manager, Traefik Log Dashboard et d'autres outils HHF).
## 🚀 Installation
### Prérequis : activer les access logs dans Traefik
```yaml
# traefik.yml (statique)
accessLog:
filePath: "/var/log/traefik/access.log"
format: json
bufferingSize: 100
fields:
defaultMode: keep
headers:
defaultMode: drop
names:
Authorization: redact
Cookie: redact
```
> ⚠️ `format: json` est **fortement recommandé** pour le parsing par l'agent. Le format `common` est supporté mais limité.
### Option 1 : Docker Compose (recommandé)
```yaml
# docker-compose.yml
version: '3.8'
services:
traefik-agent:
image: hhftechnology/traefik-log-dashboard-agent:latest
container_name: traefik-log-dashboard-agent
restart: unless-stopped
ports:
- "5000:5000"
volumes:
- /var/log/traefik:/logs:ro # logs Traefik en read-only
- ./data/positions:/data # position tracking
environment:
- TRAEFIK_LOG_DASHBOARD_ACCESS_PATH=/logs/access.log
- TRAEFIK_LOG_DASHBOARD_ERROR_PATH=/logs/traefik.log
- TRAEFIK_LOG_DASHBOARD_AUTH_TOKEN=changeme-32-hex
- TRAEFIK_LOG_DASHBOARD_SYSTEM_MONITORING=true
- TRAEFIK_LOG_DASHBOARD_LOG_FORMAT=json
healthcheck:
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:5000/api/logs/status"]
interval: 2m
timeout: 10s
retries: 3
networks:
- proxy
traefik-dashboard:
image: hhftechnology/traefik-log-dashboard:latest
container_name: traefik-log-dashboard
restart: unless-stopped
ports:
- "3000:3000"
volumes:
- ./data/dashboard:/app/data
- ./data/positions:/data
environment:
- AGENT_API_URL=http://traefik-agent:5000
- AGENT_API_TOKEN=changeme-32-hex # MÊME token que l'agent
- AGENT_NAME=Default Agent
- NODE_ENV=production
- PORT=3000
- NEXT_PUBLIC_MAX_LOGS_DISPLAY=500
depends_on:
traefik-agent:
condition: service_healthy
networks:
- proxy
networks:
proxy:
external: true
```
### Variante Traefik (exposer le dashboard derrière Traefik)
```yaml
# ajout au docker-compose.yml ci-dessus
traefik-dashboard:
# ... (même bloc)
labels:
- "traefik.enable=true"
- "traefik.docker.network=proxy"
- "traefik.http.routers.tld.rule=Host(`logs.example.com`)"
- "traefik.http.routers.tld.entrypoints=websecure"
- "traefik.http.routers.tld.tls.certresolver=letsencrypt"
- "traefik.http.services.tld.loadbalancer.server.port=3000"
# optionnel : auth basique
- "traefik.http.routers.tld.middlewares=auth"
- "traefik.http.middlewares.auth.basicauth.users=admin:$$apr1$$abc..."
```
> 💡 **Générer un token sécurisé** : `openssl rand -hex 32` (32 octets en hexadécimal = 64 caractères). Utiliser la **même valeur** pour `TRAEFIK_LOG_DASHBOARD_AUTH_TOKEN` (côté agent) et `AGENT_API_TOKEN` (côté dashboard).
## ⚙️ Configuration Initiale
1. **S'assurer que Traefik écrit des logs JSON** dans `/var/log/traefik/access.log`.
2. **Monter ce dossier en read-only** dans le conteneur agent (`/logs:ro`).
3. **Créer le réseau externe** `proxy` s'il n'existe pas : `docker network create proxy`.
4. **Lancer** : `docker compose up -d`.
5. **Accéder au dashboard** : `http://YOUR_HOST:3000` (ou `https://logs.example.com` si derrière Traefik).
6. **Configurer l'agent** depuis l'UI : nom, timezone, alertes Discord, filtres.
7. **Ajouter d'autres agents** (multi-instance) via le menu Settings → Agents.
## 🔄 Alternatives
### Open Source
- [[app-traefik]] — UI native de Traefik (basique, pas d'analytique)
- **Grafana + Loki + Promtail** — combo standard mais lourd
- **Apache Superset + Traefik logs** — analytics SQL sur logs
- **GoAccess** — analyseur de logs terminal/HTML léger
- **Matomo / Plausible** — orientés web analytics (pas logs reverse proxy)
### Propriétaires (ce que Traefik Log Dashboard remplace)
- **Datadog Log Management** (à partir de 0,10 $/GB ingéré)
- **New Relic Logs**
- **Splunk Cloud**
- **Sumo Logic**
- **Better Stack / Logtail**
### Comparaison rapide
| Critère | Traefik Log Dashboard | Grafana + Loki | Datadog |
| :--- | :--- | :--- | :--- |
| Complexité | ✅ Faible (2 conteneurs) | ⚠️ Moyenne | ✅ Aucune (SaaS) |
| Coût | Gratuit (self-hosted) | Gratuit | Payant (volumique) |
| Globe 3D géo | ✅ | ❌ (carte basique) | ✅ |
| Multi-agent | ✅ Natif | ✅ (Promtail) | ✅ |
| Alertes Discord | ✅ | ✅ (Alertmanager) | ✅ (multi-canal) |
| Recherche full-text | Basique | ✅ (LogQL) | ✅ |
| License | AGPL-3.0 | AGPL-3.0 (Loki) | Propriétaire |
**Verdict** : **Traefik Log Dashboard** pour une stack **légère clé en main** dédiée à Traefik. **Grafana + Loki** pour des besoins de **requêtage avancé** et un écosystème large. **Datadog** pour une solution **managée sans effort** mais payante.
## 🔐 Sécurité
- **Token partagé agent ↔ dashboard** (32+ caractères hex) : rotation possible depuis l'UI
- **Auth Pangolin / Basis** : recommandée pour l'accès à l'UI web
- **Logs en lecture seule** dans l'agent (`:ro`) : impossible d'altérer les logs depuis l'agent
- **Redaction de headers sensibles** : configurer Traefik pour `drop` les `Authorization` et `Cookie` dans les logs
- **Discord webhooks** : utiliser des webhooks privés (canal restreint), pas publics
- ⚠️ **L'agent expose une API REST non chiffrée** par défaut : à mettre derrière un réseau privé ou via HTTPS reverse proxy
- ⚠️ **AGPL-3.0** : si vous modifiez et exposez publiquement le service, vous devez publier vos modifications
## 📚 Ressources
- [Quick Start Guide officiel](https://github.com/hhftechnology/traefik-log-dashboard/blob/main/QUICK_START_GUIDE.md)
- [Helm Charts (Kubernetes)](https://github.com/hhftechnology/traefik-log-dashboard/tree/main/charts)
- [Documentation Traefik access logs](https://doc.traefik.io/traefik/observability/access-logs/)
- [Mobile app iOS / Android](https://github.com/hhftechnology/traefik-log-dashboard) (liens dans le README)
- [Forum HHF Technology](https://forum.hhf.technology/tag/traefik-log-dashboard)
## Pages Liées
- [[cat-reverse-proxy]] — Catégorie Reverse Proxy
- [[app-traefik]] — Le reverse proxy dont on analyse les logs
- [[app-middleware-manager]] — du même éditeur HHF
- [[monitoring]] — concepts d'observabilité
- [[comparatif-reverse-proxy]] — Comparaison détaillée
- [[loki-promtail]] — alternative Grafana stack