{"id":47707845,"url":"https://github.com/chr0nzz/traefik-manager","last_synced_at":"2026-06-26T00:00:54.346Z","repository":{"id":343170789,"uuid":"1176415921","full_name":"chr0nzz/traefik-manager","owner":"chr0nzz","description":"A clean, self-hosted web UI for managing your Traefik reverse proxy.","archived":false,"fork":false,"pushed_at":"2026-06-16T03:49:44.000Z","size":43706,"stargazers_count":722,"open_issues_count":7,"forks_count":27,"subscribers_count":6,"default_branch":"main","last_synced_at":"2026-06-16T05:09:01.727Z","etag":null,"topics":["alpine-linux","bcrypt","crsf","csrf-protection","docker","fernet","flask","flask-limiter","flask-session","gunicorn","phosphor-icons","python3","ruamel-yaml","tailwind-css","totp","traefik","traefik-management","traefik-web-ui","vanilla-js"],"latest_commit_sha":null,"homepage":"https://traefik-manager.xyzlab.dev/","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chr0nzz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":".github/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"ko_fi":"chr0nzz"}},"created_at":"2026-03-09T02:04:47.000Z","updated_at":"2026-06-16T00:19:56.000Z","dependencies_parsed_at":null,"dependency_job_id":"ee4aa132-b6f0-4ea9-aaa7-e22ecc76f6b7","html_url":"https://github.com/chr0nzz/traefik-manager","commit_stats":null,"previous_names":["chr0nzz/traefik-manager"],"tags_count":38,"template":false,"template_full_name":null,"purl":"pkg:github/chr0nzz/traefik-manager","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chr0nzz%2Ftraefik-manager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chr0nzz%2Ftraefik-manager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chr0nzz%2Ftraefik-manager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chr0nzz%2Ftraefik-manager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chr0nzz","download_url":"https://codeload.github.com/chr0nzz/traefik-manager/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chr0nzz%2Ftraefik-manager/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34796761,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-25T02:00:05.521Z","response_time":101,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["alpine-linux","bcrypt","crsf","csrf-protection","docker","fernet","flask","flask-limiter","flask-session","gunicorn","phosphor-icons","python3","ruamel-yaml","tailwind-css","totp","traefik","traefik-management","traefik-web-ui","vanilla-js"],"created_at":"2026-04-02T18:05:03.068Z","updated_at":"2026-06-26T00:00:54.301Z","avatar_url":"https://github.com/chr0nzz.png","language":"HTML","funding_links":["https://ko-fi.com/chr0nzz"],"categories":["HTML"],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"docs/public/images/icon.png\" width=\"128\" height=\"128\" alt=\"Traefik Manager\"\u003e\n\n# Traefik Manager\n\n**A clean, self-hosted web UI for managing your Traefik reverse proxy.**\n\nAdd routes, manage middlewares, monitor services, and view TLS certificates - all without touching a YAML file by hand.\n\n[![Docker Image](https://img.shields.io/badge/ghcr.io-chr0nzz%2Ftraefik--manager-blue?logo=docker\u0026logoColor=white)](https://github.com/chr0nzz/traefik-manager/pkgs/container/traefik-manager)\n[![License](https://img.shields.io/badge/license-GPL--3.0-blue)](LICENSE)\n[![Version](https://img.shields.io/github/v/release/chr0nzz/traefik-manager)](https://github.com/chr0nzz/traefik-manager/releases)\n[![Docs](https://img.shields.io/badge/docs-github.io-blue)](https://traefik-manager.xyzlab.dev/)\n[![Mobile App](https://img.shields.io/badge/mobile-repo-green?logo=android\u0026logoColor=white)](https://github.com/chr0nzz/traefik-manager-mobile)\n[![Google Play](https://img.shields.io/badge/Google_Play-Available-blue?logo=google-play\u0026logoColor=white)](https://play.google.com/store/apps/details?id=dev.chr0nzz.traefikmanager)\n[![Ko-fi](https://img.shields.io/badge/Ko--fi-Sponsor-ff5f5f?logo=ko-fi\u0026logoColor=white)](https://ko-fi.com/chr0nzz)\n\n\u003c/div\u003e\n\u003cdiv align=\"center\"\u003e\n\u003csub\u003eBuilt for homelabbers who love Traefik but hate editing YAML at 2am.\u003c/sub\u003e\n\u003c/div\u003e\n\n---\n\n## Interface Gallery\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eInitial Setup Workflow\u003c/b\u003e\u003c/summary\u003e\n\u003ctable\u003e\n\u003ctr\u003e\n\u003ctd width=\"33%\"\u003e\n\u003ca href=\"docs/public/images/dark-login.png\" target=\"_blank\"\u003e\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"docs/public/images/dark-login.png\"\u003e\n  \u003cimg src=\"docs/public/images/light-login.png\" alt=\"Login\" /\u003e\n\u003c/picture\u003e\u003c/a\u003e\n\u003cbr /\u003e\u003cb\u003e1. Login\u003c/b\u003e\n\u003c/td\u003e\n\u003ctd width=\"33%\"\u003e\n\u003ca href=\"docs/public/images/dark-setup-welcome.png\" target=\"_blank\"\u003e\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"docs/public/images/dark-setup-welcome.png\"\u003e\n  \u003cimg src=\"docs/public/images/light-setup-welcome.png\" alt=\"Welcome\" /\u003e\n\u003c/picture\u003e\u003c/a\u003e\n\u003cbr /\u003e\u003cb\u003e2. Welcome\u003c/b\u003e\n\u003c/td\u003e\n\u003ctd width=\"33%\"\u003e\n\u003ca href=\"docs/public/images/dark-setup-connection.png\" target=\"_blank\"\u003e\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"docs/public/images/dark-setup-connection.png\"\u003e\n  \u003cimg src=\"docs/public/images/light-setup-connection.png\" alt=\"Connection \u0026amp; domains\" /\u003e\n\u003c/picture\u003e\u003c/a\u003e\n\u003cbr /\u003e\u003cb\u003e3. Connection \u0026amp; domains\u003c/b\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ca href=\"docs/public/images/dark-setup-self-route.png\" target=\"_blank\"\u003e\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"docs/public/images/dark-setup-self-route.png\"\u003e\n  \u003cimg src=\"docs/public/images/light-setup-self-route.png\" alt=\"Self route\" /\u003e\n\u003c/picture\u003e\u003c/a\u003e\n\u003cbr /\u003e\u003cb\u003e4. Self route\u003c/b\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003ca href=\"docs/public/images/dark-setup-monitoring.png\" target=\"_blank\"\u003e\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"docs/public/images/dark-setup-monitoring.png\"\u003e\n  \u003cimg src=\"docs/public/images/light-setup-monitoring.png\" alt=\"Optional tabs\" /\u003e\n\u003c/picture\u003e\u003c/a\u003e\n\u003cbr /\u003e\u003cb\u003e5. Optional tabs\u003c/b\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003ca href=\"docs/public/images/dark-setup-password.png\" target=\"_blank\"\u003e\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"docs/public/images/dark-setup-password.png\"\u003e\n  \u003cimg src=\"docs/public/images/light-setup-password.png\" alt=\"Set password\" /\u003e\n\u003c/picture\u003e\u003c/a\u003e\n\u003cbr /\u003e\u003cb\u003e6. Set password\u003c/b\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eDashboard\u003c/b\u003e\u003c/summary\u003e\n\u003cp align=\"center\"\u003e\n\u003ca href=\"docs/public/images/dark-dashboard.png\" target=\"_blank\"\u003e\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"docs/public/images/dark-dashboard.png\"\u003e\n  \u003cimg src=\"docs/public/images/light-dashboard.png\" width=\"80%\" alt=\"Dashboard\" /\u003e\n\u003c/picture\u003e\u003c/a\u003e\n\u003c/p\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eRoutes\u003c/b\u003e\u003c/summary\u003e\n\u003ctable\u003e\n\u003ctr\u003e\n\u003ctd width=\"33%\"\u003e\n\u003ca href=\"docs/public/images/dark-routes-cards.png\" target=\"_blank\"\u003e\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"docs/public/images/dark-routes-cards.png\"\u003e\n  \u003cimg src=\"docs/public/images/light-routes-cards.png\" alt=\"Routes – card view\" /\u003e\n\u003c/picture\u003e\u003c/a\u003e\n\u003cbr /\u003e\u003cb\u003eCard View\u003c/b\u003e\n\u003c/td\u003e\n\u003ctd width=\"33%\"\u003e\n\u003ca href=\"docs/public/images/dark-routes-list.png\" target=\"_blank\"\u003e\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"docs/public/images/dark-routes-list.png\"\u003e\n  \u003cimg src=\"docs/public/images/light-routes-list.png\" alt=\"Routes – list view\" /\u003e\n\u003c/picture\u003e\u003c/a\u003e\n\u003cbr /\u003e\u003cb\u003eList View\u003c/b\u003e\n\u003c/td\u003e\n\u003ctd width=\"33%\"\u003e\n\u003ca href=\"docs/public/images/dark-routes-add-http.png\" target=\"_blank\"\u003e\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"docs/public/images/dark-routes-add-http.png\"\u003e\n  \u003cimg src=\"docs/public/images/light-routes-add-http.png\" alt=\"Add HTTP route\" /\u003e\n\u003c/picture\u003e\u003c/a\u003e\n\u003cbr /\u003e\u003cb\u003eAdd HTTP\u003c/b\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ca href=\"docs/public/images/dark-routes-add-tcp.png\" target=\"_blank\"\u003e\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"docs/public/images/dark-routes-add-tcp.png\"\u003e\n  \u003cimg src=\"docs/public/images/light-routes-add-tcp.png\" alt=\"Add TCP route\" /\u003e\n\u003c/picture\u003e\u003c/a\u003e\n\u003cbr /\u003e\u003cb\u003eAdd TCP\u003c/b\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003ca href=\"docs/public/images/dark-routes-add-udp.png\" target=\"_blank\"\u003e\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"docs/public/images/dark-routes-add-udp.png\"\u003e\n  \u003cimg src=\"docs/public/images/light-routes-add-udp.png\" alt=\"Add UDP route\" /\u003e\n\u003c/picture\u003e\u003c/a\u003e\n\u003cbr /\u003e\u003cb\u003eAdd UDP\u003c/b\u003e\n\u003c/td\u003e\n\u003ctd\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eServices\u003c/b\u003e\u003c/summary\u003e\n\u003cp align=\"center\"\u003e\n\u003ca href=\"docs/public/images/dark-services-cards.png\" target=\"_blank\"\u003e\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"docs/public/images/dark-services-cards.png\"\u003e\n  \u003cimg src=\"docs/public/images/light-services-cards.png\" width=\"48%\" alt=\"Services – card view\" /\u003e\n\u003c/picture\u003e\u003c/a\u003e\n\u003ca href=\"docs/public/images/dark-services-list.png\" target=\"_blank\"\u003e\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"docs/public/images/dark-services-list.png\"\u003e\n  \u003cimg src=\"docs/public/images/light-services-list.png\" width=\"48%\" alt=\"Services – list view\" /\u003e\n\u003c/picture\u003e\u003c/a\u003e\n\u003c/p\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eMiddlewares\u003c/b\u003e\u003c/summary\u003e\n\u003ctable\u003e\n\u003ctr\u003e\n\u003ctd width=\"33%\"\u003e\n\u003ca href=\"docs/public/images/dark-middlewares-cards.png\" target=\"_blank\"\u003e\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"docs/public/images/dark-middlewares-cards.png\"\u003e\n  \u003cimg src=\"docs/public/images/light-middlewares-cards.png\" alt=\"Middlewares – card view\" /\u003e\n\u003c/picture\u003e\u003c/a\u003e\n\u003cbr /\u003e\u003cb\u003eCard View\u003c/b\u003e\n\u003c/td\u003e\n\u003ctd width=\"33%\"\u003e\n\u003ca href=\"docs/public/images/dark-middlewares-list.png\" target=\"_blank\"\u003e\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"docs/public/images/dark-middlewares-list.png\"\u003e\n  \u003cimg src=\"docs/public/images/light-middlewares-list.png\" alt=\"Middlewares – list view\" /\u003e\n\u003c/picture\u003e\u003c/a\u003e\n\u003cbr /\u003e\u003cb\u003eList View\u003c/b\u003e\n\u003c/td\u003e\n\u003ctd width=\"33%\"\u003e\n\u003ca href=\"docs/public/images/dark-middlewares-add.png\" target=\"_blank\"\u003e\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"docs/public/images/dark-middlewares-add.png\"\u003e\n  \u003cimg src=\"docs/public/images/light-middlewares-add.png\" alt=\"Add middleware\" /\u003e\n\u003c/picture\u003e\u003c/a\u003e\n\u003cbr /\u003e\u003cb\u003eAdd\u003c/b\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003ePlugins\u003c/b\u003e\u003c/summary\u003e\n\u003cp align=\"center\"\u003e\n\u003ca href=\"docs/public/images/dark-plugins.png\" target=\"_blank\"\u003e\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"docs/public/images/dark-plugins.png\"\u003e\n  \u003cimg src=\"docs/public/images/light-plugins.png\" width=\"48%\" alt=\"Plugins\" /\u003e\n\u003c/picture\u003e\u003c/a\u003e\n\u003ca href=\"docs/public/images/dark-plugins-add.png\" target=\"_blank\"\u003e\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"docs/public/images/dark-plugins-add.png\"\u003e\n  \u003cimg src=\"docs/public/images/light-plugins-add.png\" width=\"48%\" alt=\"Plugins – add\" /\u003e\n\u003c/picture\u003e\u003c/a\u003e\n\u003c/p\u003e\n\u003c/details\u003e\n\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eRoute Map\u003c/b\u003e\u003c/summary\u003e\n\u003cp align=\"center\"\u003e\n\u003ca href=\"docs/public/images/dark-route-map.png\" target=\"_blank\"\u003e\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"docs/public/images/dark-route-map.png\"\u003e\n  \u003cimg src=\"docs/public/images/light-route-map.png\" width=\"80%\" alt=\"Route Map\" /\u003e\n\u003c/picture\u003e\u003c/a\u003e\n\u003c/p\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eSettings\u003c/b\u003e\u003c/summary\u003e\n\u003ctable\u003e\n\u003ctr\u003e\n\u003ctd width=\"33%\"\u003e\n\u003ca href=\"docs/public/images/dark-settings-interface.png\" target=\"_blank\"\u003e\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"docs/public/images/dark-settings-interface.png\"\u003e\n  \u003cimg src=\"docs/public/images/light-settings-interface.png\" alt=\"Settings – interface\" /\u003e\n\u003c/picture\u003e\u003c/a\u003e\n\u003cbr /\u003e\u003cb\u003eInterface\u003c/b\u003e\n\u003c/td\u003e\n\u003ctd width=\"33%\"\u003e\n\u003ca href=\"docs/public/images/dark-settings-auth-password.png\" target=\"_blank\"\u003e\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"docs/public/images/dark-settings-auth-password.png\"\u003e\n  \u003cimg src=\"docs/public/images/light-settings-auth-password.png\" alt=\"Settings – auth\" /\u003e\n\u003c/picture\u003e\u003c/a\u003e\n\u003cbr /\u003e\u003cb\u003eAuthentication\u003c/b\u003e\n\u003c/td\u003e\n\u003ctd width=\"33%\"\u003e\n\u003ca href=\"docs/public/images/dark-settings-auth-apikeys.png\" target=\"_blank\"\u003e\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"docs/public/images/dark-settings-auth-apikeys.png\"\u003e\n  \u003cimg src=\"docs/public/images/light-settings-auth-apikeys.png\" alt=\"Settings – API keys\" /\u003e\n\u003c/picture\u003e\u003c/a\u003e\n\u003cbr /\u003e\u003cb\u003eAPI Keys\u003c/b\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ca href=\"docs/public/images/dark-settings-static-config.png\" target=\"_blank\"\u003e\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"docs/public/images/dark-settings-static-config.png\"\u003e\n  \u003cimg src=\"docs/public/images/light-settings-static-config.png\" alt=\"Settings – static config\" /\u003e\n\u003c/picture\u003e\u003c/a\u003e\n\u003cbr /\u003e\u003cb\u003eStatic Config\u003c/b\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003ca href=\"docs/public/images/dark-settings-connection.png\" target=\"_blank\"\u003e\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"docs/public/images/dark-settings-connection.png\"\u003e\n  \u003cimg src=\"docs/public/images/light-settings-connection.png\" alt=\"Settings – connection\" /\u003e\n\u003c/picture\u003e\u003c/a\u003e\n\u003cbr /\u003e\u003cb\u003eConnection\u003c/b\u003e\n\u003c/td\u003e\n\u003ctd\u003e\n\u003ca href=\"docs/public/images/dark-settings-backups.png\" target=\"_blank\"\u003e\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"docs/public/images/dark-settings-backups.png\"\u003e\n  \u003cimg src=\"docs/public/images/light-settings-backups.png\" alt=\"Settings – backups\" /\u003e\n\u003c/picture\u003e\u003c/a\u003e\n\u003cbr /\u003e\u003cb\u003eBackups\u003c/b\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\u003c/details\u003e\n\n---\n\n## Features\n\n**Routing \u0026 Middleware**\n- Add, edit, delete, and **enable/disable** HTTP, TCP, and UDP routes - no YAML editing required\n- **Advanced rule editor** - toggle between a domain chip builder and a free-text rule input for complex expressions (`PathPrefix`, `HostRegexp`, `\u0026\u0026` / `||` compounds, etc.)\n- **Multiple domains per route** - select any combination of your configured domains; generates multi-host Traefik rules (`Host(\\`sub.d1\\`) || Host(\\`sub.d2\\`)`)\n- **Per-service insecureSkipVerify** - checkbox adds a named `serversTransport` for backends with self-signed certs (Proxmox, Kasm, etc.); yellow TLS skip badge shown on route cards\n- **Wildcard certificate domains** - \"Request wildcard certificate\" checkbox auto-fills `tls.domains` from the selected domain; use with DNS challenge resolvers to request `*.domain.com` certs\n- **TLS Options tab** - create and manage named `tls.options` profiles (min/max version, cipher suites, curve preferences, SNI strict, ALPN, mTLS client auth); assign a profile to any route via the route form\n- **23 middleware wizard templates** with guided form fields (Basic Auth, Forward Auth, Rate Limit, IP Allowlist, Secure Headers, CORS, Redirect, Strip/Add Prefix, Retry, Circuit Breaker, Buffering, and more) - toggle to raw YAML for anything else\n- **Route clone** - duplicate a route into the add modal pre-filled with its service URL, middlewares, and entrypoints\n- **Multi-config file support** - mount several dynamic config files with `CONFIG_DIR` or `CONFIG_PATHS`; a dropdown selects which file each route or middleware is saved to; **create new files on the fly** when `CONFIG_DIR` is set\n- **Timestamped backups** before every change; one-click restore from Settings; `POST /api/backup/create` and `POST /api/backup/static/create` for automation\n- **Git Repository Backup** - push your Traefik configuration to a remote Git repository (GitHub, Gitea, Forgejo, GitLab, or any HTTPS host) after every change; browse the full commit history, view per-file side-by-side diffs, and restore any commit with one click; access token stored encrypted at rest; auto-push on every route, middleware, or static config save; manual push and Test Connection available in Settings → Backups → Git\n\n**Live Dashboard**\n- Real-time stats: router counts, service health, entrypoints, Traefik version\n- Provider tabs: Docker, Kubernetes, Swarm, Nomad, ECS, Consul Catalog, Redis, etcd, Consul KV, ZooKeeper, HTTP Provider, File - all API-based, no extra mounts; **each tab shows provider middlewares** in a read-only section\n- **Filter live services** by protocol (HTTP/TCP/UDP) and provider (docker, file, kubernetes…)\n- **List view toggle** on Routes, Middlewares, and Services tabs - switch between card grid and compact table\n\n**Visualizations** *(optional, toggle in Settings)*\n- **Dashboard tab** - routes grouped by category (Media, Monitoring, Infrastructure, etc.) with app icons sourced from [selfh.st/icons](https://selfh.st/icons/), cached locally, and per-card editing (display name, icon override, group override)\n- **Route Map tab** - 4-column topology view (Entry Points - Routes - Middlewares - Services) with Bezier curve connections, hover-to-highlight, and route tooltips\n\n**Static Config Editor** *(optional - mount `traefik.yml` read-write)*\n- Edit Traefik's static configuration directly from the UI - entrypoints, certificate resolvers, plugins, and a raw YAML editor (Monaco/VS Code engine) for anything else\n- Changes are staged with a pending banner, backed up before saving, and Traefik is restarted automatically\n- Three restart methods: **socket proxy** (recommended - sidecar with minimal socket exposure), **poison pill** (no socket needed - shared signal file), **direct socket**\n- Full-screen reconnect overlay polls until Traefik is back up and dismisses automatically\n\n**System Monitoring** *(optional)*\n- **Certs** - `acme.json` certificates with expiry tracking\n- **Plugins** - plugins from your static `traefik.yml`; add, edit, and remove plugins when static config editor is enabled\n- **Logs** - parsed access log cards showing method, status, path, IP, service, and duration; click any card for a full detail panel with all fields and the raw log line\n- **CrowdSec** - active decisions and recent alerts from a CrowdSec LAPI; add manual bans/captchas/bypasses or unban IPs with one click; stats cards show total alerts, active decisions, LAPI status, and type breakdown. Configure via `CROWDSEC_LAPI_URL` / `CROWDSEC_API_KEY` env vars or **Settings → System Monitoring → CrowdSec**\n- **Configurable file paths** - set `acme.json`, access log, and static config paths from **Settings → File Paths** without a container restart; UI setting takes priority over env vars\n\n**Multi-Server Management**\n- **Traefik Manager Agent (TMA)** - lightweight Go daemon that runs alongside Traefik on any remote server; install it in seconds with the one-liner installer\n- **Server switcher** in the nav bar - switch between local and remote agents; all data tabs show that server's routes, services, middlewares, backups, and logs\n- **Settings → Agents** multi-step wizard - generates a ready-to-paste Docker Compose or Docker Run command with all env vars pre-filled; API key shown once and stored encrypted\n- **Per-server git backup** - each agent handles its own autonomous git cycle via env vars; viewed from TM when that agent is active\n- Manage unlimited remote Traefik instances from a single TM - no VPN or SSH required\n\n**Security**\n- bcrypt passwords (cost 12), CSRF protection, session management with session fixation protection\n- Optional TOTP 2FA · 7-day remember me · configurable inactivity timeout\n- Auto-generated password on first start · CLI recovery with `flask reset-password`\n- **OIDC / SSO** - sign in with Keycloak, Google, Authentik, or any OIDC-compliant provider alongside password login; access restricted to specific emails or groups; client secret stored encrypted at rest\n- **Per-device API keys** - up to 10 named keys (e.g. \"My Phone\"), each independently revocable via `X-Api-Key` header\n- **Traefik API basic auth** - set `TRAEFIK_API_USER` / `TRAEFIK_API_PASSWORD` (or via Settings) for Traefik dashboards with `api.insecure: false`\n- **Rate limiting** on login and auth endpoints (Flask-Limiter)\n- **Atomic config writes** - crash-safe YAML saves via temp file + rename\n- **Encrypted OTP secret** - TOTP seed encrypted at rest with Fernet\n\n\n---\n\n## Mobile App\n\n**traefik-manager-mobile** is a React Native companion app for managing Traefik Manager from your phone. Requires **Traefik Manager v1.0.0 or higher**.\n\n|          |                                                                                                |\n| ----------| ------------------------------------------------------------------------------------------------|\n| Repo     | [github.com/chr0nzz/traefik-manager-mobile](https://github.com/chr0nzz/traefik-manager-mobile) |\n| Download | [Latest release](https://github.com/chr0nzz/traefik-manager-mobile/releases/latest)            |\n| Auth     | Per-device API key - generate one in **Settings → Authentication → App / Mobile API Keys**     |\n\n\u003ca href=\"https://play.google.com/store/apps/details?id=dev.chr0nzz.traefikmanager\"\u003e\n  \u003cimg src=\"static/icons/GetItOnGooglePlay.svg\" alt=\"Get it on Google Play\" height=\"60\" /\u003e\n\u003c/a\u003e\n\nFeatures: browse routes, middlewares, and services · enable/disable routes · add and edit routes and middlewares (23 middleware templates with guided wizards) · multiple domains per route · per-service insecureSkipVerify · backend scheme + pass host header controls · multi-config file picker · edit mode for bulk actions · CrowdSec tab · system light/dark theme.\n\n---\n\n## Quick Start\n\n**One-liner installer** - installs Traefik + Traefik Manager together, or Traefik Manager on its own via Docker or a native Linux service:\n\n```bash\ncurl -fsSL https://get-traefik.xyzlab.dev | bash\n```\n\n**Manual Docker Compose:**\n\n```yaml\nservices:\n  traefik-manager:\n    image: ghcr.io/chr0nzz/traefik-manager:latest\n    container_name: traefik-manager\n    restart: unless-stopped\n    ports:\n      - \"5000:5000\"\n    environment:\n      - COOKIE_SECURE=false\n    volumes:\n      - /path/to/traefik/dynamic.yml:/app/config/dynamic.yml\n      - /path/to/traefik-manager/config:/app/config\n      - /path/to/traefik-manager/backups:/app/backups\n```\n\n```bash\ndocker compose up -d\n```\n\nOpen **http://your-server:5000** - the setup wizard will guide you through the rest.\n\n---\n\n## Deployment\n\n| Runtime                                                                                                              | Guide                                                                                                                 |\n| ----------------------------------------------------------------------------------------------------------------------| -----------------------------------------------------------------------------------------------------------------------|\n| \u003cimg src=\"https://cdn.jsdelivr.net/gh/selfhst/icons@main/png/windows-terminal.png\" width=\"20\" height=\"20\"\u003e Installer | [One-liner: full stack, TM-only Docker, TM-only Linux service, Agent](https://traefik-manager.xyzlab.dev/traefik-stack.html) |\n| \u003cimg src=\"https://cdn.jsdelivr.net/gh/selfhst/icons@main/png/docker.png\" width=\"20\" height=\"20\"\u003e Docker              | [Docker Compose setup, networking, behind Traefik](https://traefik-manager.xyzlab.dev/docker.html)                    |\n| \u003cimg src=\"https://cdn.jsdelivr.net/gh/selfhst/icons@main/png/podman.png\" width=\"20\" height=\"20\"\u003e Podman              | [Rootless, Quadlet/systemd, SELinux labels](https://traefik-manager.xyzlab.dev/podman.html)                           |\n| \u003cimg src=\"https://cdn.jsdelivr.net/gh/selfhst/icons@main/png/linux.png\" width=\"20\" height=\"20\"\u003e Linux                | [Native Python + systemd, no container required](https://traefik-manager.xyzlab.dev/linux.html)                       |\n| \u003cimg src=\"https://cdn.jsdelivr.net/gh/selfhst/icons@main/png/unraid.png\" width=\"20\" height=\"20\"\u003e Unraid              | [Community Applications template, networking, multi-config](https://traefik-manager.xyzlab.dev/unraid.html)           |\n| \u003ci\u003eAgent\u003c/i\u003e                                                                                                         | [TMA - remote agent for multi-server management](https://traefik-manager.xyzlab.dev/agent.html)                       |\n\n---\n\n## Documentation\n\nFull documentation at **[traefik-manager.xyzlab.dev](https://traefik-manager.xyzlab.dev/)**\n\n|                                                                           |                                                       |\n| ---------------------------------------------------------------------------| -------------------------------------------------------|\n| [Get Started](https://traefik-manager.xyzlab.dev/guide.html)              | Deployment guides for Docker, Podman, and Linux       |\n| [Traefik Stack](https://traefik-manager.xyzlab.dev/traefik-stack.html)    | One-liner installer guide                             |\n| [Configuration](https://traefik-manager.xyzlab.dev/manager-yml.html)      | `manager.yml` reference                               |\n| [Environment Variables](https://traefik-manager.xyzlab.dev/env-vars.html) | `CONFIG_DIR`, `CONFIG_PATHS`, auth, domains, and more |\n| [Security](https://traefik-manager.xyzlab.dev/security.html)              | API keys, sessions, CSRF, rate limits, and hardening  |\n| [API Reference](https://traefik-manager.xyzlab.dev/api.html)              | REST API for integrations and the mobile app          |\n| [OIDC / SSO](https://traefik-manager.xyzlab.dev/oidc.html)                | OIDC setup, provider examples, and access control     |\n| [Git Repository Backup](https://traefik-manager.xyzlab.dev/git-backup.html) | Auto-push, commit history, diff viewer, and one-click restore |\n| [Mobile App](https://traefik-manager.xyzlab.dev/mobile.html)              | Android companion app setup and features              |\n| [Reset Password](https://traefik-manager.xyzlab.dev/reset-password.html)  | CLI reset, TOTP recovery, manual reset                |\n| [UI Examples](https://traefik-manager.xyzlab.dev/ui-examples.html)        | Screenshots and walkthroughs                          |\n| [Provider Tabs](https://traefik-manager.xyzlab.dev/tab-docker.html)                      | Docker, Kubernetes, Swarm, Nomad, ECS, and more       |\n\n---\n\n## Tech Stack\n\n| Layer     | Technology                                    |\n| -----------| -----------------------------------------------|\n| Backend   | Python 3.11 · Flask · Gunicorn                |\n| Agent     | Go 1.23 · Alpine Linux (TMA - remote agent daemon) |\n| Config    | ruamel.yaml (preserves comments)              |\n| Auth      | bcrypt · pyotp (TOTP) · Flask sessions · CSRF · Flask-Limiter · Fernet |\n| Frontend  | Vanilla JS · Tailwind CSS · Phosphor Icons    |\n| Editor    | Monaco Editor (VS Code engine)                |\n| Route Map | dagre (graph layout)                          |\n| Container | Docker · Alpine Linux · all JS/CSS dependencies bundled at build time (no CDN at runtime) |\n\n---\n\n## Contributing\n\nPull requests are welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) for how to report bugs, suggest features, and run the project locally.\n\n## Star History\n\n\u003ca href=\"https://www.star-history.com/?repos=chr0nzz%2Ftraefik-manager\u0026type=date\u0026legend=top-left\"\u003e\n \u003cpicture\u003e\n   \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://api.star-history.com/image?repos=chr0nzz/traefik-manager\u0026type=date\u0026theme=dark\u0026legend=top-left\" /\u003e\n   \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://api.star-history.com/image?repos=chr0nzz/traefik-manager\u0026type=date\u0026legend=top-left\" /\u003e\n   \u003cimg alt=\"Star History Chart\" src=\"https://api.star-history.com/image?repos=chr0nzz/traefik-manager\u0026type=date\u0026legend=top-left\" /\u003e\n \u003c/picture\u003e\n\u003c/a\u003e\n\n## License\n\n[GPL-3.0](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchr0nzz%2Ftraefik-manager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchr0nzz%2Ftraefik-manager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchr0nzz%2Ftraefik-manager/lists"}