大数跨境

把 OpenAI/Claude/Gemini 装进一个网关:x-gproxy 4.2.3 一键安装

把 OpenAI/Claude/Gemini 装进一个网关:x-gproxy 4.2.3 一键安装 AI软件测评说
2026-11-12
4
导读:1Panel 第三方应用商店新增可一键安装应用 x-gproxy 4.2.3:自托管 LLM 网关,OpenAI/Claude/Gemini 统一成一个地址一把 key,上游密钥不出服务器。
开源一周
1PANEL_APP / 新应用速览 · 2026-11-11
以下为正文
手里同时有 OpenAI、Claude、Gemini 好几家 API 的朋友,多半烦过同一件事:每个工具都要配一遍地址和密钥,换来换去。2026-11-10,skingko 的 1Panel 第三方应用商店 1panel_app 新增了一个一键安装应用:x-gproxy 4.2.3(commit 7b3d181),专门治这个。
它是开源项目 GProxy 的 1Panel 打包:一个用 Rust 写的自托管 LLM API 网关。装完之后,所有的大模型调用走同一个地址、同一把 key,管理台里能看到每一次请求花了多少 token、多少钱。
先看痛点 每个工具配一遍,换到心烦 IDE 插件 sk-…7F2A → OpenAI Chat 客户端 sk-ant-…C19 → Claude 脚本 A AIza…e40 → Gemini 脚本 B 又是 sk-…7F2A 新工具 全部再配一遍? 5 个工具 × 3 家 API = 15 处配置 x-gproxy 网关 http://你的主机:13878/v1 一把网关 key(gproxy-…) OpenAI / Claude / Gemini 都从这走 密钥不出门 用量记账 挂了自动换 免数据库 15 处配置 → 1 处
上游项目 LeenHawk/gproxy,AGPL-3.0 协议,目前 280 stars(截至 11-11,只当需求信号看)。这篇文章讲清楚三件事:它是什么、在 1Panel 里怎么装怎么用、这次 4.2.3 更新了什么。
一、它是什么:把好几家 LLM 装进一个网关
一句话:你把上游账号(API key、OAuth 登录,甚至浏览器 cookie)都注册在网关里,客户端只拿一个 base URL、一把网关 key、一个你自己起名的模型名。
每个请求进来,它做四件事:判断这个模型名该由哪家供应商、哪条凭据来服务;客户端和上游格式不一样时,在 OpenAI、Claude、Gemini 三种格式之间自动转换;检查调用者的权限、限速和预算;最后把 token 数和费用记下来。哪家凭据挂了或者被限流,自动换下一条重试。
网关每一步做什么 点一下,多亮一步 客户端请求进来后 POST /v1/chat/completions  model=fast 客户端 第 1 步 · 认路由 model=fast 对应哪家供应商、哪条凭据,网关自己查 第 2 步 · 转格式 OpenAI ⇄ Claude ⇄ Gemini 三种格式自动互转,客户端不用改 第 3 步 · 查权限 这个 key 有没有权限调它?限速到没到?预算够不够? 第 4 步 · 记 账 token 数、费用落库,管理台里每一笔可查 第 5 步 · 故障转移 凭据挂了/被限流,自动换下一条重试,客户端无感 五步都在一个 Docker 里:x-gproxy 4.2.3 网关每一步做什么 点一下,多亮一步 客户端请求进来后 POST /v1/chat/completions  model=fast 客户端 第 1 步 · 认路由 model=fast 对应哪家供应商、哪条凭据,网关自己查 第 2 步 · 转格式 点一下,看这一步 第 3 步 · 查权限 点一下,看这一步 第 4 步 · 记 账 点一下,看这一步 第 5 步 · 故障转移 点一下,看这一步 点一下,五步全亮(1/5)
翻译成人话:以前是「每个工具配每家的 key」,现在变成「所有工具配网关的 key」。上游的 key,一个都不出你的服务器。
官方文档有个例子写得明白。假设你建了一个叫 fast 的模型路由,指向某家 OpenAI 凭据:
curl http://127.0.0.1:8787/v1/chat/completions \   -H "Authorization: Bearer $GPROXY_KEY" \   -d '{"model":"fast","messages":[{"role":"user","content":"Hello"]}'
客户端永远见不到 OpenAI 的 key。以后想把 fast 背后的模型换掉、或者再挂一家供应商做分流,客户端一行代码都不用改。同一个 fast,还能用 Claude 格式、Gemini 格式调——你手里的 Claude 客户端、Gemini 脚本都能直接接。
同一个路由 · 三种调法 fast 不变,格式随便挑 模型路由 fast → 上游凭据池(可多家) 管理台里建 ① OPENAI 格式 POST /v1/chat/completions ② CLAUDE 格式 POST /v1/messages ③ GEMINI 格式 POST /v1beta/models/fast:generateContent 三种格式,同一个 fast,同一把网关 key 同一个路由 · 三种调法 fast 不变,格式随便挑 模型路由 fast → 上游凭据池(可多家) 管理台里建 ① OPENAI 格式 POST /v1/chat/completions model=fast + 你的网关 key OpenAI SDK 把 base_url 换成网关就能用 点一下,三种调法一起看 →
边界也说清楚:GProxy 不跑模型,推理都在上游;它也不能无中生有——把请求转成另一种格式,不会给模型带来它本来没有的工具调用或图像输入。
二、怎么装:表单一次,浏览器进管理台
前提是你的 1Panel 已经导入了 skingko 的第三方应用商店(仓库 README 有两条命令,git 或 zip 挑一条,脚本开头 PANEL_BASE_DIR 改成你的实际安装根目录)。之后应用商店刷新本地应用,找到 x-gproxy,点安装。
安装表单就两个关键参数:端口(默认 13878,映射容器 8787,想改就改)和主密钥——表单预置了 44 位 base64 示例值,它用来加密你存在网关里的上游凭据;生产环境建议换成 openssl rand -base64 32 的输出,然后设置后不要再动:丢了它,已存的凭据就解不开了。
安装就两个参数 装完去日志里捞一次密码 ① 表单两参数 → ② 日志捞密码 → ③ 管理台配置 1Panel 应用商店 · x-gproxy 端口:默认 13878 → 容器 8787 主密钥:openssl rand -base64 32 换成自己的 docker logs 容器名 | grep -A2 user 首次启动打印一次 admin 初始密码 和网关 API Key——只打印这一次,抄下来 浏览器开 http://主机:13878/console/ 加上游凭据 → 建模型路由 → 客户端改地址 任何兼容 OpenAI SDK 的工具直接接 主密钥设置后别再动:它加密所有上游凭据 安装就两个参数 装完去日志里捞一次密码 ① 表单两参数 → ② 日志捞密码 → ③ 管理台配置 1Panel 应用商店 · x-gproxy 端口:默认 13878 → 容器 8787 主密钥:openssl rand -base64 32 换成自己的 点一下,三步全亮(1/3)
数据都在容器卷里(SQLite 和配置),升级应用不丢。它不需要你装 MySQL、PostgreSQL 任何外部数据库——这是它跟不少同类网关比最省事的一点。
三、4.2.3 更新了什么:Claude Code 额度重置修好了
先说 1panel_app 侧:x-gproxy 之前提供 4.1.7 和 4.1.8,这次新增 4.2.3,编排文件里跟旧版的差异只有一行——镜像号从 v4.1.8 换成 v4.2.3。commit 信息写明「上游 11-10 发布、无破坏性变更、注入校验通过」。已装旧版的用户,在 1Panel 面板里点「升级」就行。
再说上游 v4.2.3 修了什么(11-10 由 GitHub Actions 发布,79 个安装包资产):
上游 v4.2.3 · 11-10 发布 这次修了什么 1panel_app 侧只换了一行镜像号,无破坏性变更 Claude Code 额度重置修复 控制台按上游口径显示 5 小时 / 每周 / 完整 / Fable 四种窗口;退款只刷新用量,不再误关周期 Antigravity 渠道跟进 CLI 1.5.4 / hub 2.30.0;TLS 预置 h2 与 http1 保持一致 MSIX 恢复每日同步 每天向微软商店同步签名安装包 README 重写 + 依赖刷新 介绍与功能部分重写;控制台 / Rust / CI 依赖刷新 已装旧版:1Panel 面板点「升级」即可
对 Claude Code 用户最实在的是第一条:以前控制台里的额度重置选项说得含糊,这次重置选项带上标题、说明和影响的额度窗口,按上游口径显示 5 小时、每周、完整、Fable 四种重置;退款这类「只刷新用量」的操作,也不会再把所有额度周期误关掉。
很多人最担心的一件事 key 都放在网关里,安全吗 上游凭据:只存在你服务器的数据目录 ① 客户端只见网关 key,永远见不到上游 key ② 主密钥加密存储,丢了=凭据解不开 ③ 端口别裸暴露公网,要露就套反代鉴权 三道闸都在本地,不出你的服务器 「上游的 key 一个都不出门」 靠什么保证? 点一下,揭开这层蜡 →
四、它解决的是哪些痛点
好几家 API 换着用,配置散落各处:所有客户端只认一个地址一把 key,换供应商是网关里的事。
上游 key 不敢到处放:key 全部留在服务器上的网关里,客户端只见网关 key。
用量和花费是笔糊涂账:每个请求的 token 和费用都记账,管理台可查。
某家上游挂了全线报错:凭据健康检查加故障转移,自动换下一条。
想自托管又怕运维重:内嵌 SQLite,1Panel 里一次表单装完。
Claude Code 额度窗口看不懂:4.2.3 把重置选项按上游口径显示全了。
五、泼几瓢冷水
第一瓢,本文没有实测。装好之后的管理台操作流、故障转移的实际表现,我没有在 1Panel 环境里跑过,以上功能描述全部来自仓库文件、上游 Releases 和官方文档。「注入校验通过」是打包者 commit 里的自述。
第二瓢,主密钥这件事必须当真:它加密你所有的上游凭据,设置后不能改、不能丢;丢了就是全部重来。数据卷要备份就连它一起。
第三瓢,别把 13878 裸暴露到公网。管理台和 API 在同一个端口,最稳的做法还是内网使用,或前面套反代加鉴权。
第四瓢,AGPL-3.0-or-later 协议(库是 MIT),拿去商用前看一眼协议。
还有一个操作坑提前说:管理台里有个「系统更新」页面,容器部署下它必然报 Permission denied——镜像是 distroless、进程非 root、二进制只读,这不是故障。升级永远走 1Panel 面板的「升级」按钮。
六、想上手的,三步
一,GitHub 搜 skingko/1panel_app,README 里两条导入命令挑一条(记得改 PANEL_BASE_DIR);二,应用商店装 x-gproxy,端口默认 13878,主密钥换成自己的然后保存好;三,docker logs 拿初始密码进 /console/,加凭据、建路由,客户端改成网关地址就能用。
上游项目 LeenHawk/gproxy,官方文档 gproxy.leenhawk.com;1panel_app 只做 1Panel 打包适配,软件本体与镜像版权归上游。
仓库地址(GitHub 搜索即可):skingko/1panel_app · 应用在 apps/x-gproxy/
上游:LeenHawk/gproxy · 文档 gproxy.leenhawk.com · 镜像 ghcr.io/leenhawk/gproxy
本文事实来自仓库 git 记录、上游 Releases 与官方文档,未实测运行;stars 数为 2026-11-11 快照。

本文由 AI 辅助生成并经人工审核发布。

【声明】内容源于网络
0
0
AI软件测评说
专注分享Vibe Coding、独立开发Ai 工具和创业灵感
内容 401
粉丝 0
AI软件测评说 专注分享Vibe Coding、独立开发Ai 工具和创业灵感
总阅读11.1k
粉丝0
内容401