Tabby 部署在反向代理后面时如何配置 External URL 保证邀请与重置链接可用?
2026/9/12 14:24:08 网站建设 项目流程

Tabby 部署在反向代理后面时如何配置 External URL 保证邀请与重置链接可用?

【免费下载链接】tabbySelf-hosted AI coding assistant项目地址: https://gitcode.com/GitHub_Trending/tab/tabby

把 Tabby(Self-hosted AI coding assistant)部署到 Nginx 等反向代理之后,一个常见的坑是:邮件里的成员邀请链接、密码重置链接仍然指向http://localhost:8080,外部用户点击后无法打开。原因是 Tabby 用「External URL」作为生成这些链接的基础地址,而它的默认值就是http://localhost:8080。本文给出从反向代理配置到 External URL 设置、再到验证邀请与重置链接可用的完整路径。

前提条件:

  • Tabby 已通过 HTTP 服务方式运行(默认监听localhost:8080);
  • 需要在 Web 界面完成管理员配置,涉及 General 设置页、Mail Delivery 页和 Users & Groups 页;
  • 如果邀请通过邮件发送、用户通过邮件重置密码,还需要先配置 SMTP(见 Mail Delivery 文档)。

External URL 的作用范围

根据 General Settings 文档,External URL 的填写要求是:

  • 必须是用户实际访问 Tabby 的地址,且以http://https://开头;
  • 未配置时 Tabby 默认使用http://localhost:8080

Tabby 会用这个 URL 作为基础地址,为以下功能生成导航链接:

  • 成员邀请(member invitations);
  • 密码重置(password reset);
  • 代码浏览(code browsing);
  • 认证回调(authentication callbacks,如 OAuth 回调)。

文档明确提醒:这个 URL 必须准确且可访问,配置错误会导致所有动态生成的链接和系统跳转全部失效。所以反代场景下,External URL 应填反代对外的域名/地址,而不是localhost

第一步:配置反向代理

Deploy Tabby behind a reverse proxy 文档指出,Tabby 是标准 HTTP 服务,可以放在反向代理后面,唯一需要注意的点是启用 WebSocket 连接——它用于 Answer Engine 的答案流式输出。以 Nginx 为例,在配置中加入:

location / { proxy_pass http://localhost:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; }

其中http://localhost:8080是 Tabby 服务实际监听的地址,如果 Tabby 不是本机 8080 端口,替换为实际的后端地址。Upgrade/Connection "upgrade"两行就是文档强调的 WebSocket 透传配置,缺少它们会影响 Answer Engine 的流式回答。

第二步:设置 External URL

在 Tabby Web 界面的General设置页找到Network Setting部分的External URL输入框(对应 General Settings 文档描述的同一项配置):

  1. 填入反向代理对外的地址,例如https://tabby.example.com(以文档要求为准,必须以http://https://开头);
  2. 点击Update保存。

注意界面会把输入值规范化为其 origin 形式后提交(见 network-form.tsx/settings/general/components/network-form.tsx)),也就是说保存的是协议加域名/端口的部分,不带路径。

第三步:配置 SMTP(邮件邀请与重置的前置条件)

邀请链接和密码重置链接都是通过邮件送达的。根据 Mail Delivery 文档,需要在Mail Delivery页面配置 SMTP 服务器(Amazon SES、SendGrid、Mailgun、Resend 等均可,填入服务商提供的 SMTP 服务器细节)。

配置完成后用页面提供的验证方式确认邮件通道可用:在Send Test Email To字段填入一个邮箱地址,点击Send,如果 SMTP 配置正确,该邮箱会收到 Tabby 发出的测试邮件(文档附有测试邮件示例截图)。

验证:邀请与重置链接指向反代地址

Users & Groups 文档说明了两条核对链接的路径,任选其一即可确认 External URL 生效:

方式一:直接检查 Pending Invites 里的链接(不依赖邮件)

  1. 进入Users & Groups页面,找到邀请表单,输入收件人邮箱并点击 Invite;
  2. Pending Invites列表中可以看到该邀请的 sign-up link;
  3. 检查该链接:其基础地址应为刚才配置的 External URL,而不是http://localhost:8080。文档也支持直接复制这个链接分享给用户,绕过邮件投递,因此它是最快的核对方式。

方式二:通过真实邮件核对

  • 邀请邮件:收件人点击邮件中的链接完成注册;
  • 密码重置:用户收到重置邮件,点击链接修改密码。

从源码可以看到这两类链接的确是以配置的 External URL 为基础拼接的,分别为{{EXTERNAL_URL}}/auth/signup?invitationCode={{CODE}}&email={{EMAIL}}(见 invitation.tsx)和{{EXTERNAL_URL}}/auth/reset-password?code={{CODE}}(见 password_reset.tsx)。验证时只需确认邮件里链接的域名部分是反代对外地址,且外部网络环境下能打开对应的注册页/重置页。

限制与注意点

  • 如果 SMTP 未配置,邀请邮件和密码重置邮件无法发送;此时仍可通过 Pending Invites 列表复制链接的方式邀请用户。
  • External URL 配置错误时,文档给出的后果是「所有动态生成的链接和系统跳转都会失效」,包括 OAuth 认证回调,因此修改后建议一并检查 SSO 登录是否正常。
  • 反向代理侧如果缺少 WebSocket 透传配置,不影响邀请/重置链接,但会影响 Answer Engine 的流式回答,这是同一份反代配置中需要同时保留的部分。
  • 配置完成后,链接生成、SMTP 测试、邀请链接检查三者都通过,即完成本场景的部署验证。

【免费下载链接】tabbySelf-hosted AI coding assistant项目地址: https://gitcode.com/GitHub_Trending/tab/tabby

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询