Files
sub2api/deploy/deploy-complete.sh
huangzhenpc e4db851b31
Some checks failed
CI / test (push) Has been cancelled
CI / golangci-lint (push) Has been cancelled
feat: 添加二次开发部署配置和文档
- 添加双 Git remote 配置指南 (GIT_GUIDE.md, GIT_WORKFLOW.md)
- 添加 1Panel 环境部署配置 (docker-compose.1panel.yml, .env.1panel)
- 添加自动化部署脚本 (deploy-complete.sh, deploy-dev.sh, deploy.sh)
- 添加部署说明文档 (README_DEPLOY.md)
- 配置端口 2080 映射
- 支持连接现有 1Panel Redis (1Panel-redis-S1KH)
2026-01-04 10:25:36 +08:00

222 lines
5.8 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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 ""