Skip to main content

使用 HTTPS 保护您的 Open WebUI 🔒

虽然对于基本的本地操作 HTTPS 并非严格要求,但我们 强烈建议 在所有部署中使用它,并且对于启用特定功能(如语音通话)是 强制性 的。

关键功能依赖

由于现代浏览器的安全策略,语音通话(WebRTC)和某些 音频录制 功能要求网站必须通过安全上下文(HTTPS 或 localhost)提供。如果您通过非 localhost 的 IP 地址或域名访问 Open WebUI,则必须启用 HTTPS。

为什么使用 HTTPS?

  • 安全性: 加密客户端和服务器之间的所有流量,保护敏感信息和 API 密钥。
  • 浏览器功能: 启用语音通话、麦克风访问和其他受限的 Web API。
  • 信任: 防止中间人攻击和内容篡改。

选项 1:使用反向代理(推荐)

这是启用 HTTPS 最灵活且最常用的方法。您可以使用 NginxCaddyTraefik 等反向代理来处理 SSL 终止。

A. 使用 Caddy(最简单)

Caddy 默认自动处理证书获取(通过 Let's Encrypt)和续签。

示例 Caddyfile:

your-domain.com {
reverse_proxy localhost:3000
}

B. 使用 Nginx 和 Certbot

  1. 安装 Nginx
  2. 配置 Nginx 将流量代理到 Open WebUI。
  3. 运行 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)部署,您可以使用他们提供的负载均衡器或应用网关:

  1. 在服务商控制台中创建 负载均衡器
  2. 附加由云服务商管理的 SSL 证书
  3. 将流量从端口 443(HTTPS)转发到运行 Open WebUI 的实例的端口 3000。

启用 HTTPS 后的配置

启用 HTTPS 后,请确保在 管理员设置 > 常规 中更新您的 WebUI 基本 URL,或者设置环境变量:

WEBUI_URL=https://your-domain.com

这将确保 Open WebUI 生成正确的链接,并正确处理重定向和 Webhook。


故障排除

  • 混合内容警告: 确保所有外部资源(如图片或脚本)也通过 HTTPS 加载。
  • WebSocket 连接: 确保您的反向代理配置为处理 Upgrade 标头以支持 WebSocket(这对于实时响应至关重要)。
  • 防火墙: 确保您的服务器防火墙(如 ufwiptables)允许 443 端口的流量。