Skip to content

Overview

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

One command installs the tm CLI and runs tm install, which sets up Traefik and Traefik Manager together, Traefik Manager on its own, or the agent on a remote host.

bash
curl -fsSL https://get-traefik.xyzlab.dev | bash

tm then manages the install: tm status, tm update, tm reconfigure, tm doctor.

What the installer sets up →

Install it yourself


Management

Always visible. These tabs read and write your Traefik dynamic config.

TabDescription
RoutesCreate, edit, delete, and enable/disable HTTP, TCP, and UDP routes
MiddlewaresCreate and manage middlewares with built-in templates
ServicesRead-only view of all services across every provider

Multiple config files - mount several dynamic config files with CONFIG_DIR or CONFIG_PATHS. A dropdown in the route and middleware forms picks the file each entry is written to. See Environment Variables.


Tabs live in the left side nav, grouped Traffic, Observability, Infrastructure and Providers. Settings opens from its foot, or with Shift + P.

Layout is set under Settings - Interface - Layout, instance-wide.

LayoutContentDetail panel
Fluid (default)Fills the screenPushes the page
FixedCapped widthSlides over

Stat panel

Above the content on the Dashboard, Routes, Middlewares and Services tabs sits a panel that answers one question: is anything wrong right now.

A verdict line sums up every problem in plain language and names the providers responsible. Four cards - HTTP routers, TCP/UDP routers, services and middlewares - each show a total, a strip with one cell per object worst-first, and counts you can click to jump straight to the broken ones. A provider strip scopes all four cards to one provider in a click. Below them, entry points list their protocol, flags, address and bound router count, over a runtime footer with the Traefik version, uptime and whether metrics, access logs and tracing are on.

Colour is rationed: a healthy install is almost monochrome, so anything coloured is worth reading.

Choose which of the four tabs show it under Settings - Interface - Show on, and switch to a denser layout with Compact stat cards. The Logs and CrowdSec analytics panels use the same visual language.


Static Config Editor

Edit your Traefik static config (traefik.yml) from the UI - no SSH needed. Changes are staged until you save, every save is backed up first, and a one-click restart applies them via your configured restart method.

What you can manage:

  • Entrypoints - ports, redirects, trusted IPs, PROXY protocol, TLS defaults, middleware chains, timeouts
  • Certificate resolvers - ACME challenges, custom CA, key type, EAB, DNS propagation
  • Providers - Docker and File toggles, other providers via templates, throttle duration
  • Plugins (remote and local), API and dashboard, logging with rotation and access-log filters
  • Observability (ping, Prometheus, OTLP tracing) and system options (servers transport, rule syntax)
  • Raw YAML editor (Monaco/VS Code engine) for anything else

Works identically for remote agents - the sections read and write the active agent's own traefik.yml.

Setup required:

RequirementDetails
Mount traefik.yml read-write-v /path/to/traefik.yml:/app/traefik.yml (no :ro)
Set STATIC_CONFIG_PATHPath inside the container, e.g. /app/traefik.yml. No default. Also settable under Settings - System Monitoring - File Paths
Set RESTART_METHODHow TM restarts Traefik after a config change - proxy (default), poison-pill or socket

Once the file is readable, Settings - Interface - Tabs places the editor: Off, inside Settings, or as its own Tab.

See Static Config Editor for each restart method.


Multi-Server

Manage remote Traefik instances from one UI through TMA, a small Go agent that runs next to Traefik on each server. A switcher at the top of the side nav changes the active server, and every tab - routes, middlewares, services, backups, logs - then works against it. No VPN or SSH required.

Adding an agent generates a ready-to-paste Docker Compose or Docker Run command. The API key is shown once and stored encrypted.


Backups

Every change writes a timestamped backup first, and any of them can be restored in one click. Retention is configurable.

Git backup additionally pushes your config to GitHub, Gitea, Forgejo, GitLab or any HTTPS remote, with commit history, side-by-side diffs and one-click restore of any commit. Agents can push to the Host's repository on their own branch, one branch per server, so a single repository covers every server.


Visualizations

Optional tabs, no extra mounts needed. Dashboard, Route Map and TLS Options toggle on in Settings - Interface - Tabs; CrowdSec in Settings - System Monitoring - Tab Visibility. The setup wizard can turn on Dashboard and Route Map; TLS Options and CrowdSec are Settings only.

TabDescription
DashboardRoutes grouped by category with app icons, custom groups, per-card editing, and one-click app launching
Route MapTopology connection map - entry points → routes → middlewares → services
TLS OptionsNamed tls.options profiles - min/max version, ciphers, mTLS - assignable per route
CrowdSecWho is attacking, from where, how and what they went after, from a CrowdSec LAPI; ban, captcha, bypass or unban with one click

Monitoring

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

TabMount requiredDescription
Certificatesacme.json:/app/acme.json:roTLS certificates with expiry tracking. ACME_JSON_PATH accepts several files or a directory, for setups with one resolver per storage file
Pluginstraefik.yml:/app/traefik.yml plus STATIC_CONFIG_PATH=/app/traefik.yml (no default)Plugins from your static config with the middlewares using each one, plus a guided install. Versions are checked against the catalog daily and flagged when one is out of date. Add :ro to keep the tab read-only
Logsaccess.log:/app/logs/access.log:roAccess log analytics: status, latency, paths, clients and services as clickable cards over a live tail, with optional auto refresh and a world map

Providers

Read-only tabs that pull live data from the Traefik API - no extra mounts, just a working API connection. Each lists that provider's routers and its middlewares.

Orchestrators

TabProvider
Dockerdocker
KuberneteskubernetesCRD / kubernetesIngress / kubernetesGateway
Swarmswarm
Nomadnomad
ECSecs
Consul CatalogconsulCatalog

Key-Value Stores

TabProvider
Redisredis
etcdetcd
Consul KVconsul
ZooKeeperzooKeeper

Config-based

TabProvider
HTTP Providerhttp
File (external)file

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


Configuration

Settings open from the foot of the side nav. Each pane lists its settings as aligned rows carrying the setting name, what it does and its control.

The search box above the panes filters every pane at once by name and description: matches elsewhere show as a count beside that pane in the sidebar, so you can find a setting without knowing where it lives.

A verdict line above the search flags anything that needs attention, such as no authentication being active.

PageDescription
manager.ymlFull settings file reference - all keys, types, and defaults
Environment VariablesAll supported environment variables with override behaviour
OIDC / SSO LoginOpenID Connect as an additional login method alongside the built-in password
Notification WebhooksForward events to Discord, Slack, ntfy or any JSON endpoint
Git Repository BackupAuto-push, commit history, diff viewer and one-click restore

Operations

PageDescription
Reset PasswordCLI reset, TOTP recovery, and manual reset via manager.yml
SecuritySecurity controls, API keys, sessions, and hardening recommendations
Traefik HardeningCVE advisories, header aliases, forwardAuth limits, and real client IPs
DevelopmentProject layout, running the test suite, and what a pull request needs

Self Route

Put Traefik Manager itself behind Traefik so you can reach it on a domain with HTTPS.

Go to Settings - Connection - Self Route. The URL pre-fills from your current hostname; the service URL and entry point are detected from your existing config. Click Save Route and TM writes the router and service entries into your dynamic config file. No changes to traefik.yml needed.


Traefik provider config snippets

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

yaml
providers:
  docker:
    exposedByDefault: false

Mobile App

A companion Android app. See the requirements table for which server version each app release needs.

Connect it with an API key: go to Settings - Authentication - API Keys, click Add Key, enter a device name, and copy the generated key. Each device gets its own key, so one can be revoked without affecting the others.

Traefik Manager Mobile

Browse routes, middlewares, and services. Enable/disable routes. Add and edit with built-in templates. Follows system light/dark theme.

Mobile docs →

Tech Stack

LayerTechnology
BackendPython 3.11 · Flask 3.1 · Gunicorn
AgentGo 1.25 · Alpine Linux (TMA - remote agent daemon)
Configruamel.yaml (preserves comments and Go templates)
Authbcrypt · pyotp (TOTP) · Flask sessions · CSRF · Flask-Limiter · Fernet
FrontendVanilla JS · Tailwind CSS 3.4 · Phosphor Icons
EditorMonaco Editor 0.52 (VS Code engine)
Route Mapdagre 3.1 (graph layout)
Geolocationmaxminddb · DB-IP Lite (local lookups, no external calls)
Testspytest · ruff · go test - run on every pull request
ContainerDocker · Alpine Linux · all JS/CSS bundled at build time (no CDN at runtime)