feat(orchestrator): Proxmox BFF route (CF-Access service token proxy)
Adds a narrow, safelisted BFF surface so the Solace Bank Group PLC portal
(and other browser clients) can reach the Cloudflare Access protected
Proxmox API without requiring the user to complete a CF-Access SSO flow
in-browser.
Endpoints:
GET /api/proxmox/health — configuration probe (503 when unset)
GET /api/proxmox/cluster/status — aggregated cluster node status
No new deployment in this PR — orchestrator change only.
Frontend is not pointed at these routes yet; the Solace portal still marks Proxmox as `bff-required` (see PR #2). After this lands + deploys, we can flip `src/services/proxmox.ts` over.
No integration test covers the upstream CF-Access call; we'd need a mock fetch and CI secrets.
When any of these are missing, both routes return 503 with an actionable JSON body rather than crashing.
feat(orchestrator): Proxmox BFF route (CF-Access service token proxy)
Adds a narrow, safelisted BFF surface so the Solace Bank Group PLC portal
(and other browser clients) can reach the Cloudflare Access protected
Proxmox API without requiring the user to complete a CF-Access SSO flow
in-browser.
Endpoints:
GET /api/proxmox/health — configuration probe (503 when unset)
GET /api/proxmox/cluster/status — aggregated cluster node status
Required orchestrator env:
PROXMOX_API_URL
PROXMOX_CF_ACCESS_CLIENT_ID
PROXMOX_CF_ACCESS_CLIENT_SECRET
When env is missing the endpoints return 503 with an actionable JSON
body and the frontend stays in its mocked state — no crashes, no
partial deploys.
---
## Verification performed this session
- \`cd orchestrator && npx tsc --noEmit\` — clean (orchestrator TS compiles).
- Routes registered in \`orchestrator/src/index.ts\`:
- \`GET /api/proxmox/health\`
- \`GET /api/proxmox/cluster/status\`
## Not yet done (intentional)
- No new deployment in this PR — orchestrator change only.
- Frontend is **not** pointed at these routes yet; the Solace portal still marks Proxmox as \`bff-required\` (see PR #2). After this lands + deploys, we can flip \`src/services/proxmox.ts\` over.
- No integration test covers the upstream CF-Access call; we'd need a mock fetch and CI secrets.
## Required orchestrator env (staging + prod)
- \`PROXMOX_API_URL\` — e.g. \`https://proxmox-api.d-bis.org\`
- \`PROXMOX_CF_ACCESS_CLIENT_ID\` — CF Access service-token ID
- \`PROXMOX_CF_ACCESS_CLIENT_SECRET\` — CF Access service-token secret
When any of these are missing, both routes return **503** with an actionable JSON body rather than crashing.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
feat(orchestrator): Proxmox BFF route (CF-Access service token proxy)
Adds a narrow, safelisted BFF surface so the Solace Bank Group PLC portal
(and other browser clients) can reach the Cloudflare Access protected
Proxmox API without requiring the user to complete a CF-Access SSO flow
in-browser.
Endpoints:
GET /api/proxmox/health — configuration probe (503 when unset)
GET /api/proxmox/cluster/status — aggregated cluster node status
Required orchestrator env:
PROXMOX_API_URL
PROXMOX_CF_ACCESS_CLIENT_ID
PROXMOX_CF_ACCESS_CLIENT_SECRET
When env is missing the endpoints return 503 with an actionable JSON
body and the frontend stays in its mocked state — no crashes, no
partial deploys.
Verification performed this session
Not yet done (intentional)
Required orchestrator env (staging + prod)
When any of these are missing, both routes return 503 with an actionable JSON body rather than crashing.