Files
gitlab-instance-0a899031_no…/deploy/setup-server.sh
2026-07-11 11:30:35 -05:00

68 lines
2.0 KiB
Bash

#!/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 gnupg
curl -fsSL 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' \
| gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -fsSL 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' \
| tee /etc/apt/sources.list.d/caddy-stable.list
apt-get update
apt-get install -y caddy
fi
mkdir -p /etc/caddy
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)"
cp "$APP_DIR/deploy/Caddyfile" /etc/caddy/Caddyfile
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