Open WebUI 完全部署指南——连接本地大模型,打造你的私有 AI 聊天助手
从零部署 Open WebUI 到生产配置的完整教程:Docker 部署、Ollama 连接、多用户管理、RAG 知识库、联网搜索、Nginx 反代 HTTPS,一条龙讲清楚。
上个月写了 Ollama 本地大模型生产环境部署指南,不少朋友跟着搭好了推理服务,然后问我:模型跑起来了,然后呢?总不能天天对着终端敲 curl 吧。
确实,Ollama 本身只有 API,没有网页界面。你要带着团队用、在公司局域网里分享、或者单纯想有个好看点的聊天窗口,就得配个前端。而 Open WebUI 是目前生态里最成熟的选择——功能全、部署简单、更新活跃,而且完全开源。
这篇文章就从零开始,把 Open WebUI 部署完整走一遍:安装配置、连接 Ollama、多用户管理、联网搜索、RAG 知识库接入,最后讲几个生产环境必须注意的性能和安全配置。跟着做下来,你就能把本地大模型变成一个真正可用的团队 AI 工具。
Open WebUI 是什么
一句话:一个给本地大模型用的 Web 聊天界面,长得像 ChatGPT,但所有请求都走你自己的模型和硬件。
它跟 Ollama 的关系是这样:Ollama 负责跑模型、做推理,相当于引擎;Open WebUI 负责展示聊天界面、管理对话历史、处理文件上传,相当于驾驶舱。两者通过 REST API 通信,可以跑在同一台机器上,也可以分开部署。
核心功能一览:
- 多模型切换:一个界面里随时切换不同模型(如 Qwen2.5、DeepSeek、LLaMA),不用每次改配置
- 对话管理:历史记录、搜索、导出,跟 ChatGPT 一样方便
- 多用户支持:注册登录、角色权限,适合小团队共用一台推理服务器
- 联网搜索:集成 SearXNG 或直接调用搜索引擎 API,让模型能获取实时信息
- RAG 知识库:上传 PDF/Word/TXT 文档,基于本地 Embedding 模型做检索增强生成
- 代码高亮、LaTeX 公式、Markdown 渲染:技术写作和数据分析场景必备
环境准备
假设你已经按前文搭好了 Ollama 服务(跑在 http://host:11434)。如果还没搭,建议先回去看完那篇再回来。
Open WebUI 官方推荐 Docker 部署,这是最省心的方式——一条命令拉起全部依赖,升级也只需拉新镜像重启。
硬件要求其实很低:
- CPU:1 核起步,2 核更稳
- 内存:512MB 够跑 WebUI 本身,但如果你同时要跑 Embedding 模型做 RAG,建议 2GB+
- 磁盘:容器镜像约 2GB,后续文档存储和对话历史看使用量
- 网络:Open WebUI 跟 Ollama 之间走内网通信,延迟极低
说白了,你跑 Ollama 的那台机器多挂一个容器完全没压力。
Docker 部署(最推荐的方式)
一条命令启动:
docker run -d
--name open-webui
--restart unless-stopped
-p 3000:8080
-v open-webui-data:/app/backend/data
-e OLLAMA_BASE_URL=http://192.168.1.100:11434
ghcr.io/open-webui/open-webui:main
几个参数说明:
-p 3000:8080:把容器的 8080 端口映射到宿主机 3000 端口。你想用别的端口自己改就行。-v open-webui-data:/app/backend/data:数据持久化卷,存用户信息、对话历史和上传的文档。这是 Docker 命名卷,后续备份迁移都很方便。-e OLLAMA_BASE_URL:告诉 Open WebUI 你的 Ollama 服务在哪。如果 Ollama 在同一台机器上用 Docker 跑的,可以写http://host.docker.internal:11434(Windows/Mac)或http://172.17.0.1:11434(Linux 桥接模式)。
启动后打开 http://你的服务器IP:3000,第一个注册的用户会自动成为管理员。
Docker Compose 部署(生产推荐)
单条 Docker 命令适合测试,正式用建议上 Compose,方便管理环境和升级:
version: '3.8'
services:
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: open-webui
restart: unless-stopped
ports:
- "3000:8080"
volumes:
- open-webui-data:/app/backend/data
environment:
- OLLAMA_BASE_URL=http://ollama:11434
- WEBUI_NAME=AI 助手
- WEBUI_SECRET_KEY=your-secure-random-key-here
- DEFAULT_MODELS=qwen2.5:7b
- ENABLE_SIGNUP=false
- WEBUI_AUTH=true
depends_on:
- ollama
ollama:
image: ollama/ollama:latest
container_name: ollama
restart: unless-stopped
ports:
- "11434:11434"
volumes:
- ollama-models:/root/.ollama
deploy:
resources:
reservations:
devices:
- driver: nvidia
capabilities: [gpu]
count: all
volumes:
open-webui-data:
ollama-models:
这个 Compose 把 Ollama 和 Open WebUI 放在同一个 Docker 网络里,Open WebUI 直接用服务名 ollama:11434 访问,不需要写 IP 地址。
几个关键环境变量:
WEBUI_NAME:浏览器标签和页面标题显示的名字,改成你自己的品牌名WEBUI_SECRET_KEY:会话加密密钥,必须设置,否则会话数据不安全DEFAULT_MODELS:新用户默认使用的模型,不用每次都手动选ENABLE_SIGNUP=false:关闭公开注册,只有管理员能添加用户。生产环境必须关WEBUI_AUTH=true:启用登录验证。不开启的话任何人能直接访问你的聊天界面
启动前生成一个安全的 SECRET_KEY:
openssl rand -hex 32
然后把输出的字符串填入 WEBUI_SECRET_KEY。
多用户与权限管理
Open WebUI 的用户系统做得不错。第一个注册的用户是管理员,后续用户可以通过管理员后台添加,或者开放注册后自行注册。
推荐的生产配置:
# 关闭公开注册
-e ENABLE_SIGNUP=false
# 管理员手动添加用户
# 登录管理员账号 → 设置 → 用户管理 → 添加用户
每个用户可以设置角色:
- 管理员:完全控制权,可管理用户、模型、系统设置
- 用户:只能使用分配的模型,不能修改系统配置
- 访客:有限使用权限,适合临时展示场景
如果团队里有人不会装环境、不想折腾终端,你只需要给他一个浏览器地址和一个账号密码,剩下的都在网页里完成。这就是 Open WebUI 最大的价值。
联网搜索配置
本地模型的知识截止于训练数据,要查实时信息(天气、新闻、最新技术文档)就得给它配上网能力。
Open WebUI 支持两种联网搜索方式:
方式一:SearXNG(自建,推荐)
SearXNG 是一个开源的元搜索引擎,你自己部署一个实例,Open WebUI 通过它来搜索互联网。优点是完全自主可控,没有 API 费用和调用限制。
docker run -d
--name searxng
--restart unless-stopped
-p 4000:8080
-v searxng-data:/etc/searxng
-e BASE_URL=http://你的服务器IP:4000
-e SEARXNG_SECRET_KEY=$(openssl rand -hex 32)
searxng/searxng:latest
然后在 Open WebUI 的系统设置里,填入 SearXNG 的地址 http://你的服务器IP:4000,启用联网搜索即可。
方式二:搜索引擎 API(省事)
如果你不想多跑一个服务,也可以直接用搜索引擎的 API。Open WebUI 支持 Google PSE、Brave Search、SearXNG 等。以 Brave 为例:
- 去 Brave Search API 注册,免费额度每月 2000 次查询
- 在 Open WebUI 设置 → 联网搜索 → 选择 Brave → 填入 API Key
对于个人使用,每月 2000 次完全够用。加上 SearXNG 自建方案作为主力,Brave API 做备用,基本不会遇到搜索瓶颈。
RAG 知识库配置
这是把本地文档变成模型知识的关键功能。你上传一份产品手册、公司制度或者技术规范,模型就能基于这些文档回答问题,而不是凭训练数据里的模糊记忆瞎编。
Open WebUI 的 RAG 流程:
- 你上传一个文档(PDF/Word/TXT/Markdown)
- 系统自动将文档切分成 Chunk,调用 Embedding 模型生成向量
- 向量存入本地向量数据库(Chroma)
- 你提问时,系统先检索最相关的 Chunk,连同问题一起发给 LLM
- LLM 基于检索到的内容回答问题
需要配置一个 Embedding 模型。推荐用 BAAI/bge-m3 或 shaw/dmeta-embedding-zh(中文场景):
# 下载 Embedding 模型
ollama pull bge-m3
然后在 Open WebUI 的管理设置里,把 Embedding 模型选为 bge-m3。默认情况下它会自动检测 Ollama 里已安装的 Embedding 模型。
注意: RAG 的检索质量很大程度取决于 Chunk 大小和重叠率。Open WebUI 的默认参数(Chunk 大小 1000 tokens,重叠 200 tokens)对大部分文档效果不错。如果你的文档技术性强、术语多,可以适当缩小 Chunk 到 500 tokens 提高准确率。
性能调优与安全配置
以下几条是生产环境必须做的,踩过坑就知道重要:
1. 设置 WEBUI_SECRET_KEY
之前已经提过,这里再强调一次——不设置的话会话 Cookie 用默认 Key 加密,等于没锁门。
2. 关闭公开注册
ENABLE_SIGNUP=false。除非你的场景就是公开服务,否则别开着注册让人随便进来跑你的模型。
3. Nginx 反向代理 + HTTPS
如果 Open WebUI 要暴露到公网(比如通过 frp 或 Cloudflare Tunnel),一定在前面加一层 HTTPS:
server {
listen 443 ssl;
server_name ai.yourdomain.com;
ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/key.pem;
location / {
proxy_pass http://127.0.0.1:3000;
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 X-Forwarded-Proto $scheme;
proxy_buffering off;
proxy_read_timeout 300s;
}
}
注意 proxy_read_timeout 300s ——大模型推理经常超过 60 秒,默认超时时间不够会导致请求被截断。
4. 限制并发请求
Open WebUI 本身不做并发控制,但 Ollama 端的 OLLAMA_NUM_PARALLEL 和 OLLAMA_MAX_LOADED_MODELS 会限制实际并发。建议根据显存大小设置:24GB 显存跑 7B 模型时,并发设为 2 比较安全。
5. 定期清理对话历史
对话历史存在 Docker 卷里,时间长了会占用不少空间。可以在管理后台设置自动清理策略,或者用 cron 定期清理:
# 进入容器清理 30 天前的会话
docker exec open-webui rm -rf /app/backend/data/webui.db
# 或者通过 API 清理(需管理员 Token)
这个要谨慎操作——删了就没了。建议先确认清理策略再执行。
常见问题排查
Q:启动后页面空白或一直转圈?
A:检查 OLLAMA_BASE_URL 是否写对。在宿主机上跑 curl http://你的Ollama地址:11434/api/tags,看能不能返回模型列表。另外确认防火墙没封 3000 端口。
Q:模型能加载但回答特别慢?
A:先确认用了 GPU 推理:docker logs ollama | grep -i GPU。如果显示 CPU 在跑,检查 NVIDIA Container Toolkit 是否安装正确。再确认 OLLAMA_NUM_PARALLEL 没设太高导致显存溢出。
Q:上传文档后 RAG 检索不到内容?
A:第一步检查 Embedding 模型是否已经下载。第二步看文档格式是否支持(推荐 PDF 和 Markdown)。第三步进后台查看文档处理日志,确认 Chunk 正常生成。
Q:联网搜索返回空结果?
A:如果是 SearXNG,先单独打开 SearXNG 的页面测试搜索是否正常。如果是 API 方式,检查 API Key 的有效期和剩余额度。
总结
Open WebUI 是目前本地大模型部署的最佳前端选择,没有之一。它的价值不在于功能多花哨,而在于把一个命令行工具变成了一个真正的团队产品——同事不用学任何命令,打开浏览器就能用上大模型。
加上 RAG 知识库和联网搜索之后,你的私有 AI 助手就从”能聊天”升级到了”能干活”:查公司文档、整理技术资料、辅助编程、写周报邮件,这些场景都能覆盖。
下一步可以研究 Open WebUI 的 Pipeline 插件机制,通过自定义 Pipeline 把 ComfyUI 图像生成、IndexTTS 语音合成接入到同一个对话界面里,那就是真正的多模态 AI 工作台了。这个以后有机会再写一篇。
