traefik-manager-agent
Docker app from xyzlab.dev's Repository
Overview
Readme
View on GitHubTraefik Manager for Unraid
Traefik Manager is a web UI for managing Traefik routes, services, middlewares and certificates. It edits your Traefik dynamic config directly, so routes you create in the UI are ordinary YAML you can read, back up and revert.
Both apps are in Unraid Community Applications. Open the Apps tab, search for Traefik Manager and click Install.
| App | Community Applications |
|---|---|
| Traefik Manager | traefik-manager |
| Traefik Manager agent | traefik-manager-agent |
Which one do I want?
Traefik Manager is the app itself, with the web UI. Install this if Traefik runs on this Unraid server and you want to manage it here.
Traefik Manager agent has no UI. Install it when Traefik runs on this server but you manage it from a Traefik Manager on another machine. Add the server in that Traefik Manager under Settings - Agents to generate an API key, then paste the key into the template.
Features
- Routes - HTTP, TCP and UDP routes with multiple domains and backends, sticky sessions, health checks, certificate resolvers and TLS options
- Services - load balancer, weighted, mirroring and failover services
- Middlewares - 30 guided wizards for auth, rate limiting, headers, CORS, redirects and more, plus a raw YAML editor
- Dashboard and Route Map - your apps with icons and health, and a topology map from entry point to backend
- Certificates - every certificate in
acme.jsonwith expiry, unused certificates and orphaned resolvers - Monitoring - live router and service health from the Traefik API, provider tabs and CVE advisories for your Traefik version
- Logs and CrowdSec - access log analytics, CrowdSec attacks, bans and decisions
- Notifications - Discord, Slack, ntfy, Gotify, Pushover, Pushbullet, Telegram, UnifiedPush and webhooks, with background checks when the UI is closed
- Static config editor - edit
traefik.ymland restart Traefik from the UI - Plugins - install Traefik plugins and see which middlewares use them
- Backups - a local backup before every change, plus git push with history, diffs and restore
- Multi-server - manage Traefik on other hosts through the agent, no VPN or SSH
- Security - two-factor login, OIDC single sign-on, per-device API keys and secrets encrypted at rest
- Mobile - a native Android app, and the web app installs as a PWA
Configuration
Every template field maps to an environment variable. The Unraid guide covers what to set, which paths to mount for the optional tabs, and how to reach the Traefik API. The environment variable reference lists them all with defaults.
The full documentation is at traefik-manager.xyzlab.dev.
Help and issues
- Bugs and feature requests - open an issue on the Traefik Manager tracker
- Questions - check the documentation first, then ask on the tracker
- Template problems - a missing field, wrong default or broken icon in the Unraid template also goes on the tracker, mention Unraid in the title
- Chat - questions and release news on the Discord
When reporting a bug, include your Traefik Manager version, your Traefik version, and the container log from the Unraid Docker tab.
Links
License
GPL-3.0, see LICENSE.
Requirements
Categories
Related apps
Explore more like this
Explore allDetails
ghcr.io/chr0nzz/traefik-manager-agent:latestRuntime arguments
- Web UI
http://[IP]:[PORT:8090]/health- Network
bridge- Shell
sh- Privileged
- false
- Extra Params
--restart=unless-stopped
Template configuration
Port the Traefik Manager hub connects to. Publish it only on a network the hub can reach.
- Target
- 8090
- Default
- 8090
- Value
- 8090
Your Traefik dynamic config on this server. Point it at the directory Traefik loads, or at a single .yml file. The agent writes here, so it cannot be read only.
- Target
- /app/config
- Default
- /mnt/user/appdata/traefik/config
- Value
- /mnt/user/appdata/traefik/config
Timestamped backups taken before every change, and the git clone when backups go to a repository. Without this mapping everything here is lost each time the container is updated.
- Target
- /app/backups
- Default
- /mnt/user/appdata/traefik-manager-agent/backups
- Value
- /mnt/user/appdata/traefik-manager-agent/backups
Key the hub authenticates with. Generate it in Traefik Manager under Settings, Agents, then paste the same value here.
- Target
- TMA_API_KEY
URL of the Traefik API on this server. Usually http://traefik:8080 when both containers share a Docker network.
- Target
- TRAEFIK_API_URL
- Default
- http://traefik:8080
- Value
- http://traefik:8080
Optional: this server traefik.yml, for the Static Config editor and the Plugins tab. Must be the same file Traefik itself reads, and read-write to allow saving. Also set the Static Config Path variable to match.
- Target
- /etc/traefik/traefik.yml
Optional: this server acme.json, for certificate expiry and for spotting certificates nothing uses. Also set the acme.json Path variable to /app/acme.json. Read-only is enough to view them; set it read-write, with a Restart Method, to remove certificates from this server.
- Target
- /app/acme.json
Optional: this server Traefik access log, for the Logs tab. Also set the Access Log Path variable to /app/logs/access.log.
- Target
- /app/logs/access.log
Optional: only for Restart Method socket. A socket proxy is the safer choice. Host path: /var/run/docker.sock
- Target
- /var/run/docker.sock
Optional: only for Restart Method poison-pill. Map a shared path here and at the same target in your watcher container, then point Signal File Path inside it. Leave blank for the other restart methods.
- Target
- /signals
Path inside the container to the config mapped above. Change it only if you mapped the config somewhere other than /app/config.
- Target
- CONFIG_PATH
- Default
- /app/config
- Value
- /app/config
Path inside the container to traefik.yml, for example /etc/traefik/traefik.yml. Leave blank unless you mapped it above.
- Target
- STATIC_CONFIG_PATH
Path inside the container to acme.json. Accepts several files comma-separated, or a directory, for one storage file per resolver.
- Target
- ACME_JSON_PATH
Path inside the container to the Traefik access log.
- Target
- ACCESS_LOG_PATH
Path inside the container to Traefik local plugins directory, for the Plugins tab.
- Target
- PLUGINS_DIR
Optional: basic-auth username, when the Traefik API sits behind a basicAuth middleware.
- Target
- TRAEFIK_API_USER
Optional: basic-auth password for the Traefik API.
- Target
- TRAEFIK_API_PASSWORD
Set true when the Traefik API URL is https with a self-signed or Origin certificate.
- Target
- TRAEFIK_INSECURE_SKIP_VERIFY
- Default
- false
- Value
- false
How this agent restarts Traefik after a static config change. proxy for a Docker socket proxy, socket for the Docker socket directly, poison-pill for a signal file read by a watcher. Leave blank to disable restarts.
- Target
- RESTART_METHOD
Name of the Traefik container to restart, used by the proxy and socket methods.
- Target
- TRAEFIK_CONTAINER
- Default
- traefik
- Value
- traefik
Socket proxy address for Restart Method proxy, for example tcp://socket-proxy:2375.
- Target
- DOCKER_HOST
File the agent touches to ask a watcher sidecar to restart Traefik, for example /signals/restart.sig. Map the same volume into both containers.
- Target
- SIGNAL_FILE_PATH
Path inside the container for backups. Change it only if you mapped backups somewhere other than /app/backups.
- Target
- BACKUP_DIR
- Default
- /app/backups
- Value
- /app/backups
Keep only the last N backups per config file. 0 keeps every backup.
- Target
- BACKUP_KEEP_COUNT
- Default
- 0
- Value
- 0
Port the agent listens on inside the container. Change the port mapping above to match if you change this.
- Target
- TMA_PORT
- Default
- 8090
- Value
- 8090
Requests per minute accepted from the hub.
- Target
- TMA_RATE_LIMIT
- Default
- 300
- Value
- 300
Set true to log every request the agent handles.
- Target
- TMA_DEBUG
- Default
- false
- Value
- false
Optional: CrowdSec Local API on this server, for example http://crowdsec:8080. Enables the CrowdSec tab for this server.
- Target
- CROWDSEC_LAPI_URL
Optional: CrowdSec bouncer key, used to read decisions. Generate with: cscli bouncers add traefik-manager
- Target
- CROWDSEC_API_KEY
Optional: CrowdSec machine login, needed to view alerts and to unban. Create with: cscli machines add traefik-manager --auto
- Target
- CROWDSEC_MACHINE_ID
Optional: password for the CrowdSec machine login above.
- Target
- CROWDSEC_MACHINE_PASSWORD
Optional: path inside the container to a TLS client certificate, when the LAPI requires mTLS instead of a key.
- Target
- CROWDSEC_CLIENT_CERT
Optional: path inside the container to the private key for the client certificate above.
- Target
- CROWDSEC_CLIENT_KEY
Optional: path inside the container to the CA that signed the LAPI certificate.
- Target
- CROWDSEC_CA_CERT
How many alerts to read at once, 0 to 100000.
- Target
- CROWDSEC_ALERT_LIMIT
- Default
- 500
- Value
- 500
Seconds to wait for a CrowdSec LAPI response, 1 to 120.
- Target
- CROWDSEC_READ_TIMEOUT
- Default
- 20
- Value
- 20
Leave false unless this agent pushes to git on its own. The usual setup is Use Host Repository in Traefik Manager under Backups, Git, where the hub pushes this server config to its own repository on a separate branch and nothing is configured here.
- Target
- GIT_BACKUP_ENABLED
- Default
- false
- Value
- false
Only for a standalone agent: HTTPS URL of the repository to push to.
- Target
- GIT_BACKUP_REPO
Only for a standalone agent: branch to push to. Give every server its own branch, or they overwrite each other.
- Target
- GIT_BACKUP_BRANCH
- Default
- main
- Value
- main
Only for a standalone agent: username the token belongs to.
- Target
- GIT_BACKUP_USERNAME
Only for a standalone agent: personal access token with write access to the repository.
- Target
- GIT_BACKUP_TOKEN
Only for a standalone agent: push after every change instead of committing locally.
- Target
- GIT_BACKUP_AUTO_PUSH
- Default
- true
- Value
- true
Only for a standalone agent: commit message template. {action} and {timestamp} are replaced.
- Target
- GIT_BACKUP_COMMIT_MESSAGE
- Default
- traefik-manager: {action} at {timestamp}
- Value
- traefik-manager: {action} at {timestamp}