Goal
Deploy the existing authenticated status receiver on a small dedicated host that remains available when a controller is offline, then activate outbound HTTPS reporting on the controller without changing runner lifecycle or capacity.
Scope
- package the merged receiver for a dedicated unprivileged systemd service bound to loopback behind an existing HTTPS reverse proxy
- define clean installation, idempotent rerun, verification, upgrade, rollback, retention, and outage-isolation procedures
- provision per-controller signing material and a separate read credential out of band; store only host-local path references in configuration
- activate the existing reporter through reviewed private configuration while preserving controller identity, labels, runner group, capacity, resource limits, scale-to-zero behavior, and disabled SSH
- validate authenticated ingestion and read-only access, controller isolation, replay/freshness and payload bounds, restart behavior, retention, redaction, and receiver outage isolation
Boundaries
- receiver is separate from every runner controller and has no Docker socket, runner credential, deployment credential, or inbound connection to a controller
- controller traffic is outbound HTTPS only
- no WebUI and no mutation API
- no runner-capacity change
- no credentials, private endpoints, host inventory, or infrastructure identifiers in this public issue
- provisioning and deployment require separate authorization; preparation PRs remain draft and unmerged
The reporting implementation is complete in #62 / #63; this issue tracks deployment only.
Goal
Deploy the existing authenticated status receiver on a small dedicated host that remains available when a controller is offline, then activate outbound HTTPS reporting on the controller without changing runner lifecycle or capacity.
Scope
Boundaries
The reporting implementation is complete in #62 / #63; this issue tracks deployment only.