把 QWen36 接进 Open WebUI:飞牛 NAS 上给本地大模型一个像样的操作台

家里那台飞牛 NAS 上跑着 QWen36(Qwen3.6-35B-A3B,MoE 架构,实际激活参数才 3B 出头),走的是 llama-server,监听在 39625 端口,对外暴露成 OpenAI 兼容的 API。但老实说,调了大半个月,我一直是用 curl 和脚本跟它对话——能用,但每次想让它帮我把一段长文总结一下、或者就着几份 PDF 问问问题,命令行就太憋屈了。

直到重新看了一眼 Open WebUI。

是什么

Open WebUI 是个自托管的 AI 前端,14.4 万星,完全能离线跑。它不自己出模型,而是当“操作台”:一头接 Ollama,一头接任何 OpenAI 兼容的 API(LM Studio、vLLM、Groq、OpenRouter 都行)。界面基本就是个本地版 ChatGPT,但数据、历史、模型全在你自己机器上。

Open WebUI 主界面截图

为什么值得装

裸调 API 最大的问题是“没有外壳”。没有会话历史、没有随手贴文件做 RAG、没有多轮记忆、也没有给家里人开个只读账号这回事。Open WebUI 把这些全补齐了,而且:

  • 本地 RAG:直接往知识库里拖文档,支持 9 种向量库,BM25 + 向量混合检索;
  • 持久记忆:跨对话记住你的偏好;
  • 套娃成 Agent:给模型包一层指令、工具和知识,就能变成专属助手;
  • 细粒度权限:RBAC + 用户组,家里人共用一台 NAS 也不怕误删。

怎么接上我的 QWen36

装很简单。飞牛上我直接用 Docker:

docker run -d -p 3000:8080 
  -e OPENAI_API_KEY=sk-no-key-needed 
  -e OPENAI_API_BASE_URL=http://192.168.199.236:39625/v1 
  -v openwebui:/app/backend/data 
  --name openwebui --restart always 
  ghcr.io/open-webui/open-webui:main

关键就一行:把 OPENAI_API_BASE_URL 指到 NAS 上 llama-server 的 /v1。密钥栏 Open WebUI 不验真,随便填个占位串就行。启动后访问 3000 端口,新建一个模型,base url 填同一个,就能在浏览器里跟 QWen36 聊了。

如果本地还装了 Ollama,用官方那个捆绑镜像(:ollama 标签)能一套带走,但会顺带拉一份 Ollama 占 NAS 空间。我自己已经有 llama-server 了,就没必要。

v0.10.2 的两个小惊喜

前几天升到 v0.10.2(7 月 1 号发的),有两个点挺戳我:

  • 思考流式显示:像 QWen 这种会吐 reasoning 的模型,思考过程现在能边出边看,而不是等半天憋一大段;
  • 知识库文件夹上传:往知识库拖一整个文件夹,子目录结构会保留,不是全拍平成一堆散文件——对我这种按项目归档 PDF 的人很实用。

另外这版修了一堆升级时数据库迁移崩溃的坑,以及若干安全修复,生产环境建议跟。顺带一提,Open WebUI 生态里还有个 open-terminal / cptr,能在聊天里直接让 AI 写代码、跑命令、读输出再迭代,相当于把开发环境也搬进了对话框,有兴趣可以单独折腾。

有什么坑

  1. 许可证。它用的是自研的 Open WebUI License(基于 BSD-3-Clause,但要求保留 “Open WebUI” 品牌标识)。个人自托管完全没问题,但要是拿去改了壳对外提供服务,得留意品牌条款。
  2. 别裸端口暴露。3000 端口只在内网用,要出门访问就老老实实套一层反代加 HTTPS,或者直接走我之前部署的 Pangolin 之类的零信任网关。
  3. 存储。它本身不怎么吃资源,但历史会话和向量索引会涨,NAS 的存储要留余量,媒体文件别往里堆。
  4. 升级前备份 data 卷。虽然 v0.10.2 修了迁移崩溃,但任何大版本升级前先 docker volume 备份一下,省得哪天起不来。

说到底

14 万星的成熟度摆在那,装一次的成本就是一条 docker run。对我而言,它把“本地大模型”从一行 curl 变成了真正每天会打开用的东西——这才是本地 AI 该有的样子。

发表评论