很多朋友想用 Gemini 的 API,但官方 API 要绑卡、免费版又限制多。今天教大家一个妙招:把 Google 免费的 Gemini CLI 封装成兼容 OpenAI 的 HTTP API,用 Docker 一键部署,5 分钟拥有自己的 AI 后端。测试使用还是可以的,正式使用的话还是建议付费使用官网的 API,稳定性和速度都有保障。
一、准备工作
你需要:
- 一台能上网的 Linux/macOS/Windows WSL 电脑
- 已安装 Docker 和 docker-compose
- 一个 Google 账号
二、获取 OAuth 凭证(最关键一步)
oauth_creds.json 是 Google 给你的"通行证",有以下两种方式获取:
(一) 本地安装一个 Gemini CLI,正常使用登录之后,就会生成 oauth_creds.json 文件
(二) 通过 Google Cloud Console
- 打开 Google Cloud Console,登录后点击新建项目(名字随意,如
gemini-cli) - 左侧菜单 → "API和服务" → "库" → 搜索Generative Language API → 启用它
- 回到左侧菜单 → "凭据" → "创建凭据" → "OAuth客户端ID"
- 如果提示"配置同意屏幕",选**"外部"** → 应用名称填
gemini-cli→ 用户支持邮箱选自己 → 保存 - 应用类型选"桌面应用" → 名字随意 → 创建
- 如果提示"配置同意屏幕",选**"外部"** → 应用名称填
- 创建完成后点击**"下载JSON"** → 文件名改成
oauth_creds.json→ 保存到准备运行Docker的目录里
文件最终样子:别改内容,直接放着就行
{
"installed": {
"client_id": "123456...apps.googleusercontent.com",
"project_id": "gemini-cli",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"client_secret": "GOCSPX-xxxxxxxx",
"redirect_uris": ["http://localhost"]
}
}
三、Docker 一键部署
在oauth_creds.json所在目录执行:
docker run -d --restart unless-stopped --name geminiapi \
-p 8899:7860 \
-v $PWD/oauth_creds.json:/app/oauth_creds.json \
-e GEMINI_AUTH_PASSWORD=你的自定义密码 \
-e GOOGLE_APPLICATION_CREDENTIALS=oauth_creds.json \
ghcr.io/gzzhongqi/geminicli2api:latest
四、首次授权(仅一次,如果是复制的本地登录的 json 文件则不需要授权)
- 看容器日志:
docker logs -f geminiapi
- 你会看到一个
https://accounts.google.com/...的长链接 → 复制到浏览器打开 - 登录Google账号 → 点击"允许"
- 浏览器会跳转到
localhost?code=...的空白页 → 复制完整地址,回到终端粘贴并回车 - 看到
token saved就成功了,Ctrl+C退出
以后重启容器不再需要授权。
五、验证服务
curl http://127.0.0.1:8899/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer 你的自定义密码" \
-d '{
"model": "gemini-2.5-pro",
"messages": [{"role": "user", "content": "hello"}],
"stream": false
}'
返回JSON就成功了!现在可以用OpenAI SDK、Cherry Studio、Lobechat等任何兼容OpenAI的工具连接http://127.0.0.1:8899。
六、模型与费用(重要)
免费通道(默认)
- 模型:Gemini 2.5 Pro(100万token上下文)
- 额度:每分钟60次,每天1000次
- 费用:完全免费,无需绑卡
- 限制:Google会用你的数据"改进产品",高峰期可能降速
付费通道(商用级)
在容器内创建config.toml文件,添加API Key:
api_key = "AIza..." # 在Google AI Studio申请
优点:无每日限制、更多模型(含多模态)、可商用
七、常见问题急救包
问题1:Connection reset by peer
症状:curl时连接被重置
原因:容器端口映射错误
解决:确认-p 8899:7860,内部端口必须是7860
问题2:容器秒退
排查命令:
docker logs geminiapi --tail 20
- 缺文件:日志显示
No such file... oauth_creds.json→ 检查文件路径 - 端口占用:日志显示
Address already in use→ 宿主机换个端口如-p 8898:7860
问题3:云服务器无法访问
排查:
# 获取容器IP
container_ip=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' geminiapi)
# 测试容器内部是否通
curl -H "Authorization: Bearer 你的密码" \
-d '{"model":"gemini-2.5-pro","messages":[{"role":"user","content":"hello"}]}' \
http://$container_ip:7860/v1/chat/completions
如果容器IP能通、公网IP不通 → 云防火墙/安全组没放行TCP 8899
一键体检脚本
#!/bin/bash
echo '--- 容器状态 ---'
docker ps -a | grep geminiapi
echo '--- 最近日志 ---'
docker logs geminiapi --tail 10 2>&1
echo '--- 宿主机端口 ---'
ss -tlnp | grep 8899 || netstat -tlnp | grep 8899
echo '--- 容器内端口 ---'
docker exec geminiapi sh -c 'cat /proc/net/tcp' | grep 7860
八、进阶:docker-compose管理
创建docker-compose.yml:
version: '3'
services:
geminiapi:
image: ghcr.io/gzzhongqi/geminicli2api:latest
container_name: geminiapi
restart: unless-stopped
ports:
- "8899:7860"
volumes:
- ./oauth_creds.json:/app/oauth_creds.json
- ./token.json:/app/token.json # 保留授权状态
environment:
GEMINI_AUTH_PASSWORD: "你的密码"
GOOGLE_APPLICATION_CREDENTIALS: "oauth_creds.json"
以后用docker-compose up -d启动,docker-compose down停止。
总结:这套方案的核心是把Google免费CLI包装成标准API,既省了API Key的费用,又能享受Gemini 2.5 Pro的强大能力。如果遇到问题,90%是端口7860没映射对,剩下10%看日志就能解决。祝大家部署顺利!
评论 0 条
暂无评论,来种下第一颗种子。