Gemini Balance 本地 Docker 服务器部署教程(使用 Cloudflare Tunnel)

由于 ClawCloud 经常抽风,如果你有一台可以一直开着的电脑,或者家用的支持 Docker 的轻量服务器,其实可以试试这个。

但是这个方案其实不太推荐,太复杂、缺点太多、一直开着电脑电费还贵。而且必须要有代理节点,并且要十分稳定,还需要国外信用卡,还需要域名!!所以如果不方便可以使用 IPv6 公网地址方案,而且使用 IPv6 是简单得多。当然 Render+保活是最简单、稳定、便宜的方案,按需选取吧。

原理、目录

材料:国外信用卡(可以闲鱼或者淘宝,或者银行办一个)、稳定的代理节点、一个域名

  1. 原理是把自己的电脑当做服务器,用内网穿透、iPv6 等技术把服务挂在公网上,但是需要电脑一直开着。
    1. 本文使用安全、方便、快捷的 Cloudflare Tunnel 把服务挂在公网上。其他方案:IPv6 关闭防火墙后不安全,IPv4 公网 IP 不好获取,同样有安全问题。(一般服务使用的是 HTTP,不安全。如果需要 HTTPS 需要反向代理,非常麻烦)
    2. Cloudflare Tunnel 需要一个域名,并解析到 cloudflare 中,还需要国外的信用卡,可以淘或者鱼一个虚拟的

步骤简述

  1. 准备好信用卡和域名后,先去 Cloudflare 中的 ZeroTrust 白嫖 Tunnel 隧道,拿到 Token(自行搜索相关教程,非常简单)
  2. 先用 docker 配置好 gemini-balance,因为要挂到公网,所以需要在 compose 中额外配置一个 cloudflare 隧道的 docker 配置,配置好 token
  3. 启动服务后在 localhost:8000 登录页面,配置好 AI Studio 申请的免费 API
  4. 要给 gemini-balance 服务挂好系统代理,才能向谷歌发送请求

详细教程

  1. 首先安装 MySQL 并确保服务运行在 localhost: 3306 上。此步骤省略,自行搜索相关教程。
  2. 克隆项目仓库
1
2
git clone https://github.com/snailyp/gemini-balance.git
cd gemini-balance
  1. 构建 Docker 镜像
1
docker build -t gemini-balance
  1. 修改 .env.example 文件名为 .env 。修改文件,确保包含以下内容:
1
2
3
4
5
6
7
8
9
MYSQL_HOST=mysql    # 这里不要改,这是容器名称,不要填 localhost 什么的
MYSQL_PORT=3306
MYSQL_USER=gemini # 这里是新建用户,可以自己取一个名字
MYSQL_PASSWORD=your_db_password # 这里是新建用户,可以自己弄一个密码
MYSQL_DATABASE=gemini-balance # 这里是 Schema,可以自己取名字
API_KEYS=["your-gemini-api-key-1", "your-gemini-api-key-2"] # 这里可以保持不变,部署好了再去搞
ALLOWED_TOKENS=["sk-123456"] # 这默认是登录用的密码,先不用改
AUTH_TOKEN=sk-123456 # 这默认是登录用的密码,先不用改
……剩下的不用改,不解释
  1. docker-compose.yml 下方添加 Cloudflare 的 Tunnel 服务,并修改数据库代码,完整文件内容,注意看注释标识部分,需要修改:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
volumes:
mysql_data:
services:
gemini-balance:
image: ghcr.io/snailyp/gemini-balance:latest
container_name: gemini-balance
restart: unless-stopped
ports:
- "8000:8000"
env_file:
- .env
depends_on:
mysql:
condition: service_healthy
healthcheck:
test: ["CMD-SHELL", "python -c \"import requests; exit(0) if requests.get('http://localhost:8000/health').status_code == 200 else exit(1)\""]
interval: 30s
timeout: 5s
retries: 3
start_period: 10s
mysql:
image: mysql:8
container_name: gemini-balance-mysql
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: root_password # 重要:这里改成MySQL的root账号的密码
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
# ports:
# - "3306:3306"
volumes:
- mysql_data:/var/lib/mysql
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1"]
interval: 10s # 每隔10秒检查一次
timeout: 5s # 每次检查的超时时间为5秒
retries: 3 # 重试3次失败后标记为 unhealthy
start_period: 30s # 容器启动后等待30秒再开始第一次健康检查
# 下面是新增内容,注意开头的空格数量要正确
cloudflared:
image: cloudflare/cloudflared:latest
restart: unless-stopped
command: tunnel --no-autoupdate run --token eyxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxSJ9 # 重要:此处改成你的Token
depends_on:
- gemini-balance # 确保先启动gemini-balance再启动tunnel
  1. 启动容器(因为这是复合的项目,包含多个容器,所以使用 docker-compose
1
docker-compose up -d
  1. 在 Cloudflare 中,设置域名,比如可以设置成 api.xxxxxx.com,然后配置端口,协议选择 HTTP,域名填写gemini-balance:8000。因为它们在同一个容器组里面,可以用容器名称彼此访问。现在你可以在公网访问 api.xxxxxx.com ,等效于访问 localhost:8000
  2. 访问 localhost: 8000 或者你的域名,登录,默认密码是 sk-123456
    1. 在 API 秘钥列表中更改、添加你的 AI Studio API Key。
    2. 下方的允许的令牌列表,点击右方🎲随机一个并记下来,这就是那个对外的 API Key
    3. 下方的认证令牌相当于“登录密码”,默认密码是 sk-123456,更改成你想要的
    4. 修改完任何配置记得滑到最底下点击保存配置,否则不会生效
  3. 使用 AI as Workspace 或者 Cherry Studio 等任何 API 使用平台。API 类型选择 OpenAI 或者 OpenAI(兼容),URL 填写 https:// + 你在 cloudflare 配置的域名 + /v1 比如:https://api.xxxxx.com/v1。API Key 填写上面记下的“允许的令牌列表”中的一个。
  4. 结束。

Gemini Balance 本地 Docker 服务器部署教程(使用 Cloudflare Tunnel)
https://idontwannago.cn/posts/32135/
作者
idontwannagoo
发布于
2025年7月23日
许可协议