#!/usr/bin/env bash # Ubuntu 一键安装 — 部署到 /opt/crypto_key # 用法: sudo bash scripts/install-ubuntu.sh set -e REPO_URL="https://git.bz121.com/dekun/crypto_key.git" INSTALL_DIR="/opt/crypto_key" APP_USER="${SUDO_USER:-$USER}" echo "==> 安装系统依赖..." export DEBIAN_FRONTEND=noninteractive apt-get update -qq apt-get install -y -qq python3 python3-venv python3-pip git curl ca-certificates if ! command -v node >/dev/null 2>&1; then echo "==> 安装 Node.js (用于 PM2)..." curl -fsSL https://deb.nodesource.com/setup_20.x | bash - apt-get install -y -qq nodejs fi if ! command -v pm2 >/dev/null 2>&1; then echo "==> 安装 PM2..." npm install -g pm2 fi echo "==> 拉取代码到 ${INSTALL_DIR} ..." mkdir -p /opt if [ -d "${INSTALL_DIR}/.git" ]; then cd "${INSTALL_DIR}" git pull origin main 2>/dev/null || git pull origin master 2>/dev/null || git pull else git clone "${REPO_URL}" "${INSTALL_DIR}" cd "${INSTALL_DIR}" fi echo "==> 创建 Python 虚拟环境..." python3 -m venv venv source venv/bin/activate pip install -q --upgrade pip pip install -q -r requirements.txt mkdir -p logs chmod +x pm2-start.sh pm2-stop.sh 2>/dev/null || true if [ -n "${APP_USER}" ] && [ "${APP_USER}" != "root" ]; then chown -R "${APP_USER}:${APP_USER}" "${INSTALL_DIR}" fi echo "==> 启动 PM2 守护..." cd "${INSTALL_DIR}" pm2 delete api-key-manager 2>/dev/null || true pm2 start ecosystem.config.cjs pm2 save echo "" echo "==========================================" echo " 安装完成" echo " 目录: ${INSTALL_DIR}" LAN_IP=$(hostname -I 2>/dev/null | awk '{print $1}') echo " 本机: http://127.0.0.1:5200" echo " 局域网: http://${LAN_IP:-<你的IP>}:5200" echo " 状态: pm2 status" echo " 日志: pm2 logs api-key-manager" echo "==========================================" echo "" echo "开机自启请执行: pm2 startup" echo "按提示复制 sudo 命令执行后,再运行: pm2 save"