一、Open WebUI 是什么?
Open WebUI 是一个开源、自托管的 AI Web 界面,可以连接本地模型和远程大模型 API。
它常用于:
- 给 Ollama 提供一个网页聊天界面
- 管理多个模型
- 接入 OpenAI 兼容 API
- 搭建本地知识库 / RAG
- 管理用户、权限、模型访问
- 接入 Tools、Functions、Pipelines、MCP、OpenAPI Server
- 在本地或服务器上搭建私有 AI 助手
可以简单理解为:
Open WebUI = 自托管版 ChatGPT Web 界面 + 模型管理 + 知识库 + 工具扩展平台
常见访问地址:
http://localhost:3000
容器内部服务端口通常是:
8080
所以 Docker 常用端口映射是:
-p 3000:8080
二、Open WebUI 与 Ollama 的关系
Ollama 负责在本地运行模型。
Open WebUI 负责提供网页界面、用户管理、聊天记录、知识库、模型配置和扩展能力。
两者关系可以这样理解:
浏览器
↓
Open WebUI
↓
Ollama
↓
本地模型,例如 qwen、llama、gemma、deepseek-r1
如果你只是命令行使用本地模型,Ollama 就够了。
如果你希望像 ChatGPT 一样用网页界面聊天、上传文档、保存会话、管理多个模型,就适合使用 Open WebUI。
三、安装前准备
建议先准备:
- Docker 或 OrbStack
- Ollama
- 至少一个本地模型,例如
qwen3、llama3.2 - 浏览器
- 终端基础操作能力
确认 Ollama 是否运行:
curl http://localhost:11434
如果返回:
Ollama is running
说明 Ollama 正常。
查看本地模型:
ollama list
如果没有模型,可以先下载一个:
ollama pull qwen3
四、最推荐安装方式:Docker + 本机 Ollama
如果 Ollama 已经安装在你的 Mac 上,Open WebUI 跑在 Docker 中,推荐使用下面命令。
docker run -d \
-p 3000:8080 \
--add-host=host.docker.internal:host-gateway \
-v open-webui:/app/backend/data \
--name open-webui \
--restart always \
ghcr.io/open-webui/open-webui:main
访问:
http://localhost:3000
说明:
| 参数 | 含义 |
|---|---|
-d |
后台运行 |
-p 3000:8080 |
把容器 8080 映射到本机 3000 |
--add-host=host.docker.internal:host-gateway |
让容器访问宿主机服务 |
-v open-webui:/app/backend/data |
持久化聊天记录、配置、上传文件等数据 |
--name open-webui |
容器名称 |
--restart always |
Docker 启动后自动拉起 |
ghcr.io/open-webui/open-webui:main |
Open WebUI 镜像 |
首次访问时创建的第一个账号通常会成为管理员账号,请保存好账号和密码。
五、使用 Docker Compose 安装
如果你更喜欢把配置写成文件,可以创建:
mkdir -p ~/docker/open-webui
cd ~/docker/open-webui
vim docker-compose.yml
写入:
services:
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: open-webui
ports:
- "3000:8080"
extra_hosts:
- "host.docker.internal:host-gateway"
volumes:
- open-webui:/app/backend/data
environment:
- OLLAMA_BASE_URL=http://host.docker.internal:11434
- WEBUI_SECRET_KEY=replace-with-your-secret-key
restart: always
volumes:
open-webui:
生成 WEBUI_SECRET_KEY:
openssl rand -hex 32
启动:
docker compose up -d
查看状态:
docker compose ps
查看日志:
docker compose logs -f
停止:
docker compose down
注意:
docker compose down
不会删除 volume。
如果执行:
docker compose down -v
会删除 volume,也就是删除聊天记录、配置、知识库等数据。这个命令要非常谨慎。
六、一体化安装:Open WebUI + Ollama 同容器
如果你不想单独安装 Ollama,可以使用 Open WebUI 官方提供的 :ollama 镜像。
CPU 版本:
docker run -d \
-p 3000:8080 \
-v ollama:/root/.ollama \
-v open-webui:/app/backend/data \
--name open-webui \
--restart always \
ghcr.io/open-webui/open-webui:ollama
NVIDIA GPU 版本:
docker run -d \
-p 3000:8080 \
--gpus=all \
-v ollama:/root/.ollama \
-v open-webui:/app/backend/data \
--name open-webui \
--restart always \
ghcr.io/open-webui/open-webui:ollama
这种方式适合 Linux 服务器。
如果你是 macOS,通常更推荐:
Ollama 直接安装在 Mac 上
Open WebUI 通过 Docker 运行
因为 macOS Docker 容器通常无法像 Linux 那样直接使用 Apple GPU 加速。
七、只使用远程 Ollama 服务
如果 Ollama 跑在另一台机器上,可以指定:
docker run -d \
-p 3000:8080 \
-e OLLAMA_BASE_URL=http://你的服务器IP:11434 \
-v open-webui:/app/backend/data \
--name open-webui \
--restart always \
ghcr.io/open-webui/open-webui:main
例如:
-e OLLAMA_BASE_URL=http://192.168.1.20:11434
注意:远程 Ollama 服务不要直接暴露到公网,建议使用内网、VPN、Cloudflare Access 或反向代理认证。
八、常用 Docker 命令速查
| 场景 | 命令 |
|---|---|
| 查看容器 | docker ps |
| 查看所有容器 | docker ps -a |
| 查看日志 | docker logs -f open-webui |
| 停止容器 | docker stop open-webui |
| 启动容器 | docker start open-webui |
| 重启容器 | docker restart open-webui |
| 删除容器 | docker rm -f open-webui |
| 查看镜像 | docker images |
| 删除镜像 | docker rmi ghcr.io/open-webui/open-webui:main |
| 查看 volume | docker volume ls |
| 查看 volume 详情 | docker volume inspect open-webui |
| 进入容器 | docker exec -it open-webui bash |
| 查看容器资源 | docker stats open-webui |
九、首次进入 Open WebUI
访问:
http://localhost:3000
首次进入时通常需要创建账号。
注意:
- 第一个注册账号通常是管理员
- 管理员可以管理用户、模型、连接和系统设置
- 如果忘记第一个管理员账号密码,后续处理会比较麻烦
- 建议保存好管理员账号和密码
- 多人使用时,建议关闭公开注册或设置审批
十、连接 Ollama
1. 默认连接
如果使用 Docker 运行 Open WebUI,并且 Ollama 在宿主机上,常用配置是:
http://host.docker.internal:11434
如果 Open WebUI 和 Ollama 在同一个容器中,通常是:
http://localhost:11434
如果 Ollama 在另一台服务器:
http://服务器IP:11434
2. 通过环境变量配置
-e OLLAMA_BASE_URL=http://host.docker.internal:11434
Docker Compose:
environment:
- OLLAMA_BASE_URL=http://host.docker.internal:11434
3. 在管理界面配置
进入 Open WebUI 后:
Admin Panel / 管理员面板
→ Settings / 设置
→ Connections / 连接
→ Ollama
填写 Ollama 地址:
http://host.docker.internal:11434
保存后刷新模型列表。
4. 检查连接
宿主机检查:
curl http://localhost:11434
容器内检查:
docker exec -it open-webui bash
curl http://host.docker.internal:11434
如果容器内访问失败,通常是 Docker 网络或 Ollama 监听地址问题。
十一、让 Ollama 允许 Docker 容器访问
如果 Open WebUI 连接不上本机 Ollama,可能是 Ollama 只监听了:
127.0.0.1
可以让 Ollama 监听:
0.0.0.0:11434
macOS App 方式:
launchctl setenv OLLAMA_HOST "0.0.0.0:11434"
然后退出并重新启动 Ollama App。
命令行方式:
OLLAMA_HOST=0.0.0.0:11434 ollama serve
验证:
curl http://localhost:11434
注意:监听 0.0.0.0 可能让局域网设备访问 Ollama,不要暴露到公网。
十二、模型管理
1. 在 Ollama 中下载模型
ollama pull qwen3
ollama pull llama3.2
ollama pull deepseek-r1
查看模型:
ollama list
运行测试:
ollama run qwen3 "你好,请介绍一下你自己"
2. 在 Open WebUI 中刷新模型
进入:
Admin Panel
→ Settings
→ Connections
确认 Ollama 连接正常后,返回聊天页面,模型下拉框里应该能看到 Ollama 模型。
3. 修改模型显示名和参数
进入:
Workspace
→ Models
可以对模型进行配置,例如:
- 显示名称
- 描述
- 默认系统提示词
- 模型可见性
- Advanced Parameters
- 权限控制
常见参数:
| 参数 | 含义 |
|---|---|
temperature |
随机性,越低越稳定 |
top_p |
采样范围 |
num_ctx |
上下文长度 |
repeat_penalty |
重复惩罚 |
代码任务建议:
temperature = 0.2
写作任务可以高一些:
temperature = 0.7
十三、接入 OpenAI 兼容 API
Open WebUI 可以连接 OpenAI,也可以连接其他 OpenAI-compatible 服务,例如:
- OpenAI
- DeepSeek
- SiliconFlow
- OpenRouter
- LocalAI
- LiteLLM
- Ollama 的 OpenAI 兼容 API
1. 通过环境变量配置
示例:接入 OpenAI 官方 API。
docker run -d \
-p 3000:8080 \
-e OPENAI_API_BASE_URL=https://api.openai.com/v1 \
-e OPENAI_API_KEY=你的OpenAI_API_Key \
-v open-webui:/app/backend/data \
--name open-webui \
--restart always \
ghcr.io/open-webui/open-webui:main
不要把真实 API Key 写进博客、仓库或截图。
2. 接入 DeepSeek API 示例
DeepSeek 提供 OpenAI 兼容 API,通常可配置为:
OPENAI_API_BASE_URL=https://api.deepseek.com
OPENAI_API_KEY=你的 DeepSeek API Key
Docker Compose 示例:
services:
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: open-webui
ports:
- "3000:8080"
volumes:
- open-webui:/app/backend/data
environment:
- OPENAI_API_BASE_URL=https://api.deepseek.com
- OPENAI_API_KEY=${DEEPSEEK_API_KEY}
- WEBUI_SECRET_KEY=${WEBUI_SECRET_KEY}
restart: always
volumes:
open-webui:
启动前创建 .env:
DEEPSEEK_API_KEY=你的 DeepSeek API Key
WEBUI_SECRET_KEY=使用 openssl rand -hex 32 生成
启动:
docker compose up -d
3. 通过管理界面配置
也可以在 UI 中配置:
Admin Panel
→ Settings
→ Connections
→ OpenAI API
填写:
API Base URL
API Key
这种方式适合临时测试。
如果是正式部署,建议写进 Docker Compose,并把密钥放在 .env 或密钥管理系统中。
4. 多个 OpenAI 兼容地址
Open WebUI 支持多个 OpenAI base URL 和多个 key。
例如:
environment:
- OPENAI_API_BASE_URLS=https://api.openai.com/v1;https://api.deepseek.com
- OPENAI_API_KEYS=sk-xxx;sk-yyy
注意:多个 key 的对应关系要谨慎管理,并尽量使用最小权限的 key。
十四、用户、权限与注册控制
1. 关闭注册
正式部署给自己或小团队使用时,建议关闭公开注册。
可以在管理界面中关闭:
Admin Panel
→ Settings
→ Users / Authentication
也可以通过环境变量控制。常见做法是只允许管理员手动创建或审批用户。
2. 单用户模式
Open WebUI 支持关闭认证:
-e WEBUI_AUTH=False
例如:
docker run -d \
-p 3000:8080 \
-e WEBUI_AUTH=False \
-v open-webui:/app/backend/data \
--name open-webui \
ghcr.io/open-webui/open-webui:main
但要注意:
- 只适合本机个人试用
- 不适合多人或公网环境
- 已经有用户后不能随意切换单用户模式
- 暴露到网络时不建议关闭认证
3. 设置固定 WEBUI_SECRET_KEY
建议所有长期运行实例都设置:
WEBUI_SECRET_KEY
生成:
openssl rand -hex 32
Docker Compose:
environment:
- WEBUI_SECRET_KEY=你的固定随机字符串
作用:
- 保持登录状态
- 避免重建容器后反复退出登录
- 避免某些加密信息无法解密
- 对 OAuth、API Key 等场景更稳定
十五、知识库与 RAG
Open WebUI 支持上传文档并基于文档问答。
1. 上传文档
进入:
Workspace
→ Documents
上传文件,例如:
- TXT
- Markdown
- DOCX
- CSV
- 其他支持格式
上传后,Open WebUI 会进行文档切分和向量化。
2. 在聊天中引用文档
在聊天输入框中使用:
#
选择已上传文档或知识库。
例如:
#我的文档 请总结这份文档的核心内容
也可以引用网页:
#https://example.com 请总结这个页面
Open WebUI 会拉取页面内容后作为 RAG 上下文。
3. RAG 效果不好的常见原因
| 问题 | 可能原因 |
|---|---|
| 回答没有引用文档内容 | 没有正确选择文档 |
| 回答内容很泛 | 检索片段不相关 |
| 文档太长效果差 | 上下文长度不够 |
| Ollama 本地模型效果差 | 模型能力或上下文窗口不足 |
| 中文文档检索差 | Embedding 模型不适合中文 |
| PDF 表格识别差 | PDF 格式复杂或扫描版 |
如果使用 Ollama,本地模型默认上下文可能偏小。可以在 Ollama 或模型配置中提高:
num_ctx
例如:
8192
4. RAG 配置建议
进入:
Admin Panel
→ Settings
→ Documents / RAG
可关注:
- Embedding 模型
- Chunk size
- Chunk overlap
- Top K
- Reranking
- 文档解析方式
- 向量数据库设置
建议:
| 场景 | 建议 |
|---|---|
| 中文文档 | 选择中文效果较好的 embedding |
| 长文档 | 增大上下文窗口,合理调 chunk |
| 技术文档 | chunk 不要太大,避免检索过宽 |
| 表格 PDF | 优先转成 Markdown / CSV 后上传 |
| 网页内容 | 优先使用干净页面或 raw 文本 |
十六、Prompts、Tools、Functions、Pipelines、MCP
Open WebUI 不只是聊天界面,也支持扩展能力。
| 能力 | 作用 |
|---|---|
| Prompts | 可复用提示词模板,类似 slash command |
| Tools / Functions | 在聊天中运行 Python 工具 |
| Pipelines | 独立插件框架,可处理消息过滤、路由、RAG、函数调用 |
| MCP | 接入 Model Context Protocol 工具 |
| OpenAPI Servers | 从 OpenAPI 端点自动发现工具 |
| Skills | Markdown 指令集,指导模型如何完成某类任务 |
简单理解:
Prompts:复用常用提示词
Tools:给模型工具能力
Pipelines:对消息流做处理和扩展
MCP:接入外部工具生态
Skills:沉淀任务方法论
建议新手先掌握:
Prompts
Documents / RAG
模型连接
用户管理
熟悉后再研究:
Tools
Pipelines
MCP
OpenAPI
Skills
十七、Open WebUI API
Open WebUI 提供 API,可用于外部系统调用。
通常需要 API Key。
获取方式:
Settings
→ Account
→ API Keys
调用时使用 Bearer Token:
curl http://localhost:3000/api/models \
-H "Authorization: Bearer 你的_API_Key"
注意:
- API 需要鉴权
- 不要把 API Key 写进代码仓库
- 反向代理时注意 Authorization Header 是否被占用
- 正式环境建议走 HTTPS
十八、更新 Open WebUI
1. Docker Run 方式更新
备份后执行:
docker rm -f open-webui
docker pull ghcr.io/open-webui/open-webui:main
docker run -d \
-p 3000:8080 \
--add-host=host.docker.internal:host-gateway \
-v open-webui:/app/backend/data \
-e WEBUI_SECRET_KEY="your-secret-key" \
--name open-webui \
--restart always \
ghcr.io/open-webui/open-webui:main
注意:只要 volume 没删,数据一般还在。
2. Docker Compose 方式更新
docker compose pull
docker compose up -d
查看日志:
docker compose logs -f
3. 是否使用 :main
:main 会跟随最新构建,方便但可能遇到破坏性变更。
更稳定的做法是固定版本,例如:
image: ghcr.io/open-webui/open-webui:v0.9.5
升级前建议:
- 备份数据
- 查看 release notes
- 固定版本号
- 更新后清浏览器缓存
- 验证登录、模型连接、知识库
十九、备份与恢复
Open WebUI 的关键数据在:
/app/backend/data
Docker volume 示例:
open-webui:/app/backend/data
其中可能包含:
webui.db
uploads/
vector_db/
cache/
audit.log
1. 查看 volume 真实路径
docker volume inspect open-webui
2. 备份 Docker volume
mkdir -p ~/backup/open-webui
docker run --rm \
-v open-webui:/data \
-v ~/backup/open-webui:/backup \
alpine \
tar czf /backup/open-webui-$(date +%Y%m%d).tar.gz -C /data .
3. 恢复 Docker volume
先停止容器:
docker rm -f open-webui
恢复:
docker run --rm \
-v open-webui:/data \
-v ~/backup/open-webui:/backup \
alpine \
sh -c "cd /data && tar xzf /backup/open-webui-YYYYMMDD.tar.gz"
重新启动 Open WebUI。
4. 备份建议
建议至少备份:
webui.dbuploads/vector_db/- 配置文件
docker-compose.yml.env
如果你使用远程数据库,也要单独备份数据库。
二十、反向代理与 HTTPS
如果要在局域网或公网访问,建议使用反向代理和 HTTPS。
可选方案:
- Nginx
- Caddy
- Traefik
- Cloudflare Tunnel
- Cloudflare Access
1. Caddy 示例
ai.example.com {
reverse_proxy localhost:3000
}
2. Nginx 示例
server {
listen 80;
server_name ai.example.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
注意:Open WebUI 需要 WebSocket 支持,所以反向代理要正确处理 Upgrade 头。
二十一、常见问题
1. Open WebUI 启动后访问不了
检查容器:
docker ps
docker logs -f open-webui
检查端口:
lsof -i :3000
确认访问地址:
http://localhost:3000
2. Open WebUI 看不到 Ollama 模型
先确认 Ollama 有模型:
ollama list
确认 Ollama 服务可访问:
curl http://localhost:11434
容器内检查:
docker exec -it open-webui bash
curl http://host.docker.internal:11434
如果失败,检查:
OLLAMA_BASE_URL- Docker 网络
- Ollama 是否监听
0.0.0.0:11434 - 防火墙或代理
3. 更新后聊天记录没了
常见原因:
- 启动容器时没有挂载
-v open-webui:/app/backend/data - 使用了新的 volume
- 误删了 volume
- 执行了
docker compose down -v
检查 volume:
docker volume ls
docker volume inspect open-webui
4. 更新或重启后总是重新登录
建议设置固定:
WEBUI_SECRET_KEY
如果每次启动生成新的 secret,登录态和部分加密信息可能失效。
5. RAG 效果不好
排查:
- 是否正确选中了文档
- 文档是否成功解析
- Embedding 模型是否合适
- chunk 设置是否合理
- 模型上下文是否足够
- Ollama 模型是否能力不足
如果 Ollama 默认上下文太小,可以提高:
num_ctx
6. Open WebUI 连接外部 API 失败
检查:
- API Key 是否正确
- Base URL 是否正确
- 是否是 OpenAI 兼容格式
- 容器是否能访问外网
- 公司代理 / 防火墙是否拦截
- 模型名称是否正确
进入容器测试网络:
docker exec -it open-webui bash
curl https://api.deepseek.com
7. 忘记管理员密码
如果第一个管理员账号密码忘记,新注册账号可能需要管理员激活。
建议优先查看官方 Reset Admin Password 文档,并在操作前备份数据。
8. Docker 镜像很大
可以考虑 slim 镜像:
image: ghcr.io/open-webui/open-webui:main-slim
但 slim 镜像首次使用某些功能时可能需要下载额外模型或依赖。
二十二、推荐的日常维护命令
查看状态:
docker ps
docker logs --tail 100 open-webui
ollama ps
ollama list
重启:
docker restart open-webui
更新:
docker pull ghcr.io/open-webui/open-webui:main
docker rm -f open-webui
备份:
docker run --rm \
-v open-webui:/data \
-v ~/backup/open-webui:/backup \
alpine \
tar czf /backup/open-webui-$(date +%Y%m%d).tar.gz -C /data .
清理不用模型:
ollama list
ollama rm 模型名
二十三、适合你的推荐部署方式
如果是个人 Mac 本地使用,我建议:
Ollama:直接安装在 macOS
Open WebUI:Docker / OrbStack 运行
模型:先用 qwen3、llama3.2、deepseek-r1 等
访问:localhost:3000
数据:使用 open-webui volume 持久化
推荐启动命令:
docker run -d \
-p 3000:8080 \
--add-host=host.docker.internal:host-gateway \
-v open-webui:/app/backend/data \
-e OLLAMA_BASE_URL=http://host.docker.internal:11434 \
-e WEBUI_SECRET_KEY="$(openssl rand -hex 32)" \
--name open-webui \
--restart always \
ghcr.io/open-webui/open-webui:main
如果使用 Docker Compose,推荐保存好:
docker-compose.yml
.env
以后换电脑、迁移环境、重装系统会方便很多。
二十四、命令速查汇总
Docker
docker run -d -p 3000:8080 -v open-webui:/app/backend/data --name open-webui ghcr.io/open-webui/open-webui:main
docker logs -f open-webui
docker restart open-webui
docker rm -f open-webui
docker pull ghcr.io/open-webui/open-webui:main
docker volume inspect open-webui
Docker Compose
docker compose up -d
docker compose ps
docker compose logs -f
docker compose pull
docker compose up -d
docker compose down
Ollama
ollama list
ollama pull qwen3
ollama run qwen3
ollama ps
ollama stop qwen3
检查连接
curl http://localhost:3000
curl http://localhost:11434
docker exec -it open-webui bash
curl http://host.docker.internal:11434
备份
docker run --rm -v open-webui:/data -v ~/backup/open-webui:/backup alpine tar czf /backup/open-webui-$(date +%Y%m%d).tar.gz -C /data .
二十五、个人建议
Open WebUI 的价值不只是“给 Ollama 套一个网页”,它更像是一个本地 AI 工作台。
建议按这个顺序掌握:
1. Docker 安装和访问
2. 连接 Ollama
3. 管理模型
4. 上传文档做 RAG
5. 接入 OpenAI 兼容 API
6. 配置用户和权限
7. 学会更新和备份
8. 再研究 Tools / Pipelines / MCP / Skills
最重要的三个注意事项:
1. 一定要挂载 /app/backend/data,否则数据容易丢。
2. 长期运行要设置 WEBUI_SECRET_KEY。
3. 不要把 Ollama、Open WebUI、外部 API Key 直接暴露到公网。
参考资料
- Open WebUI 官网:https://openwebui.com/
- Open WebUI GitHub:https://github.com/open-webui/open-webui
- Open WebUI Quick Start:https://docs.openwebui.com/getting-started/quick-start/
- Environment Variable Configuration:https://docs.openwebui.com/reference/env-configuration/
- Updating Open WebUI:https://docs.openwebui.com/getting-started/updating/
- Backups:https://docs.openwebui.com/tutorials/maintenance/backups/
- RAG:https://docs.openwebui.com/features/chat-conversations/rag/
- API Endpoints:https://docs.openwebui.com/reference/api-endpoints/
- FAQ:https://docs.openwebui.com/faq/