#!/bin/bash # 设置端口 (HF 必须监听 7860) export PORT=7860 DB_PATH="/data/one-api.db" echo "=== 启动环境检查 ===" # 1. 检查并下载数据库 if [ -n "$DATASET_REPO" ] && [ -n "$HF_TOKEN" ]; then echo "正在从 Dataset: $DATASET_REPO 下载数据库..." python3 -c " import os from huggingface_hub import hf_hub_download try: hf_hub_download( repo_id=os.environ['DATASET_REPO'], filename='one-api.db', local_dir='/data', repo_type='dataset', token=os.environ['HF_TOKEN'] ) print('数据库下载成功') except Exception as e: print(f'提示:暂无历史数据库备份,将初始化新数据库。') " else echo "警告:未设置 DATASET_REPO 或 HF_TOKEN,数据将无法持久化!" fi # 2. 自动查找可执行文件 # 尝试查找名为 new-api 或 one-api 的程序 TARGET_BIN=$(which new-api || which one-api || find / -name "new-api" -executable -type f 2>/dev/null | head -n 1 || find / -name "one-api" -executable -type f 2>/dev/null | head -n 1) if [ -z "$TARGET_BIN" ]; then echo "错误:找不到可执行程序 (new-api 或 one-api)!" exit 1 fi echo "找到程序路径: $TARGET_BIN" # 3. 定义上传备份函数 upload_db() { if [ -f "$DB_PATH" ]; then echo "正在备份数据库到 HF Dataset..." python3 -c " import os from huggingface_hub import HfApi api = HfApi() try: api.upload_file( path_or_fileobj='$DB_PATH', path_in_repo='one-api.db', repo_id=os.environ['DATASET_REPO'], repo_type='dataset', token=os.environ['HF_TOKEN'] ) print('备份成功') except Exception as e: print(f'备份失败: {e}') " fi } # 4. 后台定时同步 (每 15 分钟) ( while true; do sleep 900 upload_db done ) & # 5. 捕捉退出信号 trap upload_db EXIT # 6. 运行主程序 echo "=== 正在启动 New-API ===" exec $TARGET_BIN