Ollama 的 WebUI 选型
为本地大模型运行器挑选合适的 Web 前端
Ollama 是目前最流行的本地大语言模型(Large Language Model,LLM)运行器之一,基于 llama.cpp 构建,采用 Go 语言封装,MIT 协议开源。它把权重下载、量化版本选择、上下文管理、推理参数等繁琐细节都收拢在一条命令背后,让 macOS、Windows、Linux 用户可以像 docker run 一样在本地跑起 Llama、Qwen、Gemma、DeepSeek、GLM 等开源模型。但 Ollama 本身只暴露一个命令行界面与一个 HTTP API,若希望像使用 ChatGPT 那样在浏览器里对话、管理多轮会话、上传文档,就需要再搭配一个 WebUI。本文先回顾 Ollama 的接口形态,再盘点几类常见的 WebUI 方案与选型要点。
Ollama 的接口形态
理解 WebUI 的前提,是先看清 Ollama 提供了什么接口。Ollama 主要对外提供两类入口:
- 命令行(CLI):
ollama run <model>拉起一次交互式会话,ollama pull <model>下载权重,ollama ls列出本地模型,ollama ps查看常驻内存的模型,ollama serve启动后台服务。 - REST API: 由
ollama serve暴露在http://localhost:11434,提供/api/chat、/api/generate、/api/tags、/api/pull等端点,支持流式(streaming)输出与多模态(multimodal)输入。
安装本身极其轻量,官方提供一键脚本:
# macOS / Linux
curl -fsSL https://ollama.com/install.sh | sh
# Windows PowerShell
irm https://ollama.com/install.ps1 | iex
# Docker
docker run -d -p 11434:11434 ollama/ollama一个关键的环境变量是 OLLAMA_ORIGINS。Ollama 默认只允许来自 127.0.0.1 与 0.0.0.0 的跨域请求,浏览器扩展或自定义前端页面访问本地接口时会被 CORS 策略拦截。放行方式是显式声明来源:
# 放行所有浏览器扩展
OLLAMA_ORIGINS=chrome-extension://*,moz-extension://*,safari-web-extension://* ollama serve所有 WebUI 本质上都是这个 REST API 的前端壳,区别只在于做了多少封装、面向哪类用户。
主流 WebUI 项目
下面按"通用自托管平台 / 多模型桌面客户端 / 轻量前端 / 垂直场景"四类整理。
通用自托管平台
这类项目面向"搭一个团队或家庭内部用的 ChatGPT 替代品"的需求,功能完整,自带用户系统与权限。
Open WebUI(前身即为 ollama-webui)是 Ollama 生态里事实上的标准前端,Star 数已突破 14 万。除 Ollama 外,它同时支持任何 OpenAI 兼容的 API(如 vLLM、LMStudio、GroqCloud、OpenRouter)。核心能力包括: 本地 RAG(Retrieval-Augmented Generation,检索增强生成)集成多种向量库与 BM25 混合检索; 多模型并行对话; 内置 Web 搜索; 细粒度的角色权限(RBAC)与用户组; LDAP / OAuth / SSO 等企业级认证; 桌面、移动、PWA 多端覆盖。前端使用 Svelte + Tailwind CSS,后端为 Python,通过 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:mainAnythingLLM 由 Mintplex Labs 维护,定位是"All-in-One AI 应用"。相比 Open WebUI 更偏对话,AnythingLLM 把重心放在与私有文档对话上: 拖拽上传 PDF / DOCX / TXT,自动入库到 LanceDB(也可换 PGVector、Chroma、Qdrant、Milvus、Pinecone 等),并提供引用溯源、工作区隔离、定时任务(cron)、无代码 Agent 构建器、可嵌入网站的聊天挂件。前端为 Vite + React,后端为 Node.js / Express,MIT 协议。它的目标是"Stop renting your intelligence"——把 ChatGPT 这类付费 SaaS 变成本地自有的智能体平台。
多模型桌面客户端
Chatbox 自我定位"Your Ultimate AI Copilot on the Desktop"。基于 Electron + React + TypeScript 构建,同时提供 Windows、macOS、Linux 桌面版以及 iOS、Android、Web 端。它并不绑定 Ollama,而是把 OpenAI、Azure OpenAI、Claude、Gemini、Ollama、ChatGLM 等多家供应商统一收纳在一个客户端里,数据本地存储。社区版采用 GPL-3.0 协议,适合个人开发者日常切换多个模型时使用,免去为每个供应商单独装 App 的麻烦。它的特点是 Markdown / LaTeX / 代码高亮、流式回复、提示词库、消息引用、DALL·E 3 图像生成等。
轻量前端
ollama-ui 的口号是"Just a simple HTML UI for Ollama"。仓库体量极小,主体是原生 HTML + 原生 JavaScript,没有 React / Vue 这类框架依赖,本地用 make 即可起一个静态服务,同时打包成 Chrome 扩展。适合用于快速验证 Ollama 是否跑通,或者作为二次开发的起手模板。
垂直场景
swuecho/chat 面向小团队 SaaS 场景: 内置用户管理与速率限制(默认每 10 分钟 100 次调用),首位注册者自动获得管理员权限。前端 Vue,后端 Go,附带 Flutter 移动端,支持分享会话链接(类似 ShareGPT)。MIT 协议,适合需要给多人共享同一个 Ollama 实例并做配额控制的团队。
ollama-chats 是一个极端个性化的项目: 整个界面塞进单个 HTML 文件,唯一依赖是一个 vue.prod.js,作者声称 30 分钟即可通读全部源码。它专为文本角色扮演游戏(Role-playing Game,RPG)设计,支持多角色对话、分支会话树、按角色独立的 RAG 记忆、消息评分等。强调"以偏执心态防止聊天泄漏"。需要注意的是它是专有软件(proprietary),个人非商业免费,商业使用与再分发需取得作者授权,并非 MIT 类自由协议。
选型要点
把这六个项目放在一起看,维度大致如下:
| 项目 | 主语言 / 栈 | 定位 | 协议 |
|---|---|---|---|
| Open WebUI | Svelte + Python | 自托管、企业级 AI 平台 | Open WebUI License(带品牌保留条款) |
| AnythingLLM | React + Node.js | 私有文档问答与 Agent | MIT |
| Chatbox | Electron + React | 跨平台多模型桌面客户端 | GPL-3.0(社区版) |
| ollama-ui | 原生 HTML + JS | 最简验证 / 二次开发模板 | MIT |
| swuecho/chat | Vue + Go | 团队共享 + 配额 | MIT |
| ollama-chats | 单文件 Vue | 角色扮演 / 隐私偏执 | 专有(非商业免费) |
经验上的几条原则:
- 只要一个人用: Chatbox 即可,开箱即用,无需自托管。
- 家庭或团队共享一个 Ollama 实例: Open WebUI 是默认选项,社区最大、功能最全、文档最齐。
- 重点是私有文档检索问答: 选 AnythingLLM,它的 RAG 工作流更成熟。
- 想做扩展或学习 Ollama API: 从 ollama-ui 起手,几百行代码就能看懂。
- 需要多人配额、要对外小范围提供服务: swuecho/chat 的用户与限流管理开箱即有。
最后提醒一个易被忽略的坑: 部署到服务器或非本地环境时,务必确认 Ollama 监听地址与 OLLAMA_ORIGINS 配置正确,否则 WebUI 出现"接口 200 但浏览器拿不到数据"的怪异现象,多半是 CORS 没放行。