Serv00搭建Gemini Balance教程

hhyyx1 发布于 2025-10-08 7 次阅读


开始

先在 Panel 开端口,新建 www website, 类型 Proxy 到刚开的端口。

使用

先 SSH 连接到 Serv00,拉取 gemini balance 仓库。

git clone <https://github.com/snailyp/gemini-balance.git>

接着进入 gemini balance 目录下

cd gemini-balance

然后创建虚拟环境来安装 py 依赖

python3 -m venv venv

source venv/bin/activate

pip install -r requirements.txt

还要在当前目录创建一个 .env,填入数据库信息

API_KEYS=["your-gemini-api-key-1","your-gemini-api-key-2"]

ALLOWED_TOKENS=["your-access-token-1","your-access-token-2"]

MYSQL_HOST=修改

MYSQL_PORT=修改

MYSQL_USER=修改

MYSQL_PASSWORD=修改

MYSQL_DATABASE=修改

TZ=Asia/Shanghai

此时已经能够正常启动 gemini balance,启动命令如下

uvicorn app.main:app --host 0.0.0.0 --port [你的端口号]

脚本

个人习惯使用 CF cron 保活,这里提供相关脚本。

注:以下脚本都要赋权,放在 gemini balance 目录下。

start.sh 用于启动服务

#!/bin/bash

# --- 请修改为你在 Serv00 面板获取的端口号 ---

PORT=[你的端口号]

# 项目的绝对路径

PROJECT_DIR="/usr/home/你的Serv00用户名/gemini-balance"

# 日志文件的路径

LOG_FILE="$PROJECT_DIR/run.log"

# 进入项目目录

cd $PROJECT_DIR

# 激活 Python 虚拟环境

source "$PROJECT_DIR/venv/bin/activate"

# 杀死可能已经存在的旧进程(可选,但推荐)

# 这可以防止在手动重启脚本时,因为端口被占用而失败

kill -9 $(lsof -t -i:$PORT) 2>/dev/null

# 启动 Uvicorn 服务,并将所有输出重定向到日志文件

# 'nohup' 和 '&' 让脚本在后台运行,即使您关闭了 SSH

nohup uvicorn app.main:app --host 0.0.0.0 --port $PORT >> $LOG_FILE 2>&1 &

echo "服务已在后台启动,端口号为 $PORT"

echo "日志将记录在 $LOG_FILE"

restart.sh 用于检查服务是否存活

#!/bin/sh

# 将xxx端口替换为你实际使用的端口

PORT=XXX

# Check if the port is in use

check_port() {

sockstat -4l | grep ":${PORT}" >/dev/null 2>&1

return $?

}

# Main logic

if check_port; then

echo "Port ${PORT} is already in use. Exiting."

exit 0

else

echo "Port ${PORT} is not in use. Starting service..."

nohup ./start.sh > "./startup.log" 2>&1 &

echo "Started service using start.sh"

fi

update.sh 用于更新服务

#!/bin/sh

# --- 请修改为您在 Serv00 面板获取的端口号 ---

PORT=[您的端口号]

# 项目的绝对路径

PROJECT_DIR="/usr/home/你的Serv00用户名/gemini-balance"

echo "=== 开始更新 Gemini Balance 项目 ==="

# 进入项目目录

cd $PROJECT_DIR || exit

# --- 1. 停止旧服务 ---

echo ""

echo "--- 步骤 1: 正在停止旧服务 ---"

PID=$(sockstat -4l | grep ":${PORT}" | awk '{print $3}')

if [ -n "$PID" ]; then

echo "找到旧进程 PID: ${PID},正在停止..."

kill -9 ${PID}

sleep 2

echo "旧进程已停止。"

else

echo "服务当前未运行,无需停止。"

fi

# --- 2. 更新代码和依赖 ---

echo ""

echo "--- 步骤 2: 更新代码与依赖 ---"

echo "正在从 Git 拉取最新代码..."

git pull

echo ""

echo "正在激活虚拟环境并更新依赖包..."

source "$PROJECT_DIR/venv/bin/activate"

pip install -r requirements.txt

deactivate

# --- 3. 启动新服务 ---

echo ""

echo "--- 步骤 3: 启动新版服务 ---"

# 使用后台方式运行 start.sh 脚本

nohup ./start.sh > "./update_startup.log" 2>&1 &

echo ""

echo "=== 更新脚本执行完毕 ==="

echo "服务已在后台尝试启动,请使用 'tail -f run.log' 查看实时日志。"