#!/bin/bash # Sub2API 完整部署脚本 - 双 Git Remote 配置 # 官方仓库: https://github.com/Wei-Shaw/sub2api.git # 你的仓库: https://git.586vip.cn/oadmin/sub2api.git set -e echo "==========================================" echo " Sub2API 二次开发环境部署" echo " 端口: 2080" echo " 双 Remote Git 配置" echo "==========================================" echo "" # 检查是否已经存在项目目录 if [ -d "/opt/sub2api-dev" ]; then echo "⚠️ 目录 /opt/sub2api-dev 已存在" read -p "是否删除并重新部署?(y/N): " confirm if [[ $confirm == [yY] ]]; then rm -rf /opt/sub2api-dev else echo "❌ 取消部署" exit 1 fi fi cd /opt # =================================== # 1. 克隆官方仓库 # =================================== echo "📥 克隆官方仓库..." git clone https://github.com/Wei-Shaw/sub2api.git sub2api-dev cd sub2api-dev echo "✅ 官方仓库克隆完成" echo "" # =================================== # 2. 配置双 Remote # =================================== echo "🔧 配置 Git Remote..." # 将 origin 改名为 upstream(官方仓库) git remote rename origin upstream # 添加你的仓库为 origin git remote add origin https://git.586vip.cn/oadmin/sub2api.git # 显示配置结果 echo "✅ Git Remote 配置完成:" git remote -v echo "" # =================================== # 3. 创建并切换到 main 分支 # =================================== echo "🌿 创建 main 分支..." git checkout -b main echo "✅ 当前分支: $(git branch --show-current)" echo "" # =================================== # 4. 首次推送到你的仓库 # =================================== echo "📤 推送到你的仓库..." git push -u origin main echo "✅ 代码已推送到: https://git.586vip.cn/oadmin/sub2api.git" echo "" # =================================== # 5. 配置部署文件 # =================================== echo "📝 配置部署文件..." cd deploy # 创建生产环境 docker-compose 配置 cat > docker-compose.prod.yml << 'EOF' services: sub2api: image: weishaw/sub2api:latest container_name: sub2api restart: unless-stopped ports: - "2080:8080" volumes: - ./data:/app/data environment: - AUTO_SETUP=true - SERVER_HOST=0.0.0.0 - SERVER_PORT=8080 - SERVER_MODE=release - DATABASE_HOST=postgres - DATABASE_PORT=5432 - DATABASE_USER=sub2api - DATABASE_PASSWORD=${POSTGRES_PASSWORD} - DATABASE_DBNAME=sub2api - DATABASE_SSLMODE=disable - REDIS_HOST=host.docker.internal - REDIS_PORT=6379 - REDIS_PASSWORD=redis_bJFKDk - REDIS_DB=1 - ADMIN_EMAIL=${ADMIN_EMAIL} - ADMIN_PASSWORD=${ADMIN_PASSWORD} - JWT_SECRET=${JWT_SECRET} - TZ=Asia/Shanghai depends_on: - postgres extra_hosts: - "host.docker.internal:host-gateway" postgres: image: postgres:18-alpine container_name: sub2api-postgres restart: unless-stopped volumes: - postgres_data:/var/lib/postgresql/data environment: - POSTGRES_USER=sub2api - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} - POSTGRES_DB=sub2api - TZ=Asia/Shanghai healthcheck: test: ["CMD-SHELL", "pg_isready -U sub2api"] interval: 10s timeout: 5s retries: 5 volumes: postgres_data: EOF echo "✅ docker-compose.prod.yml 已创建" # 创建 .env 文件 if [ ! -f ".env" ]; then echo "🔐 生成配置文件..." POSTGRES_PASS=$(openssl rand -base64 24) JWT_KEY=$(openssl rand -hex 32) cat > .env << EOF # PostgreSQL 配置 POSTGRES_USER=sub2api POSTGRES_PASSWORD=${POSTGRES_PASS} POSTGRES_DB=sub2api # 管理员账号 ADMIN_EMAIL=admin@example.com ADMIN_PASSWORD=admin123 # JWT 配置 JWT_SECRET=${JWT_KEY} JWT_EXPIRE_HOUR=24 # 其他配置 TZ=Asia/Shanghai SERVER_MODE=release RUN_MODE=standard EOF echo "✅ .env 文件已创建" echo "" echo "🔑 生成的密钥(请保存):" echo " PostgreSQL 密码: ${POSTGRES_PASS}" echo " JWT Secret: ${JWT_KEY}" echo "" fi # =================================== # 6. 启动 Docker 服务 # =================================== echo "🐳 拉取 Docker 镜像..." docker-compose -f docker-compose.prod.yml pull echo "" echo "🚀 启动服务..." docker-compose -f docker-compose.prod.yml up -d echo "" echo "⏳ 等待服务启动..." sleep 15 # =================================== # 7. 显示部署结果 # =================================== echo "" echo "📊 服务状态:" docker-compose -f docker-compose.prod.yml ps echo "" echo "==========================================" echo " ✅ 部署完成!" echo "==========================================" echo "" echo "🌐 访问信息:" echo " URL: http://$(hostname -I | awk '{print $1}'):2080" echo " 管理员: admin@example.com / admin123" echo "" echo "📋 Git 配置:" echo " 官方仓库 (upstream): https://github.com/Wei-Shaw/sub2api.git" echo " 你的仓库 (origin): https://git.586vip.cn/oadmin/sub2api.git" echo " 当前分支: main" echo "" echo "🔄 同步官方更新:" echo " cd /opt/sub2api-dev" echo " git fetch upstream" echo " git merge upstream/main" echo " git push origin main" echo "" echo "📝 常用命令:" echo " 查看日志: cd /opt/sub2api-dev/deploy && docker-compose -f docker-compose.prod.yml logs -f" echo " 重启服务: docker-compose -f docker-compose.prod.yml restart" echo " 停止服务: docker-compose -f docker-compose.prod.yml down" echo "" echo "🎉 访问 http://$(hostname -I | awk '{print $1}'):2080 开始使用!" echo ""