从虚拟机重启到 OpenWebUI 正常加载模型:终极排坑与完整流程总结
(适配绿色版 Ollama + Docker OpenWebUI,含网络与权限排坑)
一、核心背景与问题现象
你的环境
- 虚拟机:Ubuntu 22.04(NAT 模式)
- Ollama:绿色压缩包版,安装路径
/home/bxq/ai-ollama/bin - OpenWebUI:Docker 容器部署
- 问题:虚拟机重启后,Ollama 已下载
qwen:0.5b,但 OpenWebUI 显示"未找到任何模型"
根本原因拆解
- 绿色版 Ollama 未开机自启 :压缩包版未注册系统服务,重启后进程消失,
ollama: command not found。 - Ollama 默认仅监听本地 :
./ollama serve默认绑定127.0.0.1:11434,仅允许虚拟机本机访问,Docker 容器被拒绝。 - OpenWebUI 容器网络配置问题 :Linux Docker 无法自动解析
host.docker.internal,需通过172.17.0.1或虚拟机 IP 访问宿主机 Ollama。
二、完整修复流程(按顺序执行)
步骤1:启动 Ollama 并开放外部访问
bash
# 进入 Ollama 程序目录
cd /home/bxq/ai-ollama/bin
# 杀死旧进程(防止端口占用)
pkill ollama
# 关键:绑定 0.0.0.0,允许所有设备访问
OLLAMA_HOST=0.0.0.0 ./ollama serve &
# 验证模型是否存在
./ollama list
✅ 成功标志:输出 qwen:0.5b,日志显示 Listening on 0.0.0.0:11434。
步骤2:重建 OpenWebUI 容器,修正 API 地址
bash
# 停止并删除旧容器
docker stop openwebui
docker rm openwebui
# 用正确参数启动容器
docker run -d \
--name openwebui \
-p 3000:3000 \
-e HOST=0.0.0.0 \
-e PORT=3000 \
-e OLLAMA_BASE_URL=http://172.17.0.1:11434 \
--restart always \
ghcr.io/open-webui/open-webui:main
步骤3:验证容器与 Ollama 的连通性
bash
# 进入容器测试 API 接口
docker exec -it openwebui sh
curl http://172.17.0.1:11434/api/tags
✅ 成功标志:返回包含 qwen:0.5b 的 JSON 数据。
步骤4:WebUI 内刷新模型列表
- 浏览器访问
http://192.168.146.131:3000并登录 - 点击左下角「设置」→「连接」
- 确认 Ollama API 地址为
http://172.17.0.1:11434,点击「验证连接」 - 验证成功后,点击「刷新模型列表」,返回聊天界面即可选择模型
三、关键坑点与解决方案对照表
| 现象 | 根本原因 | 解决命令 |
|---|---|---|
ollama: command not found |
未进入程序目录,或未加 ./ |
cd /home/bxq/ai-ollama/bin && ./ollama list |
could not connect to ollama app |
Ollama 进程未启动 | pkill ollama && ./ollama serve & |
容器内 curl 172.17.0.1:11434 失败 |
Ollama 仅监听 127.0.0.1 |
OLLAMA_HOST=0.0.0.0 ./ollama serve & |
| WebUI 刷新后仍无模型 | API 地址配置错误 | 重建容器,指定 OLLAMA_BASE_URL=http://172.17.0.1:11434 |
四、虚拟机重启后「一键复活」脚本
每次重启虚拟机,复制以下命令即可恢复服务:
bash
# 1. 启动 Ollama(开放访问)
cd /home/bxq/ai-ollama/bin
pkill ollama
OLLAMA_HOST=0.0.0.0 ./ollama serve &
# 2. 重启 OpenWebUI
docker restart openwebui
# 3. 验证连通性
./ollama list
docker exec openwebui curl -s http://172.17.0.1:11434/api/tags
五、拓展:常用 Ollama 模型下载命令
bash
# 国产模型
./ollama pull qwen:0.5b
./ollama pull qwen:1.8b
./ollama pull chatglm3:6b
# 开源模型
./ollama pull llama3:8b
./ollama pull gemma:2b
./ollama pull phi3:3.8b
六、总结与避坑要点
- 绿色版 Ollama 必须加
./运行,且需手动启动,无法开机自启。 OLLAMA_HOST=0.0.0.0是关键,否则 Docker 容器无法访问 Ollama 服务。- OpenWebUI 必须通过
172.17.0.1访问 Ollama ,Linux 环境下不推荐使用host.docker.internal。 - 验证连通性优先用
curl测试 API,而非直接依赖 WebUI 前端显示。