This release includes breaking changes for platform teams planning a safe upgrade.
✓ No known CVEs patched in this version
Topics
+13 more
Affected surfaces
Summary
AI summaryUpdates New Features, Bug Fixes, and CrowdSec Improvements across a mixed release.
Full changelog
v1.5.0
New Features
-
#66 - Git Repository Backup and Restore - Traefik Manager can now automatically push your Traefik configuration to a Git repository after every change. Configure a repository URL, branch, username, and access token in Settings → Backups → Git tab. Supports GitHub, Gitea, Forgejo, GitLab, and any HTTPS Git host. Features include:
- Auto-push on save - config is committed and pushed in the background after every route, middleware, or static config change
- Git History - browse the last 50 commits with timestamps and messages
- Side-by-side diff viewer - click View Diff on any commit to open a full-screen Monaco diff editor showing exactly what changed, with per-file tabs when multiple files were modified
- One-click restore - roll back to any commit directly from the UI; a local backup is created automatically before restoring
- Test Connection and Manual Push buttons
- Notifications - push success, push failure, and restore events all fire through the notification engine (in-app dropdown + webhooks)
- Access token stored encrypted at rest (same Fernet encryption as OIDC and CrowdSec secrets)
-
#67 - Multi-Server Agent Mode (TMA) - a lightweight Go daemon that runs alongside Traefik on any remote server; one central TM can now manage unlimited remote Traefik instances. Features include:
- Server switcher in the nav bar - switch between Host and remote agents; every data tab (routes, services, middlewares, route map, backups, logs, certs, CrowdSec) shows that server's data
- Settings - Agents multi-step wizard - enter a name and URL, TM generates an API key (shown once, stored encrypted), then generates a copy-paste Docker Compose or Docker Run command with all env vars pre-filled
- Comprehensive env var support - Traefik API URL, dynamic/static config paths, ACME/certs, access log, plugins, restart method (proxy/poison-pill/socket), CrowdSec, git backup, and
TRAEFIK_INSECURE_SKIP_VERIFYfor HTTPS APIs with self-signed or Cloudflare Origin certs - Full remote editing - add, edit, delete, and toggle routes and middlewares on remote servers, including raw YAML editing; changes are written to the agent's config files exactly as they are locally
- Per-agent domains, entrypoints, and middlewares - the Add/Edit Route modal fetches these from the active agent
- Remote static config and backups - static config editing and all backup/restore/git operations are proxied through the active agent; the agent writes a
.bakbefore every config change - Agent health dots - live green/red status on each agent card and in the server switcher dropdown
- Docker image -
ghcr.io/chr0nzz/traefik-manager-agent:latest(amd64 + arm64), built in parallel with the main TM image on every release - Installer - new agent mode in
traefik-stack/setup.sh: Docker agent only, Docker agent + Traefik, or binary (systemd). Skip the menu withexport TMA_INSTALL=1 - Per-agent git backup via
GIT_BACKUP_*env vars, and rate limiting viaTMA_RATE_LIMIT(default 300 req/min per IP)
-
#71 - Custom Middleware Templates - new Settings - Templates panel to save and reuse custom middleware YAML snippets. Templates are stored in
templates.ymlalongsidemanager.ymland appear in the Template selector in the Add/Edit Middleware modal under a "My Templates" group. Supports any middleware type including plugins. Full CRUD from the Settings panel.
CrowdSec Improvements (fixes #70)
- Redesigned tab - Decisions and Alerts are now separate views toggled with a switch, with 6 stat cards (Total Alerts, Active Decisions, LAPI Status, Active Bans, Captchas, Bypasses)
- Add Decision - manually ban, captcha, or bypass any IP or CIDR range from the UI, with durations from 1 hour to 1 year and an optional reason
- Pagination and accurate counts - decisions paginate at 100 rows per page; all LAPI pages are fetched automatically, expired decisions are filtered out, and pagination is capped (5,000 decisions / 1,000 alerts) to prevent the worker timeout crash on large deployments (fixes #70)
- Machine credentials for Alerts and unban - CrowdSec's LAPI requires machine (watcher) auth for alerts and decision deletion, not the bouncer key. Set
CROWDSEC_MACHINE_ID/CROWDSEC_MACHINE_PASSWORD(or the new fields in Settings - System Monitoring - CrowdSec, also generated by the agent wizard) to enable the Alerts view and unban; decisions continue to use the bouncer key. See the CrowdSec docs - Cleaner alerts - blocklist-import alerts (origin
lists, e.g.free_proxies) are filtered out to matchcscli alerts list, and a missingread:alertspermission now shows a clear message instead of crashing - Added an Origin column and absolute
untilexpiry timestamps to the decisions table
Bug Fixes
- Fixed TCP routes not supporting TLS passthrough mode (fixes #77) - added a TLS Mode selector (No TLS / TLS / Passthrough) to the TCP route form
- Fixed config files with duplicate YAML keys causing a 500 crash on page load (fixes #74) - the app now loads with best-effort parsing and shows a warning banner
- Fixed
serversTransportnot being removed from the original config file when moving a route with "Skip TLS Verify" to a different file (fixes #75) - Fixed wildcard certificate request using the primary domain instead of the selected secondary domain (fixes #76)
- Fixed route, router, and service entries not being removed from the original config file when moving a route to a different file (fixes #73)
- Fixed deleting a disabled route returning "not found" (fixes #80) - the delete handler now checks
disabled_routeswhen the route is not in any config file - Fixed the middleware wizard saving empty Basic Auth or Forward Auth config that crashes Traefik (fixes #79) - required fields are validated and unparseable YAML is rejected before writing, and the backend returns the actual YAML parse error
- Fixed the Routes tab badge not matching the served routes (fixes #81) - the badge now equals the HTTP Routers + TCP/UDP stat cards (active HTTP + TCP + UDP routers) and no longer counts disabled or other-provider routes
- Fixed the middleware chip selector in the route modal showing a stale list after a middleware save or delete (fixes #82) - the client-side cache is now cleared on every change
- Fixed OTP login crash (
binascii.Error) when the TOTP secret could not be decrypted after a rebuild with a new encryption key - the secret is treated as empty, allowing login and re-enrollment - Fixed
manager.ymlcorruption caused by ruamel.yaml writing type annotations as YAML document separators (---); added recovery for existing corrupted files - Fixed timestamps not respecting the
TZenvironment variable on Alpine;tzdatais now included in the Docker image
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
Related context
Related tools
Beta — feedback welcome: [email protected]