Tailscale 集成
从任何设备私密、加密地访问 Open WebUI。无需开放端口,无需管理证书。
Tailscale 在您的设备之间创建了一个基于 WireGuard 的网状 VPN(“tailnet”)。每台设备都会获得一个稳定的主机名,例如 my-server.tail1234.ts.net,并且 Tailscale 可以自动配置受信任的 HTTPS 证书。您的 Open WebUI 实例保持完全私有,仅供您 tailnet 上的设备访问。
当您希望在设备之间进行私密的、经过身份验证的访问,而不将 Open WebUI 暴露给公共互联网时,Tailscale 是理想之选。非常适合个人配置、小型团队,或者随时随地从您的手机或笔记本电脑访问家庭服务器。
前提条件
| 要求 | 详情 |
|---|---|
| Open WebUI | 在本地运行,端口为 8080(默认) |
| Tailscale 账户 | 个人使用免费,见 tailscale.com |
| 已安装 Tailscale | 运行 Open WebUI 的服务器和任何客户端设备上均已安装 |
快速开始
1. 安装 Tailscale
- macOS
- Linux
- Windows
从 Mac App Store 下载,或者:
brew install tailscalecurl -fsSL https://tailscale.com/install.sh | sh从 tailscale.com/download 下载。
2. 连接服务器
在运行 Open WebUI 的机器上:
sudo tailscale up您的机器会获得一个 tailnet 主机名,例如 my-server.tail1234.ts.net。使用以下命令找到它:
tailscale status3. 访问 Open WebUI
在同一 tailnet 上的任何设备,打开:
http://my-server.tail1234.ts.net:8080
此连接已由 WireGuard 进行端到端加密。对于需要 HTTPS 的浏览器功能(例如语音通话),请继续阅读下一节。
使用 Tailscale 实现 HTTPS
Tailscale 可以为您 的 tailnet 主机名配置受信任的 Let's Encrypt 证书,无需反向代理。
有关完整的 HTTPS 设置步骤(证书生成、tailscale serve、配置 WEBUI_URL),请参阅专用参考指南:
简短版本:
# 直接将 HTTPS 流量代理到 Open WebUI
sudo tailscale serve https / http://localhost:8080您的实例现在可以在 https://my-server.tail1234.ts.net 访问,并带有有效的 TLS 证书。
通过 Tailscale 进行身份认证 (SSO)
Tailscale Serve 可以作为身份验证反向代理。当请求通过 tailscale serve 时,Tailscale 会自动使用已验证用户的邮箱地址设置 Tailscale-User-Login 标头。Open WebUI 可以信任此标头作为单点登录机制。您 tailnet 上的用户将自动登录 ,而不需要单独的 Open WebUI 密码。
运作原理
- 一个 Tailscale 边车 (sidecar) 容器与 Open WebUI 并行运行
- Tailscale Serve 将 HTTPS 流量代理到 Open WebUI 并注入身份标头
- Open WebUI 读取
Tailscale-User-Login和Tailscale-User-Name以识别用户 - 用户在首次访问时将自动注册并登录
Docker Compose 设置
创建一个 tailscale/serve.json 文件,配置 Tailscale Serve 代理到 Open WebUI:
{
"TCP": {
"443": {
"HTTPS": true
}
},
"Web": {
"${TS_CERT_DOMAIN}:443": {
"Handlers": {
"/": {
"Proxy": "http://open-webui:8080"
}
}
}
}
}然后使用 Tailscale 边车设置 Docker Compose 文件:
---
services:
open-webui:
image: ghcr.io/open-webui/open-webui:main
volumes:
- open-webui:/app/backend/data
environment:
- WEBUI_AUTH_TRUSTED_EMAIL_HEADER=Tailscale-User-Login
- WEBUI_AUTH_TRUSTED_NAME_HEADER=Tailscale-User-Name
restart: unless-stopped
tailscale:
image: tailscale/tailscale:latest
environment:
- TS_AUTH_ONCE=true
- TS_AUTHKEY=${TS_AUTHKEY}
- TS_EXTRA_ARGS=--advertise-tags=tag:open-webui
- TS_SERVE_CONFIG=/config/serve.json
- TS_STATE_DIR=/var/lib/tailscale
- TS_HOSTNAME=open-webui
volumes:
- tailscale:/var/lib/tailscale
- ./tailscale:/config
- /dev/net/tun:/dev/net/tun
cap_add:
- net_admin
- sys_module
restart: unless-stopped
volumes:
open-webui: {}
tailscale: {}您需要在 Tailscale 管理控制台中创建一个具有 device write 权限的 OAuth client,并将该密钥作为 TS_AUTHKEY 传递。
您的实例将可通过 https://open-webui.TAILNET_NAME.ts.net 进行访问。
如果您在与 Open WebUI 相同的网络上下文中运行 Tailscale,用户可能会绕过 Serve 代理直接访问 Open WebUI,从而跳过信任标头的身份验证。使用 Tailscale ACLs 将访问限制为仅限端口 443。
有关信任标头身份验证的更多详细信息,请参阅 SSO 文档。
Tailscale Funnel(可选的公共访问)
如果您希望公开分享 Open WebUI 而不需要客户端安装 Tailscale,Tailscale Funnel 可以将您的 tailscale serve 终点暴露给互联网:
sudo tailscale funnel https / http://localhost:8080您的 Open WebUI 现 在可以通过有效的 TLS 证书在 https://my-server.tail1234.ts.net 公开访问。Funnel 通过 Tailscale 的基础设施路由流量,类似于 Cloudflare Tunnel。
Funnel 会使您的 Open WebUI 可以被互联网上的任何人访问。在启用它之前,请确保您已在 Open WebUI 中配置了身份验证。
快速参考
| 内容 | 命令 / 值 |
|---|---|
| 连接到 tailnet | sudo tailscale up |
| 检查主机名 | tailscale status |
| 通过 HTTPS 提供服务 | sudo tailscale serve https / http://localhost:8080 |
| 公共访问 (Funnel) | sudo tailscale funnel https / http://localhost:8080 |
| 手动生成证书 | sudo tailscale cert my-server.tail1234.ts.net |
| 管理控制台 | login.tailscale.com/admin |
| 设置 CORS 来源 | CORS_ALLOW_ORIGIN=https://my-server.tail1234.ts.net |
| 信任的邮箱标头 | WEBUI_AUTH_TRUSTED_EMAIL_HEADER=Tailscale-User-Login |
| 信任的名称标头 | WEBUI_AUTH_TRUSTED_NAME_HEADER=Tailscale-User-Name |
相关页面
- 使用 Tailscale 的 HTTPS - 专用的 HTTPS/TLS 参考
- SSO (Trusted Header) - 通用的信任标头配置
- 分享 Open WebUI - 所有分享方法的概述