前言
近日有幸获得老马xAI提供的每月价值150美元的Grok API免费额度。面对这笔"技术福利",如何实现资源最大化利用成为我的核心诉求——既要避免任何资源浪费,又要构建可持续的调用方案。然而在实践过程中发现,传统API集成平台如Cherry Studio存在双重局限:虽然其多接口架构能有效简化跨厂商API调用流程,但平台本身存在显著的学习曲线(平均需要1-2天熟悉流程),且受限于桌面端操作场景的天然缺陷,无法满足移动时代的弹性需求。
经过技术方案的多维评估,最终选定开源项目 OpenWebUI + Searxng(提供在线搜索能力) + NewAPI(将各类服务厂商的API转为 OpenWebUI 支持的 OpenAI 格式,方便统一管理) 作为解决方案。OpenWebUI交互平台不仅完美适配移动端操作,其模块化设计更支持各类功能扩展。但值得关注的是,相较于常规轻量级应用,该平台对服务器内存有较高要求(建议配置≥4GB),恰好与我去年购置的荷兰机房4核8G配置VPS形成资源互补——该服务器长期处于低负载状态(平均内存利用率<25%),此次部署既能激活闲置计算资源,又能构建完整的移动端API管理方案。

搭建建议
本文不提供面向小白的保姆级教程,仅仅分享一些可能遇到的常见问题和建议。
OpenWebUI
1panel 容器间互联 Tips
如果使用 1panel 面板做 Docker 管理的话,建议优化下 OpenWebUI 和 Searxng,NewAPI 之前的网络连接。即每个 Docker 都设置为 "1panel-network" 后 OpenWebUI 使用 "http://容器名称:容器映射端口" 进行容器间的直接通信,如下示例:
http://new-api:1234
ShellScriptNginx 反代问题
Run Docker 时可以指定跑在 127.0.0.1:端口 上,反向代理其即可,默认的运行命令是完全暴露 IP 端口到公网,存在安全风险,容易被扫端口偷跑
docker run -d -p 127.0.0.1:1234:8080 ...
ShellScript当然你也可以映射到 VPS 的 IP 上并通过 ufw 开放部分 IP ,直连测试或者绕过所配置的 CDN
docker run -d -p 你的VPS的IP:1234:8080
ShellScriptSearxng
配置上应该没什么问题,可以修改配置文件 settings.yml 开放更多的搜索引擎,例如 Reddit,bilibili,hackernews等
- name: hackernews
engine: hackernews
shortcut: hn
disabled: false
YAMLNewAPI
最新版本需要切换下自用模式,不然每个模型都手动定价太累了

OpenWebUI使用心得
文档检索方式建议
做 RAG 任务时,当 TextEmbedding 模型效果不太好,检索不仅慢而且答案还不正确。建议是Token不吃紧或者模型支持的上下文足够长的情况下绕过嵌入和检索,实测这样的效果好很多。

联网搜索建议
使用自建搜索引擎 searxng 的情况下,建议搜索结果数量设为 5,如此以来总索引将会扩展到 15 个网页,回答速度快且正确的同时不会因为上下文过长导致模型的输出混乱(唯一缺点是 Token 花费如河堤决堤一样快)

善用 OpenWebUI Functions
若想使用一些不知名的服务商接口,new-api 也没适配,可以让 AI 根据调用文档写一个兼容OpenAI格式的 Function,例如早期不支持 Deepseek 不支持 OpenAI 输出格式时的调用(感想是外国开发者实在傲慢,之前这么多人在 OpenWebUI 提 issue 要求支持 Deepseek R1 的 think 输出格式官方就是不理,等到 sonnet 3.7也有 think 了才支持😒)
