Open-WebUI Docker 部署连接本地 Ollama 技术文档
概述
本文档记录了在 Linux 系统上使用 Docker 部署 Open-WebUI,连接本地非 Docker 部署的 Ollama 时遇到的问题及解决方案。
环境说明
| 组件 | 部署方式 |
|---|---|
| Open-WebUI | Docker 容器 |
| Ollama | 本地直接安装(非 Docker) |
| 操作系统 | Linux |
部署命令
方案 1:Host 网络模式(推荐)
bash
docker run -d --network host \
-v open-webui:/app/backend/data \
--name open-webui \
ghcr.io/open-webui/open-webui:main
访问地址 : http://localhost:8080
优点:
- 容器直接使用宿主机网络
- 无需额外配置即可访问宿主机的
localhost:11434 - 网络性能最佳
注意:
- 端口直接暴露在宿主机
- 访问端口是 8080,不是 3000
方案 2:端口映射 + host.docker.internal
bash
docker run -d -p 3000:8080 \
--add-host=host.docker.internal:host-gateway \
-e OLLAMA_BASE_URL=http://host.docker.internal:11434 \
-v open-webui:/app/backend/data \
--name open-webui \
ghcr.io/open-webui/open-webui:main
访问地址 : http://localhost:3000
说明:
--add-host=host.docker.internal:host-gateway将host.docker.internal解析为宿主机 IP- 需要设置
OLLAMA_BASE_URL环境变量
方案 3:端口映射 + 宿主机 IP
bash
# 获取宿主机 IP
hostname -I | awk '{print $1}'
# 运行容器(假设宿主机 IP 为 192.168.1.100)
docker run -d -p 3000:8080 \
-e OLLAMA_BASE_URL=http://192.168.1.100:11434 \
-v open-webui:/app/backend/data \
--name open-webui \
ghcr.io/open-webui/open-webui:main
访问地址 : http://localhost:3000
遇到的问题及解决方案
问题 1:容器名称冲突
错误信息:
docker: Error response from daemon: Conflict. The container name "/open-webui" is already in use...
原因: 已存在同名容器
解决方案:
bash
# 删除旧容器
docker rm -f open-webui
# 重新创建
docker run -d --network host \
-v open-webui:/app/backend/data \
--name open-webui \
ghcr.io/open-webui/open-webui:main
问题 2:Ollama 只监听本地地址
错误现象: Open-WebUI 无法连接 Ollama
检查方法:
bash
ss -tlnp | grep 11434
# 输出: LISTEN 0 4096 127.0.0.1:11434 0.0.0.0:*
原因 : Ollama 默认只监听 127.0.0.1,Docker 容器无法访问
解决方案:
bash
# 修改 Ollama 服务配置
sudo systemctl edit ollama.service
写入以下内容:
ini
[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"
bash
# 重启 Ollama
sudo systemctl restart ollama
# 确认监听地址
ss -tlnp | grep 11434
# 应输出: LISTEN 0 4096 0.0.0.0:11434 0.0.0.0:*
注意 : 使用 --network host 模式时,即使 Ollama 只监听 127.0.0.1 也可以访问,因为容器共享宿主机网络命名空间。
问题 3:访问端口错误
错误信息:
net::ERR_CONNECTION_REFUSED
原因 : 使用 --network host 模式时,服务监听 8080 端口,而非映射的 3000 端口
解决方案:
| 模式 | 访问地址 |
|---|---|
-p 3000:8080 |
http://localhost:3000 |
--network host |
http://localhost:8080 |
问题 4:500 Internal Error
排查步骤:
bash
# 1. 查看容器日志
docker logs open-webui --tail 100
# 2. 检查容器状态
docker ps -a | grep open-webui
# 3. 测试 Ollama 连接
curl http://localhost:11434/api/tags
# 4. 进入容器测试网络
docker exec -it open-webui sh -c "curl http://localhost:11434/api/tags"
常用命令
检查服务状态
bash
# Ollama 状态
systemctl status ollama
# Ollama 监听端口
ss -tlnp | grep 11434
# 测试 Ollama API
curl http://localhost:11434/api/tags
# Open-WebUI 容器状态
docker ps -a | grep open-webui
# Open-WebUI 日志
docker logs open-webui --tail 50
docker logs -f open-webui # 实时日志
容器管理
bash
# 停止容器
docker stop open-webui
# 启动容器
docker start open-webui
# 重启容器
docker restart open-webui
# 删除容器(数据卷保留)
docker rm -f open-webui
# 删除数据卷(谨慎操作)
docker volume rm open-webui
配置验证
1. 验证 Ollama 可访问
bash
curl http://localhost:11434/api/tags
应返回模型列表 JSON。
2. 验证 Open-WebUI 运行
bash
curl http://localhost:8080/health
应返回 {"status": "ok"}。
3. Web 界面验证
访问 http://localhost:8080,进入 Settings → Connections,确认 Ollama 连接状态为绿色。
推荐配置
生产环境推荐:
bash
docker run -d -p 3000:8080 \
--add-host=host.docker.internal:host-gateway \
-e OLLAMA_BASE_URL=http://host.docker.internal:11434 \
-e WEBUI_SECRET_KEY=your-secret-key \
-v open-webui:/app/backend/data \
--name open-webui \
--restart unless-stopped \
ghcr.io/open-webui/open-webui:main
开发环境推荐:
bash
docker run -d --network host \
-v open-webui:/app/backend/data \
--name open-webui \
--restart unless-stopped \
ghcr.io/open-webui/open-webui:main
参考链接
- Open-WebUI 官方文档: https://docs.openwebui.com
- Open-WebUI GitHub: https://github.com/open-webui/open-webui
- Ollama 官方文档: https://ollama.com/docs
文档创建时间: 2026-04-10