#!/bin/bash # 首次部署:安装依赖、克隆代码、配置 Caddy + systemd # 不影响 nginx:23794 / sing-box 等现有业务 set -euo pipefail APP_DIR="/var/www/nomadro.com" REPO_URL="${REPO_URL:-https://gitea.dsx2020.com/eric/gitlab-instance-0a899031_nomadro.git}" BRANCH="${BRANCH:-test}" GIT_USER="${GIT_USER:-eric}" GIT_PASS="${GIT_PASS:?Set GIT_PASS}" echo "==> Install Node.js 20" if ! command -v node >/dev/null 2>&1; then curl -fsSL https://deb.nodesource.com/setup_20.x | bash - apt-get install -y nodejs fi echo "==> Install pnpm" if ! command -v pnpm >/dev/null 2>&1; then corepack enable corepack prepare pnpm@10.25.0 --activate fi echo "==> Install Caddy" if ! command -v caddy >/dev/null 2>&1; then apt-get install -y debian-keyring debian-archive-keyring apt-transport-https curl curl -1sLf 'https://dl.caddyserver.com/api/download/installer/deb/caddy-stable/caddy-stable.list' \ | tee /etc/apt/sources.list.d/caddy-stable.list curl -1sLf 'https://dl.caddyserver.com/api/download/installer/deb/caddy-stable/caddy-stable-archive-keyring.gpg' \ | tee /usr/share/keyrings/caddy-stable-archive-keyring.gpg >/dev/null apt-get update apt-get install -y caddy fi echo "==> Clone or update app" mkdir -p /var/www if [ -d "$APP_DIR/.git" ]; then cd "$APP_DIR" git fetch origin git checkout "$BRANCH" git pull origin "$BRANCH" else git clone -b "$BRANCH" "https://${GIT_USER}:${GIT_PASS}@${REPO_URL#https://}" "$APP_DIR" cd "$APP_DIR" fi echo "==> Build app" pnpm install --frozen-lockfile pnpm build echo "==> Configure Caddy (only nomadro.com, keep nginx untouched)" CADDY_MAIN="/etc/caddy/Caddyfile" SNIPPET="# nomadro.com - managed by nomadro deploy" if [ -f "$CADDY_MAIN" ] && grep -q "nomadro.com" "$CADDY_MAIN"; then echo "Caddy nomadro.com block already exists" else if [ ! -f "$CADDY_MAIN" ] || [ ! -s "$CADDY_MAIN" ]; then cp "$APP_DIR/deploy/Caddyfile" "$CADDY_MAIN" else echo "" >> "$CADDY_MAIN" echo "$SNIPPET" >> "$CADDY_MAIN" cat "$APP_DIR/deploy/Caddyfile" >> "$CADDY_MAIN" fi fi caddy validate --config "$CADDY_MAIN" systemctl enable caddy systemctl reload caddy || systemctl restart caddy echo "==> Configure systemd service" cp "$APP_DIR/deploy/nomadro.service" /etc/systemd/system/nomadro.service systemctl daemon-reload systemctl enable nomadro systemctl restart nomadro echo "==> Done" systemctl status nomadro --no-pager | head -10 systemctl status caddy --no-pager | head -10 ss -tlnp | grep -E ':80 |:443 |:4003 ' || true