OpenAI-Gemini 代理部署到 Cloudflare Workers 教程

OpenAI-Gemini 代理部署到 Cloudflare Workers 教程

本教程记录从零开始,将 openai-gemini 代理部署到 Cloudflare Workers,并绑定自定义域名、内置 API Key 的完整流程。


1. 前置准备

项目 说明
GitHub 账号 用于 fork 仓库、CI/CD
Cloudflare 账号 已登录 wrangler(见下)
Gemini API Key 从 Google AI Studio 获取
域名(可选) 已托管到 Cloudflare 的域名,用于绑定自定义子域名

2. 克隆/拉取项目

git clone https://github.com/PublicAffairs/openai-gemini.git cd openai-gemini

已有本地副本可直接 cd 进目录。


3. 安装依赖(仅本地开发需要)

npm install

仅用于 npm run dev 本地调试,部署不需要 node_modules。


4. 登录 Wrangler

wrangler login # 或 npx wrangler login

浏览器授权后,终端显示账号信息即成功。

wrangler whoami # 应显示你的邮箱、Account ID、Workers 写权限

5. 修改代码:支持内置 API Key(可选但推荐)

默认代理要求每次请求带 Authorization: Bearer <Key>。
改造后:Worker 读取环境变量 GEMINI_API_KEY,调用方无需再传 Key。

编辑 src/worker.mjs,找到 fetch(request) 签名,改为 fetch(request, env),并取 key:

-export default { - async fetch (request) { +export default { + async fetch (request, env) { // ... - const auth = request.headers.get("Authorization"); - const apiKey = auth?.split(" ")[1]; + const auth = request.headers.get("Authorization"); + const headerKey = auth?.split(" ")[1]; + const apiKey = headerKey || env.GEMINI_API_KEY;

已在本项目完成,若重新克隆请自行应用此改动。


6. 写入 Gemini API Key 为 Worker Secret

# 交互式输入(推荐,不留痕) wrangler secret put GEMINI_API_KEY # 提示时粘贴你的 Key(如 AQ.Ab8RN6KBZeJ_z86KynYTVBtcxESbWLatZtdzF2Om4K-6rV34Mg) # 或管道传入(CI 适用) echo "你的Key" | wrangler secret put GEMINI_API_KEY

验证:

wrangler secret list # 应显示 GEMINI_API_KEY

7. 部署到 Cloudflare Workers

wrangler deploy

输出示例:

Deployed gemini triggers (1.46 sec) https://gemini.<你的-subdomain>.workers.dev Current Version ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

记下 https://gemini.xxx.workers.dev,即为代理基础地址。


8. (可选)绑定自定义域名

前提:域名已在 Cloudflare 托管(NS 指向 Cloudflare)。

8.1 在 Dashboard 绑定

  1. 登录 Cloudflare Dashboard → Workers & Pages → 选中 gemini Worker
  2. 侧边栏 Settings → Triggers → Custom Domains → Add Custom Domain
  3. 输入子域名,如 gemini.andyvictory.dpdns.org → Add Domain
  4. 等待证书签发(通常秒级),状态变为 Active

8.2 或用 Wrangler 绑定(需 wrangler.toml 增加 routes)

# wrangler.toml 追加 [[routes]] pattern = "gemini.andyvictory.dpdns.org/*" zone_name = "andyvictory.dpdns.org"

然后 wrangler deploy。

本项目采用 Dashboard 方式,无需改配置。


9. 验证部署

9.1 测试默认模型

curl -X POST https://gemini.andyvictory.dpdns.org/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{"model":"gemini-2.5-flash","messages":[{"role":"user","content":"hi"}]}'

预期返回 OpenAI 格式 JSON,含 choices[0].message.content。

9.2 测试模型列表

curl https://gemini.andyvictory.dpdns.org/v1/models | jq '.data[].id'

9.3 测试联网搜索

curl -X POST https://gemini.andyvictory.dpdns.org/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{"model":"gemini-2.5-flash:search","messages":[{"role":"user","content":"今天新闻"}]}'

10. 客户端配置(Cursor / Continue / Cline / 代码助手等)

字段 值
OpenAI Base URL https://gemini.andyvictory.dpdns.org/v1
API Key 留空 / 任意字符(已内置)
Model gemini-2.5-flash(日常)或 gemini-2.5-pro(深度推理)

示例(Cursor ~/.cursor/mcp.json 或设置页):

{ "openaiBaseUrl": "https://gemini.andyvictory.dpdns.org/v1", "model": "gemini-2.5-flash" }

11. 常用模型速查

场景 模型名 免费额度(约)
日常写代码、改 bug gemini-2.5-flash 1500 req/天,30 req/分
疑难重构、架构设计 gemini-2.5-pro 50 req/天,5 req/分
需要联网查文档/报错 gemini-2.5-flash:search 同 flash
极速补全、轻量对话 gemini-3.5-flash-lite 更高额度
Embedding gemini-embedding-001 / gemini-embedding-2 同闪光

实时列表:GET /v1/models


12. 常见问题

现象 原因 解决
返回 503 “high demand” Gemini 官方限流 换模型(如 flash-lite)或稍后重试
返回 404 “model not available” 模型名过时/下线 用 /v1/models 查最新可用名
自定义域名 522/1016 DNS 未生成/证书未签发 等待 1-2 分钟,或在 Dashboard 检查 Custom Domain 状态
本地 npm run dev 报错 未装依赖 npm install
想换 Key Secret 覆盖 wrangler secret put GEMINI_API_KEY 再输新 Key

13. 更新/回滚

# 重新部署(改代码后) wrangler deploy # 查看版本 wrangler versions list # 回滚上一版 wrangler rollback # 回滚指定版本 wrangler rollback <VERSION_ID>

14. 目录结构速览

openai-gemini/ ├── src/worker.mjs # 核心 Worker 入口(已改造支持 env.GEMINI_API_KEY) ├── node.mjs # Node 适配器(本地 npm run dev) ├── deno.mjs / bun.mjs # Deno/Bun 适配器 ├── wrangler.toml # Workers 配置(name, main, compatibility_flags) ├── vercel.json # Vercel 部署配置 ├── netlify.toml # Netlify 部署配置 ├── package.json # 脚本:dev/start/dev:deno/dev:bun └── README.md # 官方文档

15. 一键部署按钮(给他人用)

在 README 或文档放入:

Deploy to Cloudflare Workers

点击后引导 fork → 绑定账号 → 设置 GEMINI_API_KEY Secret → 自动部署。


16. 许可证

MIT License — 详见 LICENSE。


Enjoy! 🎉 现在拥有一个免费、自托管、OpenAI 兼容的 Gemini 代理,随时随地写代码。

阅读 — · 全站 —
🎸 我的歌单 0 首