79 lines
2.5 KiB
Bash
79 lines
2.5 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
|
|
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
|