130 lines
3.4 KiB
Bash
130 lines
3.4 KiB
Bash
#!/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 "=================================================="
|