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

9.4 KiB


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

📝 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

# 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é)

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

# 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

Pages Liées