Open WebUI 部署教程:一条 Docker 命令跑通带知识库的本地 AI 聊天界面
【免费下载链接】open-webuiUser-friendly AI Interface (Supports Ollama, OpenAI API, ...)项目地址: https://gitcode.com/GitHub_Trending/op/open-webui
Open WebUI 是一个自托管的 AI 聊天平台:它本身不跑模型,只为 Ollama 或 OpenAI 兼容 API 这类推理服务提供统一网页界面,内置用户权限与本地 RAG 知识库,适合已有本地推理服务、想给团队一个可用聊天入口的人。
它干什么,不干什么
- 干:为本地 Ollama 与任意 OpenAI 兼容 API(LMStudio、vLLM、GroqCloud 等)提供统一聊天入口,自带账号体系、RBAC 分组权限、本地知识库与插件机制(Filters / Tools / Skills / MCP)。
- 不干:不跑推理。没有推理服务,模型列表就是空的,发消息也不会有回答。
- 与 ChatGPT-Next-Web 这类前端不同:那些只是套壳展示,Open WebUI 有自己的账号、权限、文件存储与数据卷,是可长期维护的平台。
- 边界:支持完全离线运行,模型、向量化、数据库全部在本地,适合不能出网的内网环境。
开跑前要备什么
- 一台装好 Docker 的机器(不用容器则需 Python 3.11);
- 端口:容器内部监听 8080,默认映射宿主机 3000,3000 被占用就改映射前段;
- 至少一个可用的推理服务:本机或异机 Ollama,或有 Key 的云端 API;
- 首次启用知识库会本地下载 all-MiniLM-L6-v2 嵌入模型,约 90MB,需要当时联网;
- 数据库默认 SQLite,零部署;后续可换 PostgreSQL。
- 纯离线环境加
HF_HUB_OFFLINE=1,避免启动时尝试下载模型。
什么情况不建议装:一次性演示、不打算维护常驻服务的人,直接用云服务更省事。
最短路径跑起来
单容器命令,完整复制:
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| 参数 | 作用 | 不改会怎样 |
|---|---|---|
-p 3000:8080 | 宿主机 3000 映射到容器 8080 | 默认即可;3000 被占用就改前段 |
--add-host=host.docker.internal:host-gateway | 容器内通过 host.docker.internal 访问宿主机上的 Ollama | 发现不了本机模型,模型列表为空 |
-v open-webui:/app/backend/data | 数据卷,存 SQLite 数据库与上传文件,是命令里最关键的一项 | 重建容器后聊天历史与文档全部丢失 |
--restart always | 进程崩溃自动拉起 | 崩掉后无人恢复 |
不用 Docker 的替代方案一句话带过:pip install open-webui后执行open-webui serve,服务在 localhost:8080;想让 Ollama 同集群部署,用仓库自带的 docker-compose.yaml,它自带 Ollama 容器并预配好OLLAMA_BASE_URL。
怎么确认它活着
三个信号,按顺序核:
✅ 浏览器打开http://localhost:3000,出现注册页,首个注册的账号自动成为管理员。 ✅docker ps中容器状态为 Up。 ✅curl http://localhost:3000/health返回{"status": true};做滚动部署可改用/ready,它只在启动完成且数据库可连时才返回 200。
注册页只认第一个账号为管理员,之后注册入口自动关闭,新成员只能由管理员在后台创建。
把模型接进来
已有推理服务的,只改部署命令的增量,三种场景:
Ollama 在本机——什么都不用改。只要 host.docker.internal 能通 11434 端口,顶部模型列表直接出现模型名,选中即可对话。
Ollama 在另一台机器——追加一个环境变量,带上端口:
-e OLLAMA_BASE_URL=http://192.168.1.100:11434接云端 API(OpenAI 或任意 OpenAI 兼容服务)——追加一个 Key:
-e OPENAI_API_KEY=your_key只走云端的话,Ollama 相关参数全部可以不加;启动后也可由管理员在"外部连接"里补填端点与 Key。
Ollama 想装进同一个容器——镜像 tag 由:main换成:ollama,加-v ollama:/root/.ollama挂模型目录,有 NVIDIA 卡再加--gpus=all。GPU 宿主机上想给 WebUI 本身加速则换:cudatag,前提是装了 NVIDIA Container Runtime。
接入后在顶部菜单选模型,底部输入框发消息,回答以流式逐字返回。
让它读你的文档
进 Knowledge(知识库)页面,拖入 PDF、Word 或 txt,系统用 all-MiniLM-L6-v2 在本地完成向量化并存入 ChromaDB,全程不出内网;大体积文档可再配 Tika、Docling 等解析引擎。
对话时在输入框敲#,选中已上传的文件,模型就基于该文档作答;#加 URL 也能把网页拉进对话。
效果:问"这份合同的退款流程是什么",引用的是你上传的条款,而不是凭训练语料编造。多人使用时,管理员可按用户组控制每个账号能碰哪些模型与文档。
最常卡住的几个地方
| 现象 | 原因 | 处理 |
|---|---|---|
| 模型列表为空、发消息报连接错误 | 容器访问不到 Ollama | 保留--add-host参数;或改--network=host(访问端口变为 8080);远程服务确认OLLAMA_BASE_URL含端口 |
| 重建容器后聊天历史消失 | 没挂数据卷 | 命令补-v open-webui:/app/backend/data |
| 长回复生成到一半超时 | 默认 Ollama 响应超时 5 分钟(300 秒) | 设AIOHTTP_CLIENT_TIMEOUT(单位秒)调大 |
| 团队成员注册不了 | 首账号即管理员,注册入口自动关闭 | 管理员在后台手动创建账号 |
更多连接类问题的排查逻辑,见仓库里的 TROUBLESHOOTING.md。
上线前过一遍
- ✅ 数据卷已挂载,重启容器后聊天历史仍在
- ✅ 管理员账号已确认,注册入口已关闭
- ✅
OLLAMA_BASE_URL或 API Key 已验证,模型列表非空 - ✅
WEBUI_SECRET_KEY会话签名密钥已配置,不裸奔暴露 - ✅ 暴露到局域网/公网前,反向代理已配 HTTPS 与防火墙规则
官方文档在 docs.openwebui.com,K8s、Helm 与离线部署都有现成章节;后端核心代码在 backend/open_webui/,部署遇阻先查 TROUBLESHOOTING.md,缺陷直接提仓库 issue。
【免费下载链接】open-webuiUser-friendly AI Interface (Supports Ollama, OpenAI API, ...)项目地址: https://gitcode.com/GitHub_Trending/op/open-webui
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考