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