目 录CONTENT

文章目录

【OpenWebUI】把 CPA 反代接入自托管 AI 对话面板,Docker-OpenWebUI

JIN
JIN
2026-05-26 / 0 评论 / 0 点赞 / 4 阅读 / 0 字
广告 广告

前言:

OpenWebUI 是一个 开源的、自托管的、可扩展 AI 对话前端,支持任何 OpenAI 兼容 API(包括 xAI Grok、CPA 反代、Ollama 本地模型等),自带账号管理、对话历史、图像生成、知识库、插件等全套功能。它就像你自己的 ChatGPT 网页版,但数据 100% 在自己 VPS 上。

我们将使用 Docker 方式部署 OpenWebUI(官方主镜像,已内置完整管理面板和图像生成模块)。

部署完成后,可以把之前搭好的 CPAProxyAPI 直接挂进去,把 xAI 的 grok-imagine-imagegrok-imagine-image-quality 这类图像模型接到一个能正常显示图片的界面里——这是 codex GUI 这类纯代码壳子做不到的事情。

【比如你 codex GUI 切到 grok-imagine 模型就报"image model not available on this endpoint",是因为图像模型只能走 /v1/images/generations 端点,而 codex 走的是 /v1/chat/completions。OpenWebUI 同时支持这两个端点,所以画图、聊天都能用】


一、加 SWAP(新手忽略)

注意:此步骤新手可直接跳过,直接进行第二步

若服务器内存 ≤ 1G 可添加 swap 虚拟内存。OpenWebUI 镜像本体加运行时大约要 1.5G 内存,小机器建议加 swap。

设置 SWAP 可以用脚本:

wget -O box.sh https://raw.githubusercontent.com/BlueSkyXN/SKY-BOX/main/box.sh && chmod +x box.sh && clear && ./box.sh

填写 18 后,选择 1,填写 2048 或者 1024,然后回车


二、更新工具

如果你已经按 CPA 那篇教程装过 Docker,本章可以直接跳到第五章。否则从这里开始。

2.1、切换到 root 用户
sudo -i
2.2、升级 packages
apt update -y
2.3、安装常用工具
apt install wget curl sudo vim git -y
工具 作用
wget 下载文件
curl 网络请求
vim 文本编辑
git 下载项目

三、安装 Docker 环境(非大陆)

此步为非大陆 vps 安装 docker 的步骤,大陆服务器请参考 CPA 教程的 1.7、补充 部分。

3.1、安装
curl -fsSL https://get.docker.com | bash
3.2、查看 docker 版本
docker -v

出现 Docker version 22.xx 或更高版本即可。

3.3、设置开机自动启动
systemctl enable docker

四、安装 Docker-compose(非大陆)

4.1、安装 compose 插件
apt install docker-compose-plugin -y
4.2、查看版本
docker compose version

五、安装项目(OpenWebUI)

5.1、创建目录

mkdir -p /root/data/docker_data/openwebui

目录结构(和你已有的 CPA 项目并列,互不打架):

/root
└─ data
   └─ docker_data
      ├─ cli-proxy-api      ← 已有的 CPA
      └─ openwebui          ← 本次要装的

5.2、进入目录

cd /root/data/docker_data/openwebui

5.3、配置 docker-compose.yml

nano docker-compose.yml

复制粘贴下面这段:

services:
  openwebui:
    image: ghcr.io/open-webui/open-webui:main      # 官方最新主镜像
    pull_policy: always                            # 每次启动检查更新
    container_name: openwebui
    ports:
      - "3000:8080"                                # Web 访问端口(左边可改为你想暴露的端口)
    volumes:
      - ./data:/app/backend/data                   # 挂载数据目录(账号、对话、配置全在这里)
    environment:
      - TZ=Asia/Shanghai                           # 时区
      - WEBUI_AUTH=true                            # 开启账号认证(建议保留)
      - DEFAULT_USER_ROLE=pending                  # 新注册用户默认待审核,防止公网被白嫖
    restart: unless-stopped
    extra_hosts:
      - "host.docker.internal:host-gateway"        # 关键:让容器能访问宿主机的 CPA

⚠️ 关键点说明:

  • extra_hosts 那行别删。这是为了让 OpenWebUI 容器能通过 host.docker.internal 这个域名访问到宿主机上跑着的 CPA。如果两个容器在同一台 VPS 上但分属不同 compose 项目,直接写 localhost 是不行的(localhost 会指向容器自己)。
  • 端口左边的 3000 如果被占用,改成别的(例如 3001:8080),冒号右边的 8080 不要动。

保存:Ctrl + O → 回车 → Ctrl + X

5.4、启动项目

docker compose up -d

第一次启动会拉镜像,大约 4GB,耐心等一下。

5.5、查看启动状态

docker compose ps

看到 STATUS 为 Up 即可。如果想看实时日志(排查问题时用):

docker compose logs -f

Ctrl + C 退出日志查看。

5.6、完成

确保 VPS 防火墙/安全组已开放 3000 端口(如果用了第八章的 Nginx 反代,则不需要对公网开放 3000,只对外开 80/443 即可)。

浏览器访问 http://你的VPS_IP:3000,第一个注册的账号自动成为管理员。


六、把 CPA 接入 OpenWebUI

这是整篇教程最关键的一步,分两个部分:聊天模型图像生成模型

6.1、登录并进入管理设置

右上角头像 → SettingsAdmin Settings(管理员设置)。

6.2、接入聊天模型(chat 类,比如 grok-4、claude、gpt 等)

进入 Connections(连接) → 找到 OpenAI API,点 + 新增一条:

字段
API Base URL http://host.docker.internal:8085/v1
API Key 在 CPA 管理面板里生成的 access key(或者 config.yaml 里配的那个)

点保存 → 测试连接 → 出现 ✅ 即成功。

如果连不上,9 成是这两个原因:

  1. extra_hosts 那行没写或者没生效——docker compose down && docker compose up -d 重启一下
  2. CPA 的端口不是 8085,按你实际配置填

回到主界面,左上角模型选择器里就能看到 CPA 暴露出来的所有模型了(grok-4、claude-opus、gpt-5 等等,看你 CPA 里挂了哪些账号)。

6.3、接入图像生成模型(这才是重点)

回到 Admin SettingsImages(图像)

字段
Image Generation Engine OpenAI (Dall-E)(这只是协议名,不是真用 Dall-E)
OpenAI API Base URL https://api.x.ai/v1
OpenAI API Key 你的 xAI API key(这里直接用 xAI 原生 key,不走 CPA)
Image Generation Model grok-imagine-image-quality
Image Size 1024x1024(或你喜欢的尺寸)
Enable Image Generation ✅ 打开

保存。

为什么图像这里不走 CPA?目前主流的 CLI Proxy 类项目(包括 CPA)默认只代理 /v1/chat/completions 这条聊天端点,没有把 /v1/images/generations 这条图像端点也代理过去。所以图像生成这里直接连 xAI 官方最稳。

如果你执意要让图像也走 CPA(统计、限流、号池负载),需要给 CPA 加一条路由规则把 image 请求转发到 xAI 的 image endpoint——这是另一个话题,可以单开一篇。

6.4、测试出图

回主界面随便开个对话,输入框旁边会出现一个 🖼️ 图标。

发一句 a cyberpunk cat sitting on a neon sign → 点 🖼️ → 等几秒 → 出图。


七、本地电脑如何登录(重点)

VPS 装好了,本地电脑怎么访问?四种方式按推荐度排序:

7.1、方案 A:域名 + HTTPS(最正经,推荐)

如果你按 CPA 那篇教程已经买好域名并托管在 Cloudflare 了,这步几乎是零成本。

直接复用你已经在跑的 Nginx Proxy Manager(第八章那个 81 端口的面板),加一条反代规则:

字段
Domain Names chat.你的域名.top
Scheme http
Forward Hostname/IP 你的VPS_IP127.0.0.1
Forward Port 3000
Block Common Exploits
Websockets Support ✅(必须开,否则流式输出会断)

切到 SSL 标签:

  • SSL Certificate: Request a new SSL Certificate
  • Force SSL: ✅
  • HTTP/2 Support: ✅
  • 同意条款,邮箱填好 → Save

完事。本地浏览器访问 https://chat.你的域名.top,证书 Let's Encrypt 自动签发。

别忘了在 Cloudflare 给 chat 这个子域名加一条 A 记录指向 VPS IP,且 SSL 模式选 Full 不要选 Flexible

7.2、方案 B:SSH 隧道(最安全,无需域名)

不开放任何公网端口,只让你自己这台电脑能访问。

本地电脑(Windows PowerShell / Mac 终端 / Linux 终端)执行:

ssh -L 3000:localhost:3000 root@你的VPS_IP

保持这个 SSH 窗口开着,本地浏览器访问 http://localhost:3000 即可。流量全程走加密 SSH 隧道,关掉窗口就断开。

适合:临时用、不想搞域名、不想暴露公网。

7.3、方案 C:Tailscale 内网(懒人神器,无需域名)

VPS 和本地电脑都装 Tailscale,登录同一账号,VPS 会有一个 100.x.x.x 的内网 IP。

本地浏览器访问 http://100.x.x.x:3000 即可。

  • Tailscale 免费档够个人用
  • 手机也能装,手机也能直连
  • 不用开放任何公网端口

7.4、方案 D:裸 IP 直连(最快但最不安全)

VPS 防火墙放行 3000:

ufw allow 3000/tcp

VPS 控制台的安全组也要放行 3000。

本地浏览器访问 http://你的VPS_IP:3000

⚠️ 风险:HTTP 明文,登录密码和对话内容公网可见;端口扫描器会扫到你这个面板,可能被爆破。只建议临时测试用,长期挂着请用方案 A 或 C


八、常见问题

8.1、CPA 模型在 OpenWebUI 里不显示

  • 检查 OpenAI Connections 里的 base url 是不是写成了 host.docker.internal:8085/v1,注意有 /v1 后缀
  • 进 CPA 管理面板看看对应账号有没有被禁用、配额还够不够
  • OpenWebUI Admin Settings → Models 里手动拉一下列表

8.2、图像生成报 Invalid endpoint

回去检查 Images 设置里的 Base URL,必须是 https://api.x.ai/v1,不能是 CPA 的地址

8.3、流式输出(打字机效果)卡顿或断开

Nginx Proxy Manager 那条规则的 Websockets Support 没打开,回去打开。

8.4、忘记管理员密码

docker compose exec openwebui bash
# 进容器后
cd /app/backend
python -c "from open_webui.models.users import Users; Users.update_user_password_by_id('用户ID', '新密码')"

或者直接删 ./data/webui.db 重来(会丢所有对话历史)。

8.5、想升级到最新版

cd /root/data/docker_data/openwebui
docker compose pull
docker compose up -d

因为配置了 pull_policy: always,直接重启也会自动拉新镜像。


九、配件文档

0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin
广告 广告

评论区