
Tabby 部署在反向代理后面时如何配置 External URL 保证邀请与重置链接可用【免费下载链接】tabbySelf-hosted AI coding assistant项目地址: https://gitcode.com/GitHub_Trending/tab/tabby把 TabbySelf-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 文档描述的同一项配置填入反向代理对外的地址例如https://tabby.example.com以文档要求为准必须以http://或https://开头点击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 里的链接不依赖邮件进入Users Groups页面找到邀请表单输入收件人邮箱并点击 Invite在Pending Invites列表中可以看到该邀请的 sign-up link检查该链接其基础地址应为刚才配置的 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),仅供参考