跳到主要内容
注意

本教程由社区贡献,未获得 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 证书。