You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker部署的Open-WebUI网站配置SSL证书问题求助

解决方案:给Docker部署的Open-WebUI配置Porkbun SSL证书

方案1:用Nginx Proxy Manager(图形化反向代理,新手友好)

这个方案无需修改原Open-WebUI容器,通过反向代理层实现HTTPS,全程图形界面操作:

  1. 部署Nginx Proxy Manager容器
    新建docker-compose.yml文件:

    version: '3.8'
    services:
      npm:
        image: 'jc21/nginx-proxy-manager:latest'
        restart: unless-stopped
        ports:
          - '80:80'  # 映射HTTP端口
          - '443:443' # 映射HTTPS端口
          - '81:81'  # 映射管理界面端口
        volumes:
          - ./data:/data
          - ./letsencrypt:/etc/letsencrypt
          - ./custom_certs:/custom_certs # 用于存放你的Porkbun证书
    

    执行启动命令:

    docker-compose up -d
    
  2. 配置反向代理规则

    • 访问http://你的迷你PC本地IP:81,用默认账号admin@example.com、密码changeme登录并修改密码。
    • 左侧菜单选择Hosts -> Proxy Hosts -> Add Proxy Host:
      • Domain Names:填写你的Porkbun域名(如yourdomain.com)
      • Forward Hostname/IP:填写Open-WebUI容器的IP(可通过docker inspect 你的Open-WebUI容器名 | grep IPAddress查看)或容器名(需确保两个容器在同一Docker网络)
      • Forward Port:填写Open-WebUI的端口(默认8080)
      • 切换到SSL标签:
        • SSL Certificate选择Custom
        • 点击Upload Certificate,上传你的Porkbun证书文件(fullchain.pem)和私钥文件(privkey.pem)
        • 勾选Force SSL和HTTP/2 Support后保存。
  3. 调整路由器端口转发
    将路由器的443端口转发到迷你PC的443端口,80端口保持转发到迷你PC的80端口(NPM会自动将HTTP请求跳转至HTTPS)。

方案2:直接给Open-WebUI容器配置HTTPS(无需额外代理)

Open-WebUI原生支持通过环境变量启用HTTPS,直接挂载证书即可:

  1. 准备证书文件
    将Porkbun下载的fullchain.pem(证书链)和privkey.pem(私钥)放到迷你PC的指定文件夹,比如~/open-webui/certs/,并设置文件权限:

    chmod 644 ~/open-webui/certs/*.pem
    
  2. 修改Open-WebUI启动配置
    如果用docker run启动:

    docker run -d \
      --name open-webui \
      -p 80:8080 \
      -p 443:443 \ # 新增HTTPS端口映射
      -v ~/open-webui/certs/:/certs/ \ # 挂载证书文件夹
      -e ENABLE_HTTPS=true \
      -e SSL_CERT_PATH=/certs/fullchain.pem \
      -e SSL_KEY_PATH=/certs/privkey.pem \
      --restart always \
      ghcr.io/open-webui/open-webui:main
    

    如果用docker-compose,修改配置文件:

    version: '3.8'
    services:
      open-webui:
        image: ghcr.io/open-webui/open-webui:main
        restart: always
        ports:
          - "80:8080"
          - "443:443" # 新增HTTPS端口映射
        volumes:
          - ./open-webui/data:/app/backend/data
          - ./certs/:/certs/ # 挂载证书文件夹
        environment:
          - ENABLE_HTTPS=true
          - SSL_CERT_PATH=/certs/fullchain.pem
          - SSL_KEY_PATH=/certs/privkey.pem
    
  3. 重启容器并调整转发
    重启Open-WebUI容器,将路由器的443端口转发到迷你PC的443端口,访问https://你的域名即可生效。

关键注意事项

  • 确保迷你PC防火墙开放了80和443端口,否则外部无法访问。
  • 若使用反向代理,建议将两个容器加入同一Docker网络,避免依赖动态IP:
    docker network create web-network
    docker network connect web-network 你的Open-WebUI容器名
    docker network connect web-network 你的NPM容器名
    
    之后在NPM的Forward Hostname/IP中填写Open-WebUI的容器名即可。
  • 证书到期后,替换certs文件夹内的文件并重启对应容器即可更新。

内容的提问来源于stack exchange,提问作者Eskil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 10:55:19