跳到主要内容
警告

本教程是社区贡献内容,并非 Open WebUI 团队提供支持。它仅作为如何根据您的特定用例自定义 Open WebUI 的演示。想贡献吗?请查看贡献教程。

使用 Nginx 配置 HTTPS

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

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

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

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

Nginx Proxy Manager

Nginx Proxy Manager (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 Proxy Manager

    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 证书
  • 访问 Nginx Proxy Manager,地址为 http://server_ip:81。例如:192.168.0.6:81
  • 使用默认凭据登录(admin@example.com / changeme)。按要求更改它们。
  • 前往 SSL Certificates → Add SSL Certificate → Let's Encrypt。
  • 输入您的电子邮件和从 DuckDNS 获取的域名。一个域名包含星号,另一个不包含。例如:*.hello.duckdns.orghello.duckdns.org
  • 选择 Use a DNS challenge,选择 DuckDNS,并粘贴您的 API 令牌。例如:dns_duckdns_token=f4e2a1b9-c78d-e593-b0d7-67f2e1c9a5b8
  • 同意 Let's Encrypt 的条款并保存。如果需要更改传播时间(120 秒)。
  1. 创建代理主机
  • 对于每个服务(例如 openwebui, nextcloud),前往 Hosts → Proxy Hosts → Add Proxy Host。
  • 填写域名(例如 openwebui.hello.duckdns.org)。
  • 将 Scheme 设置为 HTTP(默认),启用 Websockets support 并指向您的 Docker IP(如果 open-webui 的 docker 与 NGINX manager 运行在同一台计算机上,此 IP 将与之前的 IP 相同(例如:192.168.0.6))。
  • 选择之前生成的 SSL 证书,强制使用 SSL,并启用 HTTP/2。
  1. 添加您用于连接 open-webui 的 URL(否则会遇到 HTTPS 错误)
  • 前往您的 open-webui → Admin Panel → Settings → General
  • 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 证书。