#!/bin/bash # 服务器初始化脚本 # 在服务器上运行此脚本来设置环境 set -e echo "开始设置服务器环境..." # 更新系统 echo "更新系统..." apt update && apt upgrade -y # 安装基础工具 echo "安装基础工具..." apt install -y curl wget git build-essential # 安全检查函数:检查 .bashrc 是否被感染 check_bashrc_security() { local bashrc_file="$HOME/.bashrc" if [ -f "$bashrc_file" ]; then # 检查是否包含恶意代码模式 if grep -qE '\.update|/usr/bin/\.update|while.*true.*do.*\.update' "$bashrc_file" 2>/dev/null; then echo "⚠️ 警告: 检测到 .bashrc 可能包含恶意代码!" echo " 建议检查并清理 .bashrc 文件" return 1 fi fi return 0 } # 安装 Node.js (使用 nvm) echo "安装 Node.js..." if [ ! -d "$HOME/.nvm" ]; then curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash fi # 直接加载 nvm,不通过 .bashrc(更安全) export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # 执行安全检查 if ! check_bashrc_security; then echo "⚠️ 继续执行,但请注意安全风险" fi # 安装和使用 Node.js nvm install 20 nvm use 20 nvm alias default 20 # 安装 pnpm echo "安装 pnpm..." npm install -g pnpm # 安装 PM2 echo "安装 PM2..." npm install -g pm2 # 安装 PostgreSQL echo "安装 PostgreSQL..." if ! command -v psql &> /dev/null; then apt install -y postgresql postgresql-contrib systemctl start postgresql systemctl enable postgresql fi # 安装 Nginx echo "安装 Nginx..." if ! command -v nginx &> /dev/null; then apt install -y nginx systemctl start nginx systemctl enable nginx fi # 创建项目目录 echo "创建项目目录..." mkdir -p /var/www/ai-chatbot chown -R $USER:$USER /var/www/ai-chatbot # 创建日志目录 mkdir -p /var/log/pm2 chown -R $USER:$USER /var/log/pm2 # 创建备份目录 mkdir -p /root/backups/ai-chatbot # 设置防火墙 echo "配置防火墙..." ufw --force enable ufw allow 80/tcp ufw allow 443/tcp ufw allow 5204/tcp # 安装安全基线(如果脚本存在) if [ -f "$(dirname "$0")/scripts/security/install-security-stack.sh" ]; then echo "安装 security-stack..." bash "$(dirname "$0")/scripts/security/install-security-stack.sh" || echo "security-stack 安装失败,继续执行" elif [ -f "$(dirname "$0")/scripts/security/install-perf-guard.sh" ]; then echo "安装 perf-guard..." bash "$(dirname "$0")/scripts/security/install-perf-guard.sh" || echo "perf-guard 安装失败,继续执行" fi echo "服务器环境设置完成!" echo "" echo "下一步:" echo "1. 配置 PostgreSQL 数据库" echo "2. 上传项目代码到 /var/www/ai-chatbot" echo "3. 配置环境变量 (.env.local)" echo "4. 运行 pnpm install && pnpm db:migrate && pnpm build" echo "5. 使用 PM2 启动应用"