A real-time dashboard for analyzing Traefik logs in UI with IP geolocation, status code analysis, and service metrics. Built with React (Shadcn UI) and Node.js.
A real-time dashboard for analyzing Traefik logs in UI with IP geolocation, status code analysis, and service metrics. Built with React (Shadcn UI) and Node.js.
| 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-dashboard
…
openssl rand -hex 32
Update 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 -d
Open http://localhost:3000 in your browser.
| 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=300000
Full documentation available at: https://traefik-log-dashboard.hhf.technology
Or run locally:
cd docs && npm install && npm run dev
This project is licensed under the GNU AFFERO GENERAL PUBLIC LICENSE - see the LICENSE file for details.
No open issues yet, or sync has not completed.