Open WebUI 集成
Open WebUI 是一个开源、自托管的 Web 界面,为本地 AI 模型提供类 ChatGPT 的体验。您可以将其连接到 Docker Model Runner,为您的模型获取一个精美的聊天界面。
先决条件
- 已启用 Docker Model Runner 并支持 TCP 访问
- 已拉取模型(例如
docker model pull ai/llama3.2)
使用 Docker Compose 快速开始
使用 Docker Compose 是运行 Open WebUI 与 Docker Model Runner 的最简单方式。
创建一个 compose.yaml 文件:
services:
open-webui:
image: ghcr.io/open-webui/open-webui:main
ports:
- "3000:8080"
environment:
- OLLAMA_BASE_URL=http://host.docker.internal:12434
- WEBUI_AUTH=false
extra_hosts:
- "host.docker.internal:host-gateway"
volumes:
- open-webui:/app/backend/data
volumes:
open-webui:启动服务:
$ docker compose up -d
在浏览器中打开 http://localhost:3000。
配置选项
环境变量
| 变量 | 描述 | 默认值 |
|---|---|---|
OLLAMA_BASE_URL |
Docker Model Runner 的 URL | 必需 |
WEBUI_AUTH |
启用身份验证 | true |
OPENAI_API_BASE_URL |
改用 OpenAI 兼容 API | - |
OPENAI_API_KEY |
API 密钥(对于 DMR 使用任意值) | - |
使用 OpenAI 兼容 API
如果您更喜欢使用 OpenAI 兼容 API 而不是 Ollama API:
services:
open-webui:
image: ghcr.io/open-webui/open-webui:main
ports:
- "3000:8080"
environment:
- OPENAI_API_BASE_URL=http://host.docker.internal:12434/engines/v1
- OPENAI_API_KEY=not-needed
- WEBUI_AUTH=false
extra_hosts:
- "host.docker.internal:host-gateway"
volumes:
- open-webui:/app/backend/data
volumes:
open-webui:网络配置
Docker Desktop
在 Docker Desktop 上,host.docker.internal 会自动解析到主机机器。
前面的示例无需修改即可工作。
Docker Engine (Linux)
在 Docker Engine 上,您可能需要以不同方式配置网络:
services:
open-webui:
image: ghcr.io/open-webui/open-webui:main
network_mode: host
environment:
- OLLAMA_BASE_URL=http://localhost:12434
- WEBUI_AUTH=false
volumes:
- open-webui:/app/backend/data
volumes:
open-webui:或者使用主机网关:
services:
open-webui:
image: ghcr.io/open-webui/open-webui:main
ports:
- "3000:8080"
environment:
- OLLAMA_BASE_URL=http://172.17.0.1:12434
- WEBUI_AUTH=false
volumes:
- open-webui:/app/backend/data
volumes:
open-webui:使用 Open WebUI
选择模型
- 打开 http://localhost:3000
- 在左上角选择模型下拉菜单
- 从您已拉取的模型中选择(它们会以
ai/前缀显示)
通过 UI 拉取模型
Open WebUI 可以直接拉取模型:
- 选择模型下拉菜单
- 输入模型名称:
ai/llama3.2 - 选择下载图标
聊天功能
Open WebUI 提供:
- 带上下文的多轮对话
- 消息编辑和重新生成
- 代码语法高亮
- Markdown 渲染
- 对话历史记录和搜索
- 导出对话
包含多个模型的完整示例
此示例设置了 Open WebUI 与 Docker Model Runner,并预先拉取了几个模型:
services:
open-webui:
image: ghcr.io/open-webui/open-webui:main
ports:
- "3000:8080"
environment:
- OLLAMA_BASE_URL=http://host.docker.internal:12434
- WEBUI_AUTH=false
- DEFAULT_MODELS=ai/llama3.2
extra_hosts:
- "host.docker.internal:host-gateway"
volumes:
- open-webui:/app/backend/data
depends_on:
model-setup:
condition: service_completed_successfully
model-setup:
image: docker:cli
volumes:
- /var/run/docker.sock:/var/run/docker.sock
command: >
sh -c "
docker model pull ai/llama3.2 &&
docker model pull ai/qwen2.5-coder &&
docker model pull ai/smollm2
"
volumes:
open-webui:启用身份验证
对于多用户设置或安全性,启用身份验证:
services:
open-webui:
image: ghcr.io/open-webui/open-webui:main
ports:
- "3000:8080"
environment:
- OLLAMA_BASE_URL=http://host.docker.internal:12434
- WEBUI_AUTH=true
extra_hosts:
- "host.docker.internal:host-gateway"
volumes:
- open-webui:/app/backend/data
volumes:
open-webui:首次访问时,您将创建一个管理员账户。
故障排除
模型未出现在下拉菜单中
-
验证 Docker Model Runner 是否可访问:
$ curl http://localhost:12434/api/tags -
检查模型是否已拉取:
$ docker model list -
验证
OLLAMA_BASE_URL是否正确且可从容器访问。
"连接被拒绝" 错误
-
确保 Docker Model Runner 已启用 TCP 访问。
-
在 Docker Desktop 上,验证
host.docker.internal是否可解析:$ docker run --rm alpine ping -c 1 host.docker.internal -
在 Docker Engine 上,尝试使用
network_mode: host或显式主机 IP。
响应时间慢
-
首次请求会将模型加载到内存中,这需要时间。
-
后续请求会快得多。
-
如果持续缓慢,请考虑:
- 使用更小的模型
- 减少上下文大小
- 检查 GPU 加速是否正常工作
CORS 错误
如果在不同主机上运行 Open WebUI:
- 在 Docker Desktop 中,转到设置 > AI
- 将 Open WebUI URL 添加到 CORS Allowed Origins
自定义
自定义系统提示
Open WebUI 支持为每个模型设置系统提示。在 UI 中的设置 > 模型下配置这些。
模型参数
在聊天界面中调整模型参数:
- 选择模型名称旁边的设置图标
- 调整 temperature、top-p、max tokens 等。
这些设置会传递给 Docker Model Runner。
在不同端口上运行
要在不同端口上运行 Open WebUI:
services:
open-webui:
image: ghcr.io/open-webui/open-webui:main
ports:
- "8080:8080" # 更改第一个端口号
# ... 其余配置