10小时前
|
|
|
很多朋友想用 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
1. 打开 [Google Cloud Console](https://console.cloud.google.com/),登录后点击**新建项目**(名字随意,如`gemini-cli`)
2. 左侧菜单 → **"API和服务" → "库"** → 搜索**Generative Language API** → 启用它
3. 回到左侧菜单 → **"凭据" → "创建凭据" → "OAuth客户端ID"**
- 如果提示"配置同意屏幕",选**"外部"** → 应用名称填`gemini-cli` → 用户支持邮箱选自己 → 保存
- **应用类型选"桌面应用"** → 名字随意 → 创建
4. 创建完成后点击**"下载JSON"** → 文件名改成`oauth_creds.json` → 保存到准备运行Docker的目录里
**文件最终样子**:别改内容,直接放着就行
```json
{
"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`所在目录执行:
```bash
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 文件则不需要授权)
1. 看容器日志:
```bash
docker logs -f geminiapi
```
2. 你会看到一个`https://accounts.google.com/...`的长链接 → **复制到浏览器打开**
3. 登录Google账号 → 点击"允许"
4. 浏览器会跳转到`localhost?code=...`的空白页 → **复制完整地址**,回到终端**粘贴并回车**
5. 看到`token saved`就成功了,Ctrl+C退出
以后重启容器不再需要授权。
## 五、验证服务
```bash
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:
```toml
api_key = "AIza..." # 在Google AI Studio申请
```
**优点**:无每日限制、更多模型(含多模态)、可商用
## 七、常见问题急救包
### 问题1:`Connection reset by peer`
**症状**:curl时连接被重置
**原因**:容器端口映射错误
**解决**:确认`-p 8899:7860`,内部端口必须是7860
### 问题2:容器秒退
**排查命令**:
```bash
docker logs geminiapi --tail 20
```
- **缺文件**:日志显示`No such file... oauth_creds.json` → 检查文件路径
- **端口占用**:日志显示`Address already in use` → 宿主机换个端口如`-p 8898:7860`
### 问题3:云服务器无法访问
**排查**:
```bash
# 获取容器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**
### 一键体检脚本
```bash
#!/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`:
```yaml
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%看日志就能解决。祝大家部署顺利!
🫵 来啊,说点有用的废话!
▲