开放 WebUI:自托管 LLM 界面
适用于本地大语言模型的自托管ChatGPT替代方案
Open WebUI 是一个功能强大、可扩展且功能丰富的自托管网页界面,用于与大型语言模型进行交互。
它支持 Ollama 和任何 OpenAI 兼容的 API,将熟悉的 ChatGPT 体验带到您的基础设施中,同时确保完全的隐私性、离线能力以及企业级功能。

什么是 Open WebUI?
Open WebUI 是一个开源的、自托管的网络应用程序,为与大型语言模型进行交互提供现代聊天界面。与基于云的 AI 服务不同,Open WebUI 完全在您的基础设施上运行,为您提供对数据、对话和模型选择的完全控制权。
虽然 Open WebUI 通常与 Ollama 一起使用(有时非正式地被称为“Ollama WebUI”),但它实际上是一个与后端无关的平台。它可以连接到 Ollama 的 API 以执行本地模型,但它也支持任何 OpenAI 兼容的端点,包括 vLLM、LocalAI、LM Studio、Text Generation WebUI,甚至云提供商。这种灵活性使 Open WebUI 成为一个全面的解决方案,支持多个后端、文档聊天的 RAG(检索增强生成)、多用户身份验证、语音功能以及广泛的自定义选项。无论您是在笔记本电脑、家庭服务器还是 Kubernetes 集群上运行模型,Open WebUI 都能根据您的需求进行扩展。
为什么选择 Open WebUI?
隐私优先:所有数据都保留在您的基础设施中——除非您明确配置外部 API,否则没有对话、文档或提示会离开您的网络。
离线能力:非常适合空气隔离环境、受限网络或互联网访问不可靠或被禁止的情况。当与通过 Ollama 或 vLLM 本地运行的模型配合使用时,您将完全独立于云服务。
功能丰富:尽管是自托管的,Open WebUI 在文档上传和 RAG、带语义搜索的对话历史、提示模板和共享、模型管理、语音输入/输出、响应式移动设计以及深色/浅色主题等方面与商业产品相媲美。
多用户支持:内置的身份验证系统带有基于角色的访问控制(管理员、用户、待审批),用户管理仪表板、对话隔离以及跨团队共享的提示和模型。
快速安装指南
使用 Docker 是开始使用 Open WebUI 的最快方式。本节涵盖了最常见的部署场景。
基础安装(连接到现有 Ollama)
如果您已经在系统上运行 Ollama,请使用以下命令:
docker run -d \
-p 3000:8080 \
-v open-webui:/app/backend/data \
--name open-webui \
--restart always \
ghcr.io/open-webui/open-webui:main
这在端口 3000 上运行 Open WebUI,并在 Docker 卷中持久化数据。您可以通过 http://localhost:3000 访问它。
组合安装(Open WebUI + Ollama)
对于包含 Ollama 的完整一站式设置:
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
--gpus all 标志启用 GPU 访问以加快推理速度。如果您仅运行 CPU,则可以省略此标志。
Docker Compose 部署
对于生产部署,Docker Compose 提供更好的可维护性:
version: '3.8'
services:
ollama:
image: ollama/ollama:latest
ports:
- "11434:11434"
volumes:
- ollama:/root/.ollama
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
open-webui:
image: ghcr.io/open-webui/open-webui:main
ports:
- "3000:8080"
environment:
- OLLAMA_BASE_URL=http://ollama:11434
volumes:
- open-webui:/app/backend/data
depends_on:
- ollama
restart: always
volumes:
ollama:
open-webui:
使用 docker-compose up -d 进行部署。
Kubernetes 部署
对于企业部署,Open WebUI 提供 Helm 图表:
helm repo add open-webui https://helm.openwebui.com/
helm repo update
helm install open-webui open-webui/open-webui \
--set ollama.enabled=true \
--set ingress.enabled=true \
--set ingress.host=chat.yourdomain.com
这将创建一个带有持久存储、健康检查和可选的入口配置的生产就绪部署。
核心功能深入解析
RAG 和文档聊天
Open WebUI 的 RAG 实现允许您上传文档,并让模型在对话中引用它们。系统会自动对文档进行分块,生成嵌入,存储在向量数据库中,并在您提问时检索相关上下文。
支持的格式:PDF、DOCX、TXT、Markdown、CSV 等,通过内置解析器支持更多格式。
使用方法:在聊天中点击 ‘+’ 按钮,选择 ‘上传文件’,选择您的文档,然后开始提问。模型将在其回答中引用相关段落和页码。
配置:您可以在管理设置中调整分块大小、重叠、嵌入模型和检索参数,以优化与您文档类型的性能。
多用户身份验证和管理
Open WebUI 包含适合团队和组织使用的完整身份验证系统:
- 本地身份验证:用户名/密码,使用安全的密码哈希
- OAuth/OIDC 集成:连接到现有身份提供者(Google、GitHub、Keycloak 等)
- LDAP/Active Directory:企业目录集成
- 基于角色的访问:管理员(完全控制)、用户(标准访问)、待审批(需要批准)
管理员可以管理用户、监控使用情况、按用户/组配置模型访问权限,并设置对话保留策略。
语音输入和输出
内置的语音交互支持使 Open WebUI 更加易用和便捷:
- 语音转文本:使用 Web Speech API 或配置的外部 STT 服务
- 文本转语音:支持多种 TTS 引擎(基于浏览器、Coqui TTS、ElevenLabs 等)
- 语言支持:根据您的 TTS/STT 配置支持多种语言
提示工程工具
Open WebUI 提供强大的提示管理工具:
- 提示库:将常用提示保存为模板
- 变量和占位符:创建带有动态内容的可重用提示
- 提示共享:与团队共享有效的提示
- 提示版本控制:跟踪随时间的变化和改进
模型管理
通过 UI 轻松切换和管理模型:
- 模型目录:直接从 Ollama 的库中浏览和拉取模型
- 自定义模型:上传和配置自定义 GGUF 模型
- 模型参数:按对话调整温度、top-p、上下文长度和其他采样参数
- 模型元数据:查看模型详情、大小、量化和功能
配置和自定义
环境变量
通过环境变量进行关键配置选项:
# 后端 URL(Ollama 或其他 OpenAI 兼容 API)
OLLAMA_BASE_URL=http://localhost:11434
# 启用身份验证
WEBUI_AUTH=true
# 默认用户角色(user, admin, pending)
DEFAULT_USER_ROLE=pending
# 启用用户注册
ENABLE_SIGNUP=true
# 管理员邮箱(自动创建管理员账户)
WEBUI_ADMIN_EMAIL=admin@example.com
# 数据库(默认 SQLite,或生产环境使用 PostgreSQL)
DATABASE_URL=postgresql://user:pass@host:5432/openwebui
# 启用 RAG
ENABLE_RAG=true
# RAG 的嵌入模型
RAG_EMBEDDING_MODEL=sentence-transformers/all-MiniLM-L6-v2
连接到其他后端
Open WebUI 可以与任何 OpenAI 兼容的 API 一起工作。在设置 → 连接中配置基础 URL:
- vLLM:
http://localhost:8000/v1 - LocalAI:
http://localhost:8080 - LM Studio:
http://localhost:1234/v1 - Text Generation WebUI:
http://localhost:5000/v1 - OpenAI:
https://api.openai.com/v1(需要 API 密钥) - Azure OpenAI:自定义端点 URL
反向代理配置
对于生产部署,请在反向代理后面运行 Open WebUI:
Nginx 示例:
server {
listen 443 ssl http2;
server_name chat.yourdomain.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
location / {
proxy_pass http://localhost: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;
# WebSocket 支持
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
Traefik 示例(Docker 标签):
labels:
- "traefik.enable=true"
- "traefik.http.routers.openwebui.rule=Host(`chat.yourdomain.com`)"
- "traefik.http.routers.openwebui.entrypoints=websecure"
- "traefik.http.routers.openwebui.tls.certresolver=letsencrypt"
- "traefik.http.services.openwebui.loadbalancer.server.port=8080"
性能优化
数据库调优
对于多用户部署,请从 SQLite 切换到 PostgreSQL:
# 安装依赖
pip install psycopg2-binary
# 配置数据库 URL
DATABASE_URL=postgresql://openwebui:password@postgres:5432/openwebui
PostgreSQL 能更好地处理并发用户,并为对话搜索和 RAG 操作提供改进的查询性能。
嵌入模型选择
RAG 性能在很大程度上取决于嵌入模型的选择:
- 快速/资源受限:
all-MiniLM-L6-v2(384 维度,约 80MB) - 平衡:
all-mpnet-base-v2(768 维度,约 420MB) - 最佳质量:
bge-large-en-v1.5(1024 维度,约 1.3GB)
在设置 → RAG → 嵌入模型中进行配置。
缓存策略
启用对话缓存以减少重复的 API 调用:
- 模型缓存:Ollama 自动在内存中缓存加载的模型
- 响应缓存:Open WebUI 可以缓存相同的提示(可配置)
- 嵌入缓存:重用之前处理过的文档的嵌入
安全最佳实践
在生产环境中部署 Open WebUI 时,请遵循这些安全指南:
- 启用身份验证:在公共网络上运行 Open WebUI 时,绝不要禁用身份验证
- 使用 HTTPS:始终在带有 TLS/SSL 的反向代理后面部署
- 定期更新:保持 Open WebUI 和 Ollama 更新以获得安全补丁
- 限制访问:使用防火墙规则限制访问到受信任的网络
- 安全 API 密钥:如果连接到外部 API,请使用环境变量,不要硬编码密钥
- 审计日志:启用并监控访问日志以检测可疑活动
- 备份数据:定期备份
/app/backend/data卷 - 数据库加密:在生产环境中启用 PostgreSQL 的静态加密
- 速率限制:配置速率限制以防止滥用
- 内容过滤:实施适合您组织的内容策略
使用场景和实际应用
个人知识助手
将 Open WebUI 与本地模型和 RAG 结合,创建一个私人知识库。上传您的笔记、研究论文、项目文档和个人文档。无需将数据发送到云服务,即可进行对话式查询——非常适合重视隐私的研究人员、学生和知识工作者。
开发团队协作
为开发团队部署 Open WebUI,提供对技术文档、API 规格和代码库知识的共享访问。RAG 功能使开发人员能够快速查找数千页文档中的相关信息,而对话历史有助于跟踪架构决策和技术讨论。
企业内部聊天机器人
组织可以在防火墙后部署 Open WebUI,集成 SSO,为员工提供一个 AI 助手,可以访问内部维基、政策和程序。基于角色的访问确保敏感信息得到适当的隔离,而管理员控制保持治理和合规。
教育和培训
教育机构使用 Open WebUI 为学生和教师提供 AI 协助,而无需担心隐私问题。上传课程材料、教科书和讲座笔记以进行上下文问答。多用户系统允许跟踪使用情况,同时保持学生数据的私密性。
医疗和法律应用
在数据隐私至关重要的受监管行业中,Open WebUI 使 AI 协助的工作流程得以实现,同时保持 HIPAA 或 GDPR 合规。医疗专业人员可以查询药品数据库和治疗方案,而法律团队可以搜索案例法和合同——所有这些都不需要数据离开受控基础设施。
空气隔离和离线环境
政府机构、研究设施和安全运营中心在空气隔离网络中使用 Open WebUI。完全的离线能力确保即使没有互联网连接,AI 协助仍然可用,这对于机密环境或偏远地区至关重要。
常见问题的故障排除
连接问题
问题:Open WebUI 无法连接到 Ollama
解决方案:确认 Ollama 正在运行 (curl http://localhost:11434),检查 OLLAMA_BASE_URL 环境变量,并确保防火墙规则允许连接。对于 Docker 部署,请使用服务名称 (http://ollama:11434) 而不是 localhost。
问题:模型在 UI 中不显示
解决方案:确认模型已安装 (ollama list),在 Open WebUI 设置中刷新模型列表,并检查浏览器控制台的 API 错误。
RAG 和文档上传问题
问题:文档上传失败
解决方案:检查设置中的文件大小限制,确认支持的文件格式,确保数据卷中有足够的磁盘空间,并查看容器日志以查找解析错误。
问题:RAG 响应不引用上传的文档
解决方案:确认嵌入模型已下载并运行,检查分块大小设置(尝试更小的分块以获得更好的粒度),在 RAG 设置中增加检索的分块数量,并确保查询与文档内容相关。
性能问题
问题:响应时间缓慢
解决方案:如果可用,启用 GPU 加速,减少模型大小或使用量化版本,增加 OLLAMA_NUM_PARALLEL 以处理并发请求,并为 Docker 容器分配更多 RAM。
问题:内存不足错误
解决方案:使用较小的模型(7B 而不是 13B 参数),减少模型参数中的上下文长度,限制并发用户,或为系统添加更多 RAM/交换空间。
身份验证和访问
问题:无法登录或创建管理员账户
解决方案:设置 WEBUI_AUTH=true,配置 WEBUI_ADMIN_EMAIL 以自动创建管理员,清除浏览器 cookie 和缓存,并检查容器日志中的数据库错误。
问题:用户无法注册
解决方案:确认 ENABLE_SIGNUP=true,检查 DEFAULT_USER_ROLE 设置(使用 user 以自动批准或 pending 以手动批准),并确保数据库可写。
Open WebUI 替代方案
虽然 Open WebUI 在提供与 Ollama 强集成的自托管界面方面表现出色,但几种替代方案提供了对同一问题空间的不同方法。您的选择取决于是否需要多提供者灵活性、专门的文档处理、极端的简单性或企业功能。
LibreChat 是最提供者无关的解决方案,提供对 OpenAI、Anthropic、Azure OpenAI、Google Vertex AI、AWS Bedrock 和 Ollama 的原生支持。其插件架构和企业功能(如多租户、详细的访问控制和使用配额)使其非常适合需要支持多个 AI 提供者或需要复杂的审计跟踪的组织。代价是复杂性——LibreChat 需要更多的设置工作和更重的资源,其 Ollama 支持对云提供者来说感觉是次要的。如果您的团队使用 Claude 进行写作、GPT-4 进行编码和本地模型进行隐私敏感的工作,LibreChat 的统一界面非常出色。
对于文档密集型工作流程,AnythingLLM 采用以知识库为中心的方法,超越了基本的 RAG。其工作区模型将文档和对话组织到隔离的环境中,高级检索功能包括混合搜索、重新排序和引用跟踪。数据连接器从 GitHub、Confluence 和 Google Drive 拉取内容,代理功能启用多步骤推理和工作流自动化。这使 AnythingLLM 非常适合管理多个客户知识库的咨询公司或处理大量文档的支持团队。聊天界面不如 Open WebUI 精致,但如果查询大型文档集合是您的主要需求,复杂的检索功能值得学习曲线。
LobeChat 优先考虑用户体验而非功能深度,提供一个现代、移动友好的界面和渐进式网络应用功能。其现代设计、流畅动画和强大的语音/多模态支持使其在设计师和非技术用户中很受欢迎,他们希望 AI 助手在设备之间无缝工作。PWA 实现提供了 Open WebUI 无法匹配的类似应用的移动体验。然而,企业功能有限,插件生态系统较小,RAG 能力落后于 Open WebUI 和 AnythingLLM。
对于偏好桌面应用程序的用户,Jan.ai 提供跨平台安装程序(Windows、macOS、Linux)以及零配置的本地模型管理。无需单独安装 Ollama 或处理 Docker——Jan 将所有内容捆绑到一个原生应用中,支持系统托盘和一键模型下载。这种“开箱即用”的理念使其非常适合给不熟悉命令行工具的家庭成员或同事使用本地 LLM。代价是没有多用户支持,高级功能较少,没有远程访问能力。
Chatbox 占据了轻量级的利基市场——一个最小的跨平台客户端,支持 OpenAI、Claude、Gemini 和本地 API,资源开销极低。它非常适合需要快速测试不同 API 提供商的开发人员或资源受限硬件的用户。设置摩擦很小,但一些功能是订阅制的,它不是完全开源的,RAG 支持有限。
存在几个 Ollama 专用的最小 UI,供希望“刚好够用”的用户:Hollama 管理跨不同机器的多个 Ollama 服务器,Ollama UI 提供基本的聊天和 PDF 上传,部署极其简单,Oterm 提供了令人惊讶的强大的基于终端的界面用于 SSH 会话和 tmux 工作流。这些牺牲了功能以换取简洁和速度。
对于需要供应商支持的组织,商业选项 如 TypingMind Team、BionicGPT 和 Dust.tt 提供自托管并有专业支持,合规认证和 SLA。它们以开源自由换取保证的正常运行时间、安全审计和问责——适合需要企业级支持合同的组织。
明智的选择:Open WebUI 对于大多数自托管 Ollama 部署来说,正好处于中间位置,平衡了全面的功能和可管理的复杂性。当提供者灵活性至关重要时选择 LibreChat,当需要复杂的文档工作流程时选择 AnythingLLM,当需要移动优先或设计意识用户时选择 LobeChat,当需要非技术桌面用户时选择 Jan,当需要供应商支持时选择商业选项。对于大多数运行本地模型的技术用户,Open WebUI 的活跃开发、强大的社区和出色的 RAG 实现使其成为推荐的起点。
未来的发展和路线图
Open WebUI 继续快速开发,有几个令人兴奋的功能在路线图上:
改进的多模态支持:更好地处理图像、视觉模型和多模态对话,使用如 LLaVA 和 Bakllava 等模型。
增强的代理功能:函数调用、工具使用和多步骤推理工作流程,类似于 AutoGPT 模式。
更好的移动应用:除了当前的 PWA 实现,原生 iOS 和 Android 应用程序,以提高移动体验。
高级 RAG 功能:基于图的 RAG、语义分块、多查询检索和父文档检索,以获得更好的上下文。
协作功能:共享对话、团队工作区和实时协作提示和文档。
企业集成:更深入的 SSO 支持、SCIM 供应、高级审计日志和合规报告,适用于受监管行业。
该项目保持向后兼容性和语义版本控制,使升级变得简单。活跃的 GitHub 仓库每天都有提交,并且有响应的 issue 管理。
结论
Open WebUI 已从一个简单的 Ollama 前端发展为一个全面的平台,用于自托管 AI 交互。其隐私性、功能性和部署简便性使其成为希望利用本地 LLM 而不牺牲功能的个人、团队和组织的绝佳选择。
无论您是测试模型的开发人员、构建内部 AI 工具的组织,还是优先考虑隐私的个人,Open WebUI 都为强大的自托管 AI 工作流提供了基础。活跃的社区、定期更新和可扩展的架构确保它将在自托管 AI 领域中继续保持领先地位。
从基本的 Docker 安装开始,通过上传几个文档尝试 RAG,尝试 Ollama 库中的不同模型,并随着需求的增长逐步探索高级功能。学习曲线是温和的,但天花板很高——Open WebUI 可以从个人笔记本电脑扩展到企业 Kubernetes 集群。
对于那些在比较替代方案的人,Open WebUI 的以 Ollama 为中心的设计、平衡的功能集和活跃的开发使其成为大多数自托管 LLM 部署的推荐起点。如果出现特定需求,您可以随时迁移到更专业的解决方案,但许多用户发现 Open WebUI 的功能足以满足他们从实验到生产整个旅程的需求。
有用的链接
在设置您的 Open WebUI 环境时,了解本地 LLM 主机和部署选项的更广泛生态系统将大有帮助。综合指南 本地 LLM 主机:2025 年完整指南 - Ollama、vLLM、LocalAI、Jan、LM Studio 等 比较了包括 Ollama、vLLM、LocalAI 等在内的 12+ 本地 LLM 工具,帮助您根据 API 成熟度、工具调用能力和性能基准选择最适合 Open WebUI 部署的后端。
对于吞吐量和延迟至关重要的高性能生产部署,请查看 vLLM 快速入门:高性能 LLM 服务,该指南涵盖了 vLLM 的 Docker 设置、OpenAI API 兼容性和 PagedAttention 优化。这在 Open WebUI 为多个并发用户提供服务且 Ollama 性能成为瓶颈时特别有价值。
了解您的后端如何处理并发请求对于容量规划至关重要。文章 Ollama 如何处理并行请求 解释了 Ollama 的请求排队、GPU 内存管理和并发执行模型,帮助您为 Open WebUI 部署的多用户场景配置适当的限制和预期。
外部资源
有关官方文档和社区支持,请参考这些外部资源: