| Component | Description | Image Size (linux/amd64) |
|---|---|---|
| Agent | Lightweight Go service that parses Traefik logs and exposes metrics via REST API | 15MB |
| Dashboard | Vite web UI with real-time analytics, charts, and geographic visualization | 151MB |
| CLI | Terminal-based dashboard using Bubble Tea (optional) | N/A |
image.png
Get started in under 5 minutes with Docker Compose:
mkdir -p traefik-dashboard/data/{logs,positions,dashboard}
cd traefik-dashboardservices:
traefik-agent:
image: hhftechnology/traefik-log-dashboard-agent:latest
container_name: traefik-log-dashboard-agent
restart: unless-stopped
ports:
- "5000:5000"
volumes:
- ./data/logs:/logs:ro
- ./data/positions:/data
environment:
- TRAEFIK_LOG_DASHBOARD_ACCESS_PATH=/logs/access.log
- TRAEFIK_LOG_DASHBOARD_ERROR_PATH=/logs/traefik.log
- TRAEFIK_LOG_DASHBOARD_AUTH_TOKEN=your_secure_token_here
- 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
start_period: 30s
networks:
- pangolin
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 Configuration - REPLACE WITH YOUR TOKEN
- AGENT_API_URL=http://traefik-agent:5000
- AGENT_API_TOKEN=d41d8cd98f00b204e9800998ecf8427e
- AGENT_NAME=Default Agent
# Node Environment
- NODE_ENV=production
- PORT=3000
# Display Configuration
- NEXT_PUBLIC_SHOW_DEMO_PAGE=true
- NEXT_PUBLIC_MAX_LOGS_DISPLAY=500
depends_on:
traefik-agent:
condition: service_healthy
networks:
- pangolin
networks:
pangolin:
external: trueopenssl rand -hex 32Update both TRAEFIK_LOG_DASHBOARD_AUTH_TOKEN and AGENT_API_TOKEN with this value.
# Create network if it doesn't exist
docker network create traefik-network 2>/dev/null || true
# Start services
docker compose up -dOpen http://localhost:3000 in your browser.
- Multi-Agent Architecture - Manage multiple Traefik instances from a single dashboard
- Interactive 3D Globe - Geographic visualization with smooth map transitions
- Automatic GeoIP - IP geolocation works out of the box (no setup required)
- Advanced Filtering - Include/exclude modes, geographic and custom filters
- Background Alerting - Discord webhooks, daily summaries, threshold alerts
- High Performance - Go-based agent, optimized log parsing, position tracking
- Terminal Dashboard - Beautiful CLI with Bubble Tea (optional)
| Variable | Description | Default |
|---|---|---|
TRAEFIK_LOG_DASHBOARD_ACCESS_PATH |
Path to access log file/directory | /var/log/traefik/access.log |
TRAEFIK_LOG_DASHBOARD_ERROR_PATH |
Path to error log file/directory | /var/log/traefik/traefik.log |
TRAEFIK_LOG_DASHBOARD_AUTH_TOKEN |
Authentication token | Required |
TRAEFIK_LOG_DASHBOARD_SYSTEM_MONITORING |
Enable system monitoring | true |
TRAEFIK_LOG_DASHBOARD_LOG_FORMAT |
Log format (json or common) |
json |
PORT |
Agent listen port | 5000 |
| Variable | Description | Default |
|---|---|---|
AGENT_1_URL |
First environment agent URL | Required (or DASHBOARD_AGENTS_JSON) |
AGENT_1_TOKEN |
First environment agent token | Optional |
AGENT_1_NAME |
First environment agent name | Agent 1 |
AGENT_2_URL, AGENT_3_URL, ... |
Additional environment agents | Optional |
DASHBOARD_AGENTS_ENV_ONLY |
Disable UI/API agent mutations | false |
DASHBOARD_REFRESH_INTERVAL_MS |
Refresh interval | 5000 |
DASHBOARD_MAX_LOGS_DISPLAY |
Max logs retained in dashboard state | 1000 |
DASHBOARD_TRAFFIC_TOP_ITEMS_LIMIT |
Top-N shown in Traffic lists | 10 |
DASHBOARD_PARSER_TREND_WINDOW_MINUTES |
Parser sparkline trend window (15-30) | 30 |
SHOW_DEMO_PAGE |
Show demo mode link | true |
GEOIP_LOOKUP_ENABLED |
Enable dashboard GeoIP lookup API | true |
GEOIP_PROVIDER_BASE_URL |
GeoIP provider base URL | https://ipwho.is |
GEOIP_PROVIDER_URLS |
Comma-separated GeoIP provider fallback list | Uses GEOIP_PROVIDER_BASE_URL |
GEOIP_LOCAL_DB_PATH |
Optional local MaxMind MMDB path | "" (disabled) |
GEOIP_UNKNOWN_CACHE_TTL_MS |
Cache TTL for unresolved lookups | 300000 |
Legacy fallback (still supported): AGENT_API_URL, AGENT_API_TOKEN, AGENT_NAME.
GeoIP mode: The dashboard uses a hybrid resolver chain:
- Optional local MMDB (
GEOIP_LOCAL_DB_PATH)- HTTP provider fallback (
GEOIP_PROVIDER_URLS/GEOIP_PROVIDER_BASE_URL)
Example production GeoIP configuration:
services:
traefik-dashboard:
volumes:
- ./data/geoip:/geoip:ro
environment:
- GEOIP_LOCAL_DB_PATH=/geoip/GeoLite2-City.mmdb
- GEOIP_PROVIDER_URLS=https://ipwho.is,https://ip-api.com/json
- GEOIP_UNKNOWN_CACHE_TTL_MS=300000Full documentation available at: https://traefik-log-dashboard.hhf.technology
Or run locally:
cd docs && npm install && npm run dev- Documentation: https://traefik-log-dashboard.hhf.technology
- Discord: Join our community
- GitHub Issues: Report bugs
- Docker Hub: Agent | Dashboard
This project is licensed under the GNU AFFERO GENERAL PUBLIC LICENSE - see the LICENSE file for details.
Made with ❤️ for the Traefik community
⭐ Star this repo if you find it helpful!