Skip to content

Traefik Manager

A self-hosted web UI for managing and monitoring your Traefik reverse proxy — add routes, manage middlewares, view TLS certificates, and inspect live traffic, all without editing YAML by hand.


Get Started

  • Docker


    Deploy with Docker Compose — minimal setup, pre-built image on GHCR.

    Docker guide

  • Podman


    Rootless containers, Quadlet/systemd, SELinux volume labels.

    Podman guide

  • Linux (native)


    Run directly on the host with Python + systemd. No container runtime needed.

    Linux guide


Management

These tabs are always visible. They let you read and write your Traefik dynamic.yml.

Tab Description
Routes Create, edit, and delete HTTP, TCP, and UDP routes
Middlewares Create and manage middlewares with built-in templates
Services Read-only view of all services across every provider

Monitoring

Optional tabs — each requires a file mounted into the container.

Tab Mount required Description
Certificates acme.json:/app/acme.json:ro TLS certificates with expiry tracking
Plugins traefik.yml:/app/traefik.yml:ro Plugins declared in your static config
Logs access.log:/app/logs/access.log:ro Live Traefik access log tail

Providers

Read-only tabs that pull live data from the Traefik API. No extra mounts needed — just a working API connection.

Orchestrators

Tab Provider
Docker docker
Kubernetes kubernetesCRD / kubernetesIngress / kubernetesGateway
Swarm swarm
Nomad nomad
ECS ecs
Consul Catalog consulCatalog

Key-Value Stores

Tab Provider
Redis redis
etcd etcd
Consul KV consul
ZooKeeper zooKeeper

Config-based

Tab Provider
HTTP Provider http
File (external) file

Traefik Manager's own routes are automatically excluded from the File provider tab.


Configuration

Page Description
manager.yml Full settings file reference — all keys, types, and defaults
Environment Variables All supported environment variables with override behaviour

Operations

Page Description
Reset Password CLI reset, TOTP recovery, and manual reset via manager.yml

Traefik provider config snippets

Minimal additions to your traefik.yml to enable each provider tab.

providers:
  docker:
    exposedByDefault: false
providers:
  swarm:
    exposedByDefault: false
providers:
  kubernetesCRD: {}
  kubernetesIngress: {}
providers:
  nomad:
    endpoint:
      address: "http://nomad:4646"
providers:
  ecs:
    region: us-east-1
    clusters:
      - my-cluster
providers:
  consulCatalog:
    endpoint:
      address: "consul:8500"
    exposedByDefault: false
providers:
  redis:
    endpoints:
      - "redis:6379"
providers:
  etcd:
    endpoints:
      - "etcd:2379"
providers:
  consul:
    endpoints:
      - "consul:8500"
providers:
  zooKeeper:
    endpoints:
      - "zookeeper:2181"
providers:
  http:
    endpoint: "https://config.example.com/traefik"
    pollInterval: "30s"
providers:
  file:
    directory: /etc/traefik/dynamic/
    watch: true
accessLog:
  filePath: "/logs/access.log"
  format: common

Tech Stack

Layer Technology
Backend Python 3.11 · Flask · Gunicorn
Config ruamel.yaml (preserves comments)
Auth bcrypt · pyotp (TOTP) · Flask sessions · CSRF
Frontend Vanilla JS · Tailwind CSS · Phosphor Icons
Container Docker · Alpine Linux