#!/usr/bin/env bash # Start HTTP control plane on NS1. Archive workers stay with verae-keep. set -euo pipefail STACK="${VERAE_STACK:-$HOME/verae-stack}" FLEET="$STACK/packages/verae-fleet" EDGE_PORT="${EDGE_PORT:-13000}" export STAFF_IAM_URL="${STAFF_IAM_URL:-https://iam.zapier.georgelambert.org}" export STAFF_COOKIE_DOMAIN="${STAFF_COOKIE_DOMAIN:-.zapier.georgelambert.org}" export NATS_URL="${NATS_URL:-nats://127.0.0.1:4222}" export FLEET_ENABLE_LAN134="${FLEET_ENABLE_LAN134:-}" test -d "$FLEET" || { echo "missing $FLEET" >&2; exit 1; } python3 - "$FLEET" "$EDGE_PORT" <<'PY' import json, sys from pathlib import Path root = Path(sys.argv[1]) edge_port = sys.argv[2] fleet_path = root / "fleet.json" fleet = json.loads(fleet_path.read_text()) for sid in ("tree-node", "archive-worm", "archive-aggregator", "job-poller", "webhook-deliver", "nats"): if sid in fleet.get("services", {}): fleet["services"][sid]["enabled"] = False fleet["services"][sid]["keepFloor"] = False fleet_path.write_text(json.dumps(fleet, indent=2) + "\n") machines_path = root / "machines.json" machines = json.loads(machines_path.read_text()) for m in machines.get("machines", []): if m.get("id") == "ns1": m["enabled"] = False if m.get("id") == "lan-134": m["enabled"] = False if m.get("id") == "local": m["enabled"] = True m["roles"] = ["*"] m["capacity"] = 32 machines_path.write_text(json.dumps(machines, indent=2) + "\n") edge = json.loads((root / "services" / "zappier-edge.json").read_text()) edge.setdefault("env", {})["PORT"] = edge_port edge["env"]["BIND"] = "127.0.0.1" edge["ports"] = {"healthBase": int(edge_port)} (root / "services" / "zappier-edge.json").write_text(json.dumps(edge, indent=2) + "\n") admin = f"http://127.0.0.1:{edge_port}" for name in ( "customer-service", "sales-pricing", "accounting-export", "access-staff", "access-web", "staff-iam", "staff-session", "zappier-edge", ): p = root / "services" / f"{name}.json" if not p.exists(): continue spec = json.loads(p.read_text()) env = spec.setdefault("env", {}) if "ZAPPIER_ADMIN_URL" in env: env["ZAPPIER_ADMIN_URL"] = admin if name == "access-web": env["ZAPPIER_EDGE_URL"] = admin env["STAFF_IAM_URL"] = "https://iam.zapier.georgelambert.org" env["STAFF_COOKIE_DOMAIN"] = ".zapier.georgelambert.org" env["STAFF_AUTH"] = "1" p.write_text(json.dumps(spec, indent=2) + "\n") print("overlay applied edge", edge_port) PY cd "$FLEET" if curl -sf http://127.0.0.1:3850/health >/dev/null; then echo "fleet already up" exit 0 fi nohup env STAFF_IAM_URL="$STAFF_IAM_URL" STAFF_COOKIE_DOMAIN="$STAFF_COOKIE_DOMAIN" NATS_URL="$NATS_URL" node src/cli.js serve \ >/tmp/verae-fleet-serve.out 2>&1 & echo "fleet pid $!" for i in $(seq 1 40); do if curl -sf http://127.0.0.1:3850/health >/dev/null; then echo "fleet up" exit 0 fi sleep 0.5 done echo "fleet did not become healthy; see /tmp/verae-fleet-serve.out" >&2 exit 1