#!/bin/bash # Sublink 多版本部署脚本 # 路径已锁定为 /data/sublinkx set -e # ================= 配置区域 ================= # 这里统一了所有文件的存储位置 PROJECT_DIR="/data/sublinkx" COMPOSE_FILE="$PROJECT_DIR/docker-compose.yml" # =========================================== echo "==================================================" echo "请选择要部署的版本 / Select Version:" echo "1. SublinkX (原版 - jaaksi/sublinkx)" echo "2. SublinkE (新版 - eun1e/sublinke)" echo "==================================================" read -p "请输入数字 [1-2]: " choice # 创建基础目录 (如果 /data 不存在也会自动创建) echo "正在创建统一数据目录: $PROJECT_DIR ..." mkdir -p "$PROJECT_DIR"/{db,template,logs} # 如果是选项2 (eun1e),额外创建 plugins 目录 if [ "$choice" == "2" ]; then mkdir -p "$PROJECT_DIR"/plugins fi # 如果之前有旧的 compose 文件,先尝试停止服务,避免冲突 if [ -f "$COMPOSE_FILE" ]; then echo "检测到旧配置,尝试停止旧容器..." cd "$PROJECT_DIR" docker compose down 2>/dev/null || true fi # 根据选择生成 Docker Compose 文件 if [ "$choice" == "1" ]; then echo "正在生成 SublinkX (jaaksi) 配置文件..." cat > "$COMPOSE_FILE" << 'EOF' version: '3.8' services: sublinkx: image: jaaksi/sublinkx:latest container_name: sublinkx ports: - "8000:8000" volumes: - ./db:/app/db - ./template:/app/template - ./logs:/app/logs environment: - TZ=Asia/Shanghai restart: unless-stopped networks: - sublinkx-network networks: sublinkx-network: driver: bridge EOF elif [ "$choice" == "2" ]; then echo "正在生成 SublinkE (eun1e) 配置文件..." # 对应你要求的 docker run 命令转换,并统一映射到当前目录 cat > "$COMPOSE_FILE" << 'EOF' version: '3.8' services: sublinke: image: eun1e/sublinke container_name: sublinke ports: - "8000:8000" volumes: - ./db:/app/db - ./template:/app/template - ./logs:/app/logs - ./plugins:/app/plugins environment: - TZ=Asia/Shanghai restart: unless-stopped networks: - sublinkx-network networks: sublinkx-network: driver: bridge EOF else echo "输入错误,脚本退出。" exit 1 fi echo "配置文件已创建: $COMPOSE_FILE" # 部署服务 cd "$PROJECT_DIR" echo "启动服务..." docker compose up -d # 检查服务状态 echo "等待服务启动..." sleep 5 # 获取服务器IP SERVER_IP=$(hostname -I | awk '{print $1}') echo "==================================================" if docker compose ps | grep -q "Up"; then echo "✅ 部署成功!" if [ "$choice" == "1" ]; then echo "当前版本: SublinkX (jaaksi)" else echo "当前版本: SublinkE (eun1e)" fi echo "访问地址: http://${SERVER_IP}:8000" echo "--------------------------------------------------" echo "📂 数据存储位置: $PROJECT_DIR" echo " (备份时打包此目录即可)" echo "--------------------------------------------------" echo "常用命令:" echo "进入目录: cd /data/sublinkx" echo "停止服务: docker compose down" echo "重启服务: docker compose restart" echo "查看日志: docker compose logs -f" else echo "❌ 启动失败,请检查日志: docker compose logs" fi echo "=================================================="