#!/bin/bash # ══════════════════════════════════════════════════════════════ # 光湖驱动引擎 · 铸渊服务器安装脚本 # Guanghu Drive Engine · Zhuyuan Server Installer # # 用途:一步完成:大脑同步 + 引擎安装 + 自动启动 # 用法:bash scripts/engine-start.sh # # 依赖:Node.js (服务器应有),零npm依赖 # 版权:国作登字-2026-A-00037559 · TCS-0002∞ # ══════════════════════════════════════════════════════════════ set -e GREEN='\033[0;32m' YELLOW='\033[1;33m' CYAN='\033[0;36m' RED='\033[0;31m' NC='\033[0m' REPO_DIR="$(cd "$(dirname "$0")/.." && pwd)" ENGINE_PORT="${GATEKEEPER_PORT:-3910}" clear echo "" echo "╔══════════════════════════════════════════════╗" echo "║ 光湖驱动引擎 · 安装脚本 ║" echo "║ Guanghu Drive Engine · Installer v1.0 ║" echo "╚══════════════════════════════════════════════╝" echo "" echo -e " ${CYAN}仓库目录:${NC} ${REPO_DIR}" echo -e " ${CYAN}引擎端口:${NC} ${ENGINE_PORT}" echo "" # ══════════════════════════════════════════════════════════════ # 第1步:检查依赖 # ══════════════════════════════════════════════════════════════ echo -e "${YELLOW}[1/4] 检查环境...${NC}" if ! command -v node &> /dev/null; then echo -e " ${RED}❌ 需要 Node.js 但未安装${NC}" echo " 请先安装: apt install nodejs npm" exit 1 fi NODE_VER=$(node -v) echo -e " ${GREEN}✅ Node.js ${NODE_VER}${NC}" # ══════════════════════════════════════════════════════════════ # 第2步:运行大脑同步 # ══════════════════════════════════════════════════════════════ echo "" echo -e "${YELLOW}[2/4] 同步大脑文件...${NC}" if [ -f "${REPO_DIR}/scripts/brain-sync.js" ]; then node "${REPO_DIR}/scripts/brain-sync.js" echo -e " ${GREEN}✅ 大脑同步完成${NC}" else echo -e " ${YELLOW}⚠️ 未找到 brain-sync.js,跳过${NC}" fi # ══════════════════════════════════════════════════════════════ # 第3步:启动引擎 # ══════════════════════════════════════════════════════════════ echo "" echo -e "${YELLOW}[3/4] 启动引擎...${NC}" GATEKEEPER="${REPO_DIR}/mcp-servers/zhuyuan-gateway/gatekeeper/index.js" if [ ! -f "$GATEKEEPER" ]; then echo -e " ${RED}❌ 未找到引擎文件: ${GATEKEEPER}${NC}" exit 1 fi # 检查是否已有引擎在运行 if lsof -i :${ENGINE_PORT} &>/dev/null 2>&1; then echo -e " ${YELLOW}⚠️ 引擎已在端口 ${ENGINE_PORT} 运行${NC}" echo -e " ${YELLOW} 如需重启: fuser -k ${ENGINE_PORT}/tcp && node ${GATEKEEPER} ${ENGINE_PORT} &${NC}" else # 后台启动 nohup node "${GATEKEEPER}" "${ENGINE_PORT}" > /tmp/zhuyuan-engine.log 2>&1 & ENGINE_PID=$! sleep 2 if kill -0 $ENGINE_PID 2>/dev/null; then echo -e " ${GREEN}✅ 引擎已启动 (PID: ${ENGINE_PID})${NC}" else echo -e " ${RED}❌ 引擎启动失败,查看日志: cat /tmp/zhuyuan-engine.log${NC}" exit 1 fi fi # ══════════════════════════════════════════════════════════════ # 第4步:显示信息 # ══════════════════════════════════════════════════════════════ echo "" echo -e "${YELLOW}[4/4] 服务状态...${NC}" # 检查端口 if lsof -i :${ENGINE_PORT} &>/dev/null 2>&1; then echo -e " ${GREEN}✅ 引擎端口 ${ENGINE_PORT} 开放中${NC}" else echo -e " ${RED}❌ 引擎端口 ${ENGINE_PORT} 未开放${NC}" fi # 获取API密钥 HOME=${HOME:-/root} SECRET_FILE="${HOME}/.gatekeeper/secret" if [ -f "$SECRET_FILE" ]; then API_KEY=$(cat "$SECRET_FILE") else API_KEY="等待首次启动生成" fi echo "" echo "══════════════════════════════════════════════" echo " 光湖驱动引擎 · 安装完成" echo "" echo " ╭─ API 密钥" echo " ├─ ${API_KEY}" echo " ╰─ (保存在 ~/.gatekeeper/secret)" echo "" echo " 向铸渊发送以下信息:" echo " ┌──────────────────────────────────────────┐" echo " │ 服务器: 广州 (43.139.217.141) │" echo " │ 端口: ${ENGINE_PORT} │" echo " │ 密钥: ${API_KEY} │" echo " └──────────────────────────────────────────┘" echo "" echo " 日志: tail -f /tmp/zhuyuan-engine.log" echo "══════════════════════════════════════════════" echo "" # 自动开机启动提示 if ! command -v pm2 &> /dev/null; then echo -e " ${YELLOW}提示: 当前未使用进程管理工具,服务器重启后需重新启动引擎${NC}" echo " 建议: npm install -g pm2 && pm2 start ${GATEKEEPER} -- -p ${ENGINE_PORT}" echo "" fi