>_ DevTrendszh

语言

首页

语言

板块

前端 后端 移动端 DevOps AI / ML 游戏开发 区块链 嵌入式 安全
JavaScript

在浏览器中管理 Traefik,无需手动编辑 YAML

如果你在家用实验室或生产服务器上积极使用 Traefik 作为反向代理,你可能已经熟悉它的主要限制。内置仪表板看起来不错,但完全是静态的。你可以查看路由列表,但你无法直接从浏览器添加新域名或调整中间件。你必须打开终端,通过 SSH 连接,然后编辑 YAML 文件。一个空格放错位置——你所有的流量就会停止。

一位昵称为 chr0n6 的开发者遇到了这个问题,并创建了 Traefik Manager 项目。这是一个用于可视化路由管理的 Web 面板,让你不必在深夜埋头于文本编辑器。

Traefik Manager Interface

为什么要用 Web 界面替代熟悉的文件编辑方式

Traefik 的所有逻辑都围绕路由(Routes)、服务(Services)和中间件(Middlewares)的概念构建。当你拥有超过十几个服务时,维护动态配置就变成了一项日常琐事。

Traefik Manager 提供了一个可视化构建器来创建和编辑动态配置文件。该工具不仅仅是从头生成 YAML——它使用 ruamel.yaml 库。这意味着从 UI 保存时,文件内的手动注释和 Go 模板不会被覆盖。

该界面处理几个常见的 Traefik 管理任务:

  • 支持 PathPrefix 或 HostRegexp 等复杂规则的 HTTP、TCP 和 UDP 路由构建器。
  • 适用于 Jellyfin、Plex 和 Emby 等流行媒体服务器的现成预设,一键配置正确的安全标头和流媒体参数。
  • TLS 证书管理,显示到期日期。
  • 内置 Monaco Editor,带语法高亮,适用于需要编写不常见或自定义规则的情况。

无需阅读文档的中间件设置向导

该项目最贴心的细节是中间件的逐步向导。与其每次都在 Traefik 文档中搜索授权标头或请求速率限制的确切语法,不如从 24 个现成向导中选择所需的场景。

支持的场景包括:

  • Basic 和 Digest 授权。
  • Forward Auth 配置,用于与 Authentik、Authelia 和 Gatekeeper 配合使用。
  • OIDC / SSO 配置。
  • 速率限制和 IP 白名单。
  • URL 前缀替换、删除或添加。

每个向导都会在表单中提出明确的问题,然后生成文件中相应的部分。如果你使用 Cloudflare 或其他外部服务进行代理,该工具会建议如何正确配置可信跳数深度,这样客户端 IP 地址就不会在传输过程中丢失。

更改回滚和自动 Git 备份

更改代理设置时,最大的担忧是意外破坏对代理本身的访问。Traefik Manager 内置了对这种场景的保护。

在每次保存文件之前,系统都会创建一个带时间戳的定向本地备份。如果出现问题,只需按一下按钮即可恢复之前的工作版本。

对于喜欢将配置存储在仓库中的人,有一个内置的 Git 自动推送机制。你可以链接 GitHub、GitLab、Gitea 或 Forgejo。任何更改后,面板都会自动提交并推送到分支。界面中有一个历史查看器,带有可视化 diff 比较,因此你始终可以看到谁在什么时候更改了配置。

通过代理管理多台服务器

如果你不只有一台服务器,而是多台主机的基础设施,你不需要在每台服务器上部署和打开单独的面板。

该项目包含 Traefik Manager Agent (TMA),使用 Go 编写。你将它与 Traefik 一起安装在远程机器上,生成一个 API 密钥,然后连接到中央界面。面板顶部会出现一个服务器切换器。通过它,你可以查看日志、修改路由,并在任何已连接的主机上回滚配置。

更重要的是,代理甚至不需要直接的 Git 设置——主服务器可以获取它们的配置并保存到仓库的单独分支中。

监控、CrowdSec 和安全性

该面板不仅限于创建文件。它可以收集并显示实时分析数据。

监控选项卡显示所有服务的状态、代理版本和活动的入口点。它还会显示影响你特定 Traefik 版本发现的漏洞(CVE)警告。这有助于你及时更新容器。

如果 CrowdSec 在服务器上运行,面板会连接到其 LAPI。从浏览器中,你可以查看被阻止地址的列表、取消阻止特定 IP,或强制将可疑流量路由到验证码。

从面板本身的安全角度来看,一切都经过深思熟虑:

  • 通过 bcrypt 和 TOTP 双因素认证进行授权。
  • OIDC 支持通过公司范围内的单一账户登录。
  • 内置 CSRF、会话攻击和速率限制保护。
  • 移动应用令牌,值得特别一提。

开发者还发布了 Android 移动客户端(React Native),通过 API 密钥工作。从手机上,你可以方便地快速禁用故障路由或随时检查服务状态。

快速开始

你可以通过官方安装脚本或使用标准 Compose 文件,用一条命令启动面板。

最小化 docker-compose.yml 示例:

services:
  traefik-manager:
    image: ghcr.io/chr0nzz/traefik-manager:latest
    container_name: traefik-manager
    restart: unless-stopped
    ports:
      - "5000:5000"
    environment:
      - COOKIE_SECURE=false
    volumes:
      - /path/to/traefik/dynamic.yml:/app/config/dynamic.yml
      - /path/to/traefik-manager/config:/app/config
      - /path/to/traefik-manager/backups:/app/backups

运行 docker compose up -d 后,导航到 http://localhost:5000 并完成简短的初始设置向导。

底层原理

项目架构简单可靠。后端使用 Python 3.11 和 Flask 编写,带有 Gunicorn 服务器。前端没有使用重型框架:纯 JavaScript、用于布局的 Tailwind CSS、Phosphor 图标和 Monaco 编辑器。

所有 JS 和 CSS 资源都直接打包到 Docker 镜像中,因此面板独立运行,在运行期间不会向外部 CDN 发出任何请求。

总结

Traefik Manager 解决了社区中一个早就该解决的问题。该工具适用于家庭实验室所有者、小型团队和厌倦了手动编辑 YAML 文件的系统管理员。

如果你的 Traefik 服务超过五个服务,或者你管理多个节点,这个项目绝对值得测试。便捷的中间件设置向导和内置的更改回滚功能将在配置网络时节省大量时间。

相关项目