Traefik Log Dashboard

Docker Compose

Deploy with Docker Compose

Prerequisites

  • Docker and Docker Compose v2+
  • Traefik configured with JSON access logs

Deployment

Create directory structure

mkdir -p traefik-dashboard/data/{logs,positions}
cd traefik-dashboard

Generate authentication token

openssl rand -hex 32

Save this token — it secures communication between the dashboard and agent.

Create docker-compose.yml

services:
  traefik-agent:
    image: hhftechnology/traefik-log-dashboard-agent:latest
    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_TOKEN_HERE
      - TRAEFIK_LOG_DASHBOARD_SYSTEM_MONITORING=true
      - TRAEFIK_LOG_DASHBOARD_LOG_FORMAT=json
      - PORT=5000
    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:
      - traefik-network

  traefik-dashboard:
    image: hhftechnology/traefik-log-dashboard:latest
    restart: unless-stopped
    ports:
      - "3000:3000"
    volumes:
      - dashboard-data:/data
    environment:
      - AGENT_1_NAME=Primary Agent
      - AGENT_1_URL=http://traefik-agent:5000
      - AGENT_1_TOKEN=YOUR_TOKEN_HERE
      - DASHBOARD_AGENTS_ENV_ONLY=true
    depends_on:
      traefik-agent:
        condition: service_healthy
    networks:
      - traefik-network

volumes:
  dashboard-data:

networks:
  traefik-network:
    external: true

Start services

docker network create traefik-network 2>/dev/null || true
docker compose up -d

See Environment Variables for all available configuration options.

Multi-Agent Setup

Deploy an agent alongside each Traefik instance and add them via environment variables:

environment:
  - AGENT_1_NAME=Production
  - AGENT_1_URL=http://traefik-agent-prod:5000
  - AGENT_1_TOKEN=prod-token
  - AGENT_2_NAME=Staging
  - AGENT_2_URL=http://traefik-agent-staging:5000
  - AGENT_2_TOKEN=staging-token

Traefik Configuration

Configure Traefik to output JSON access logs:

# traefik.yml
accessLog:
  filePath: "/logs/access.log"
  format: json
  bufferingSize: 100

  fields:
    defaultMode: keep
    names:
      ClientUsername: drop
    headers:
      defaultMode: keep
      names:
        Authorization: drop
        Cookie: drop

Next Steps

On this page