Skip to main content
warning

本教程是社区贡献,不受Open WebUI团队支持。它仅作为如何为您的特定用例自定义Open WebUI的演示。想要贡献?请查看贡献教程。

使用Nginx配置HTTPS

确保用户与Open WebUI之间的安全通信至关重要。HTTPS(超文本传输安全协议)加密传输的数据,保护其免受窃听和篡改。通过将Nginx配置为反向代理,您可以无缝地为Open WebUI部署添加HTTPS,增强安全性和可信度。

本指南提供三种设置HTTPS的方法:

  • 自签名证书:适用于开发和内部使用,使用docker。
  • Let's Encrypt:适用于需要可信SSL证书的生产环境,使用docker。
  • Windows+自签名:在Windows上进行开发和内部使用的简化说明,无需docker。

选择最适合您部署需求的方法。

Nginx代理管理器

Nginx代理管理器(NPM)允许您轻松管理反向代理并使用Let's Encrypt的有效SSL证书保护您的本地应用程序(如Open WebUI)。此设置启用HTTPS访问,这对于在许多移动浏览器上使用语音输入功能是必需的,因为它们的安全要求,而无需直接将应用程序的特定端口暴露到互联网。

前置条件

  • 运行Docker和open-webui容器的家庭服务器。
  • 域名(免费选项如DuckDNS或付费选项如Namecheap/GoDaddy)。
  • Docker和DNS配置的基础知识。

步骤

  1. 为Nginx文件创建目录:

    mkdir ~/nginx_config
    cd ~/nginx_config
  2. 使用Docker设置Nginx代理管理器:

    nano docker-compose.yml
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
- '80:80'
- '81:81'
- '443:443'
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt

运行容器:

docker-compose up -d
  1. 配置DNS和域名:

    • 登录您的域名提供商(例如DuckDNS)并创建域名。
    • 将域名指向您的代理本地IP(例如192.168.0.6)。
    • 如果使用DuckDNS,请从其仪表板获取API令牌。
以下是在 https://www.duckdns.org/domains 中操作的简单示例:
  1. 设置SSL证书:
  • 在http://server_ip:81访问Nginx代理管理器。例如:192.168.0.6:81
  • 使用默认凭据登录(admin@example.com / changeme)。按要求更改它们。
  • 转到SSL证书 → 添加SSL证书 → Let's Encrypt。
  • 输入您的电子邮件和从DuckDNS获得的域名。一个域名包含星号,另一个不包含。示例:*.hello.duckdns.orghello.duckdns.org
  • 选择使用DNS质询,选择DuckDNS,并粘贴您的API令牌。示例: dns_duckdns_token=f4e2a1b9-c78d-e593-b0d7-67f2e1c9a5b8
  • 同意Let's Encrypt条款并保存。如需要更改传播时间(120秒)。
  1. 创建代理主机:
  • 对于每个服务(例如openwebui、nextcloud),转到主机 → 代理主机 → 添加代理主机。
  • 填写域名(例如openwebui.hello.duckdns.org)。
  • 将方案设置为HTTP(默认),启用Websockets支持并指向您的Docker IP(如果带有open-webui的docker与NGINX管理器在同一台计算机上运行,这将是之前的相同IP(示例:192.168.0.6
  • 选择之前生成的SSL证书,强制SSL,并启用HTTP/2。
  1. 将您的url添加到open-webui(否则会出现HTTPS错误):
  • 转到您的open-webui → 管理面板 → 设置 → 常规
  • Webhook URL文本字段中,输入您将通过Nginx反向代理连接到open-webui的URL。示例:hello.duckdns.org(这个不是必需的)或openwebui.hello.duckdns.org(这个是必需的)。

访问WebUI:

通过HTTPS访问Open WebUI,地址为hello.duckdns.orgopenwebui.hello.duckdns.org(根据您的设置方式)。

防火墙注意事项:请注意,本地防火墙软件(如Portmaster)可能会阻止内部Docker网络流量或所需端口。如果您遇到问题,请检查您的防火墙规则以确保允许此设置所需的通信。

下一步

设置HTTPS后,通过以下地址安全访问Open WebUI:

如果您使用域名,请确保您的DNS记录配置正确。对于生产环境,建议使用Let's Encrypt获取可信的SSL证书。