b0f5d6a51c
Split platform admin and ops APIs into standalone admin-server.mjs with network guards; simplify billing to RMB token pricing, refactor user auth, and add rsync deploy plus local-test scripts and docs. Co-authored-by: Cursor <cursoragent@cursor.com>
38 lines
917 B
Bash
Executable File
38 lines
917 B
Bash
Executable File
#!/usr/bin/env bash
|
||
# Plaza Next.js 生产进程(plaza.tkmind.cn → Cloudflare Tunnel :3001)
|
||
set -euo pipefail
|
||
|
||
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
||
cd "$ROOT"
|
||
|
||
if [[ -f "${ROOT}/.env" ]]; then
|
||
set -a
|
||
# shellcheck disable=SC1091
|
||
source "${ROOT}/.env"
|
||
set +a
|
||
fi
|
||
|
||
export NODE_ENV=production
|
||
PORTAL_PORT="${H5_PORT:-8081}"
|
||
PLAZA_PORT="${PLAZA_PORT:-3001}"
|
||
|
||
NODE_BIN="${NODE_BIN:-/opt/homebrew/opt/node@24/bin/node}"
|
||
if [[ ! -x "${NODE_BIN}" ]]; then
|
||
NODE_BIN="$(command -v node)"
|
||
fi
|
||
|
||
echo "==> 等待 Portal :${PORTAL_PORT}…"
|
||
for _ in $(seq 1 120); do
|
||
if curl -sf "http://127.0.0.1:${PORTAL_PORT}/auth/status" >/dev/null 2>&1; then
|
||
break
|
||
fi
|
||
sleep 1
|
||
done
|
||
|
||
if ! curl -sf "http://127.0.0.1:${PORTAL_PORT}/auth/status" >/dev/null 2>&1; then
|
||
echo "Portal 未就绪 (:${PORTAL_PORT}),Plaza 退出" >&2
|
||
exit 1
|
||
fi
|
||
|
||
exec "${NODE_BIN}" scripts/start-plaza-prod.mjs -- --skip-build --no-portal
|