国内服务器部署 Open WebUI 的镜像加速方案(基于阿里云容器镜像服务)

在国内服务器上直接拉取 ghcr.io/open-webui/open-webui 镜像常常失败或极其缓慢。本文提供一个简单、可靠的方法:借助阿里云容器镜像服务中转镜像,实现快速部署 Open WebUI。

为什么需要这个方案?

Open WebUI 的官方 Docker 镜像托管在 GitHub Container Registry(ghcr.io),而该地址在国内访问受限。即使能连上,下载速度也极慢,严重影响部署效率。

解决方案思路:

  1. 可访问外网的机器上拉取官方镜像;
  2. 将镜像推送到阿里云容器镜像仓库;
  3. 国内服务器从阿里云高速拉取并运行。

操作步骤

💡 前提:你已有一个阿里云账号,并开通了 容器镜像服务 ACR(个人版免费)。

第一步:在外网环境拉取官方镜像

在你的本地电脑或海外服务器执行:

docker pull ghcr.io/open-webui/open-webui:main

第二步:登录阿里云镜像仓库

替换以下命令中的占位符为你的实际信息(可在 ACR 控制台「访问凭证」中找到):

docker login --username=你的阿里云账号 crpi-xxxx.cn-shanghai.personal.cr.aliyuncs.com

示例:docker login --username=myemail@example.com crpi-abcd1234.cn-shanghai.personal.cr.aliyuncs.com

第三步:打标签并推送至阿里云

# 打标签
docker tag ghcr.io/open-webui/open-webui:main crpi-xxxx.cn-shanghai.personal.cr.aliyuncs.com/your_namespace/open-webui:1.0

# 推送
docker push crpi-xxxx.cn-shanghai.personal.cr.aliyuncs.com/your_namespace/open-webui:1.0
  • your_namespace:你在 ACR 中创建的命名空间(Namespace)
  • 1.0:自定义镜像版本标签,便于管理

第四步:在国内服务器部署 Open WebUI

登录你的国内 ECS 实例,执行以下命令:

1. 登录阿里云仓库(首次需认证)

docker login --username=你的阿里云账号 crpi-xxxx.cn-shanghai.personal.cr.aliyuncs.com

2. 拉取镜像(秒级完成!)

docker login --username=你的阿里云账号 crpi-xxxx.cn-shanghai.personal.cr.aliyuncs.com

3. 启动容器(关键:网络配置!)

docker run -d \
  -p 3000:8080 \
  --add-host=host.docker.internal:host-gateway \
  -v open-webui:/app/backend/data \
  --name open-webui \
  --restart always \
  crpi-xxxx.cn-shanghai.personal.cr.aliyuncs.com/your_namespace/open-webui:1.0

--add-host=host.docker.internal:host-gateway 是让容器访问宿主机的关键!


第五步:配置宿主机 Ollama 监听所有接口

⚠️ 这一步极易被忽略,却是连接成功的核心!

默认情况下,Ollama 仅监听 127.0.0.1:11434,容器无法访问。必须修改其配置:

# 编辑服务文件
sudo nano /etc/systemd/system/ollama.service

[Service] 段落下添加一行

Environment="OLLAMA_HOST=0.0.0.0:11434"

保存后重启服务:

sudo systemctl daemon-reload
sudo systemctl restart ollama

验证监听状态:

netstat -tulnp | grep 11434
# 应显示:tcp6 0 0 :::11434 :::* LISTEN

第六步:在 Open WebUI 中配置 Ollama 地址

  1. 浏览器访问 http://<你的服务器IP>:3000
  2. 进入管理员面板 -> 设置 -> 外部连接
  3. 将 管理 Ollama 接口连接 URL设置为:http://host.docker.internal:11434
  4. 点击 Verify Connection → 显示 “✅ Connected”

✅ 此时模型列表将自动加载!

⚠️ 注意事项

项目说明
数据持久化-v open-webui:/app/backend/data 使用 Docker Volume,重启不丢数据
安全组务必开放 3000 端口(WebUI),不要开放 11434 端口到公网
私有仓库阿里云 ACR 个人版默认私有,每次拉取前需 docker login
镜像更新升级时重复“拉取 → 打标 → 推送”流程,更新标签即可
网络原理host.docker.internal 在 Linux 上通过 --add-host 映射为宿主机网关 IP(通常是 172.17.0.1

🎯 总结

通过阿里云容器镜像服务作为“中转站”,我们不仅解决了境外镜像拉取慢的问题,还通过标准的 Docker 网络配置,打通了容器访问宿主机服务的通道。

核心思想
“外网拉 → 云上存 → 内网跑 + 容器通宿主”

这套方案适用于任何境外 Docker 镜像在国内的快速、稳定部署,已在多台阿里云 ECS 实例上验证通过。

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注