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 绑定
- 登录 Cloudflare Dashboard → Workers & Pages → 选中
geminiWorker - 侧边栏 Settings → Triggers → Custom Domains → Add Custom Domain
- 输入子域名,如
gemini.andyvictory.dpdns.org→ Add Domain - 等待证书签发(通常秒级),状态变为 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 或文档放入:
点击后引导 fork → 绑定账号 → 设置 GEMINI_API_KEY Secret → 自动部署。
16. 许可证
MIT License — 详见 LICENSE。
Enjoy! 🎉 现在拥有一个免费、自托管、OpenAI 兼容的 Gemini 代理,随时随地写代码。
阅读 —
·
全站 —