#!/bin/bash # ============================================================ # autoClaude-TGbot 一键部署脚本 # 用法: chmod +x deploy.sh && sudo ./deploy.sh # ============================================================ set -e # --- 颜色 --- RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' CYAN='\033[0;36m' NC='\033[0m' info() { echo -e "${CYAN}[INFO]${NC} $1"; } ok() { echo -e "${GREEN}[✔]${NC} $1"; } warn() { echo -e "${YELLOW}[!]${NC} $1"; } err() { echo -e "${RED}[✘]${NC} $1"; exit 1; } # --- 检查 root --- if [ "$EUID" -ne 0 ]; then err "请使用 sudo 运行: sudo ./deploy.sh" fi # --- 变量 --- APP_NAME="autoclaude-tgbot" APP_DIR="$(cd "$(dirname "$0")" && pwd)" SERVICE_FILE="/etc/systemd/system/${APP_NAME}.service" RUN_USER="${SUDO_USER:-$(whoami)}" RUN_GROUP="$(id -gn "$RUN_USER")" echo "" echo -e "${CYAN}╔══════════════════════════════════════════╗${NC}" echo -e "${CYAN}║ autoClaude-TGbot 一键部署 ║${NC}" echo -e "${CYAN}╚══════════════════════════════════════════╝${NC}" echo "" info "项目目录: ${APP_DIR}" info "运行用户: ${RUN_USER}" echo "" # ============================================================ # 1. 安装系统依赖 # ============================================================ info "检查系统依赖..." # 安装 uv(如果不存在) if ! command -v uv &> /dev/null; then info "安装 uv..." curl -LsSf https://astral.sh/uv/install.sh | sh export PATH="$HOME/.local/bin:$PATH" ok "uv 已安装" else ok "uv 已存在 ($(uv --version))" fi # ============================================================ # 2. 安装 Python 依赖 # ============================================================ info "安装 Python 依赖..." cd "$APP_DIR" sudo -u "$RUN_USER" uv sync 2>/dev/null || sudo -u "$RUN_USER" uv pip install -r pyproject.toml 2>/dev/null || true ok "依赖安装完成" # ============================================================ # 3. 检查配置文件 # ============================================================ if [ ! -f "${APP_DIR}/config.toml" ]; then warn "config.toml 不存在,从模板复制..." cp "${APP_DIR}/config.toml.example" "${APP_DIR}/config.toml" chown "$RUN_USER:$RUN_GROUP" "${APP_DIR}/config.toml" echo "" echo -e "${YELLOW}════════════════════════════════════════════${NC}" echo -e "${YELLOW} ⚠️ 请编辑 config.toml 填入实际配置:${NC}" echo -e "${YELLOW} nano ${APP_DIR}/config.toml${NC}" echo -e "${YELLOW}════════════════════════════════════════════${NC}" echo "" read -p "编辑完成后按 Enter 继续,或 Ctrl+C 退出..." _ else ok "config.toml 已存在" fi # ============================================================ # 4. 获取 uv 和 python 路径 # ============================================================ UV_PATH="$(sudo -u "$RUN_USER" bash -c 'which uv')" info "uv 路径: ${UV_PATH}" # ============================================================ # 5. 创建 systemd 服务 # ============================================================ info "创建 systemd 服务: ${APP_NAME}" cat > "$SERVICE_FILE" <