- scripts/deploy/deploy_crm_only.sh: 单进程部署 sub2api-cn-relay-manager CRM 控制面到 remote43,不依赖 sub2api host / PG / Redis 容器。 复用 scripts/deploy/remote43_patched_stack_lib.sh 的 env 渲染 (render_remote43_crm_env),render_crm_only_bootstrap 用 $\{VAR\} 占位符 + sed 注入避开 set -u + unquoted-heredoc 边缘问题。 部署前先 kill 老进程 (再 scp 二进制) 避免 ELF overwrite 失败。 - docs/DEPLOYMENT.md: 加 '在线部署节点' 段,记录 stack / 端口 / 入口 / 验证。 - docs/EXECUTION_BOARD.md: 顶部加 'Latest Online Stack' 段。 - artifacts/online-deploy-20260602/: 本次真实部署的证据 - 01-local-build.txt: 本地 server 二进制 md5 + git head - 02-remote-inspect.txt: 远端 process / port / db tables - 03-crm-api-checks.txt: /healthz /api/packs /api/hosts /metrics 真实响应 - 04-portal-public.txt: sub.tksea.top 公共入口 - 05-quality-gates.txt: gofmt / vet / test -race / integration - manifest.json: 结构化汇总 验证(2026-06-02 21:32-21:43): - /healthz: HTTP 200 'ok' - /api/packs (Bearer): HTTP 200 '{"packs":[]}' - /api/hosts (Bearer): HTTP 200 '{"hosts":[]}' - /api/packs (no auth): HTTP 401 - /metrics (Prometheus): HTTP 200,含 active_hosts/active_providers/ db_connections_active + Go runtime - sub.tksea.top/portal/: HTTP 200 - sub.tksea.top/portal-admin-api/healthz: HTTP 200 'ok'(反代到 CRM) - go test -race ./internal/... ./tests/integration/...: PASS - gofmt / go vet: 干净