一、为什么选 Ollama + OpenWebUI
Ollama 负责在本机或服务器上拉起与管理大模型(拉取、运行、OpenAI 兼容 API);OpenWebUI(原 Ollama WebUI)提供类 ChatGPT 的对话界面、多会话、知识库与工具扩展。二者用 Docker 组合后,可以快速搭一套私有、可自托管的本地大模型工作台,适合团队内测、Agent 联调与敏感数据不出网场景。
二、环境准备
建议机器至少具备:
- Docker Engine 24+ 与 Docker Compose v2
- CPU 推理:8GB+ 内存;若跑 7B~14B 模型更建议 16GB+
- GPU(可选):NVIDIA 驱动 +
nvidia-container-toolkit,显存按模型尺寸预留 - 磁盘:模型文件较大,预留 30GB+ 空闲空间
确认基础命令可用:
docker version
docker compose version三、目录与 Compose 编排
新建工作目录,例如 ~/ai-stack,写入 docker-compose.yml:
services:
ollama:
image: ollama/ollama:latest
container_name: ollama
restart: unless-stopped
ports:
- "11434:11434"
volumes:
- ollama_data:/root/.ollama
# GPU 可选:取消下面注释(需已安装 nvidia-container-toolkit)
# deploy:
# resources:
# reservations:
# devices:
# - driver: nvidia
# count: all
# capabilities: [gpu]
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: open-webui
restart: unless-stopped
depends_on:
- ollama
ports:
- "3000:8080"
environment:
- OLLAMA_BASE_URL=http://ollama:11434
# 首次访问需注册管理员;生产环境请自行改密与反向代理 HTTPS
volumes:
- open_webui_data:/app/backend/data
volumes:
ollama_data:
open_webui_data:说明:OpenWebUI 容器内通过服务名 ollama 访问 API,比写宿主机 IP 更稳;对外只暴露 3000(Web)与必要时的 11434(API)。
四、启动与拉取模型
在编排目录执行:
docker compose up -d
docker compose ps
docker compose logs -f ollama进入 Ollama 容器拉取模型(按机器配置选择体量):
# 轻量入门(CPU 也可试)
docker exec -it ollama ollama pull llama3.2:3b
# 常用对话 / 代码辅助(需更大内存或 GPU)
docker exec -it ollama ollama pull qwen2.5:7b
docker exec -it ollama ollama list浏览器打开 http://服务器IP:3000,完成 OpenWebUI 首次管理员注册,在模型列表中应能看到已拉取的模型。
五、联调检查清单
- API 探活:
curl http://127.0.0.1:11434/api/tags应返回模型列表。 - 对话通路:在 OpenWebUI 新建会话,选中模型,发送一句「用三句话介绍你自己」,确认流式输出正常。
- 跨容器连通:若 WebUI 报连不上 Ollama,检查
OLLAMA_BASE_URL是否为http://ollama:11434,以及两容器是否在同一 Compose 网络。 - 资源:首次推理时用
docker stats观察 CPU/内存;OOM 时换更小模型或加内存/GPU。
六、生产向加固(建议做)
- 不要对公网裸奔 11434:仅内网或经反向代理鉴权后暴露;Web 端走 Nginx/Caddy + HTTPS。
- 账号与权限:OpenWebUI 开启注册限制或关闭公开注册;管理员密码使用高强度口令。
- 数据备份:定期备份
ollama_data与open_webui_data两个 volume。 - 版本钉死:生产将
latest/main改为具体镜像 tag,避免静默升级踩坑。 - GPU 机器:确认
nvidia-smi在宿主机正常,再启用 Compose 中的 GPU 段。
七、和 Agent 工程的衔接
Ollama 提供 OpenAI 兼容接口后,可把 base_url 指到 http://host:11434/v1,供自研 Agent、Hermes 类框架或企业内部工具调用。OpenWebUI 适合人工评测与知识库试跑;自动化链路建议直连 Ollama API,把「对话产品」与「Agent 运行时」分层,便于观测与限流。
八、常见问题
模型列表为空:先 ollama list 确认已 pull;OpenWebUI 设置里检查 Ollama URL,必要时重启 open-webui 容器。
下载极慢或失败:检查机器出网与磁盘空间;可换网络窗口重试,或在可访问环境拉好模型后迁移 volume。
CPU 推理极慢:属正常现象,优先换小参数模型,或上 GPU / 更高主频机器。
升级后配置丢失:确认 volume 挂载未改名;升级前先 docker compose pull 再 up -d,并保留旧 compose 备份。
九、小结
一套最小可用路径是:Compose 拉起 Ollama + OpenWebUI → pull 小模型 → 浏览器验证对话 → 再按需加 GPU、HTTPS 与 Agent API 对接。把「能跑起来」和「能稳、能管、能接业务」分开迭代,本地大模型栈会 remake 得更顺。
