使用 HTTPS 保护您的 Open WebUI 🔒
虽然对于基本的本地操作 HTTPS 并非严格要求,但我们 强烈建议 在所有部署中使用它,并且对于启用特定功能(如语音通话)是 强制性 的。
关键功能依赖
由于现代浏览器的安全策略,语音通话(WebRTC)和某些 音频录制 功能要求网站必须通过安全上下文(HTTPS 或 localhost)提供。如果您通过非 localhost 的 IP 地址或域名访问 Open WebUI,则必须启用 HTTPS。
为什么使用 HTTPS?
- 安全性: 加密客户端和服务器之间的所有流量,保护敏感信息和 API 密钥。
- 浏览器功能: 启用语音通话、麦克风访问和其他受限的 Web API。
- 信任: 防止中间人攻击和内容篡改。
选项 1:使用反向代理(推荐)
这是启用 HTTPS 最灵活且最常用的方法。您可以使用 Nginx、Caddy 或 Traefik 等反向代理来处理 SSL 终止。
A. 使用 Caddy(最简单)
Caddy 默认自动处理证书获取(通过 Let's Encrypt)和续签。
示例 Caddyfile:
your-domain.com {
reverse_proxy localhost:3000
}
B. 使用 Nginx 和 Certbot
- 安装 Nginx。
- 配置 Nginx 将流量代理到 Open WebUI。
- 运行 Certbot 获取并自动安装 Let's Encrypt 证书。
sudo apt update
sudo apt install nginx certbot python3-certbot-nginx
选项 2:在 Docker Compose 中使用 Traefik
如果您使用 Docker,Traefik 可以自动发现您的服务并为其应用 HTTPS。
示例 docker-compose.yml 摘要:
services:
openwebui:
image: ghcr.io/open-webui/open-webui:main
labels:
- "traefik.enable=true"
- "traefik.http.routers.openwebui.rule=Host(`your-domain.com`)"
- "traefik.http.routers.openwebui.entrypoints=websecure"
- "traefik.http.routers.openwebui.tls.certresolver=myresolver"
选项 3:云服务商和负载均衡器
如果您在云端(如 AWS、Google Cloud 或 Azure)部署,您可以使用他们提供的负载均衡器或应用网关:
- 在服务商控制台中创建 负载均衡器。
- 附加由云服务商管理的 SSL 证书。
- 将流量从端口 443(HTTPS)转发到运行 Open WebUI 的实例的端口 3000。
启用 HTTPS 后的配置
启用 HTTPS 后,请确保在 管理员设置 > 常规 中更新您的 WebUI 基本 URL,或者设置环境变量:
WEBUI_URL=https://your-domain.com
这将确保 Open WebUI 生成正确的链接,并正确处理重定向和 Webhook。
故障排除
- 混合内容警告: 确保所有外部资源(如图片或脚本)也通过 HTTPS 加载。
- WebSocket 连接: 确保您的反向代理配置为处理
Upgrade标头以支持 WebSocket(这对于实时响应至关重要)。 - 防火墙: 确保您的服务器防火墙(如
ufw或iptables)允许 443 端口的流量。