Private VPS readiness

One operator gate before widening private external testing.

The private VPS readiness command combines production preflight, selected-origin deployment evidence, backup posture, sealed backup artifact manifests, encrypted/offsite custody metadata, and restore-drill advisory evidence into a single pass/fail report. The first containerized rehearsal should run on a disposable/private test-VPS-like host; passing it validates the deployment shape before it is transplanted to the official long-lived VPS. The gated owner dashboard mirrors the same posture as a browser-safe operational readiness cockpit, but the shell gate remains authoritative before widening private testing.

Preflight + evidence Origin-bound Private test only
Command

Run the readiness gate on the target VPS

NOCTURNE_DEPLOYMENT_PROFILE=production \
NOCTURNE_PUBLIC_ORIGIN=https://members.final-domain.example \
NOCTURNE_SECURE_COOKIES=true \
NOCTURNE_OWNER_KEY_SHA256=... \
NOCTURNE_BACKUP_POSTURE=external \
cargo run -- private-vps-readiness \
  --origin https://members.final-domain.example \
  --backup-id backup-YYYYMMDD

If --origin is omitted, the command uses NOCTURNE_PUBLIC_ORIGIN as the deployment-evidence filter. If --backup-id is omitted, the command checks the newest backup ID in backup_manifests/manifest.log and applies that same backup ID to custody. The alias vps-readiness is available for shorter operator runs.

Stop condition: zero failures means the private VPS gate is coherent enough to widen private testing after warning review. Any failure means do not widen testing.
Inputs

What the report combines

InputBlocking behaviorWhy it exists
production-preflightFails the readiness gate if production profile, HTTPS origin, secure cookies, owner gate, owner session length, backup posture, database, migrations, or media checks fail.Prevents public-edge exposure drift from being hidden inside a lower-level smoke result.
deployment-evidence-checkFails when required passed evidence is missing for preflight, external edge smoke, smoke member provision, authenticated member smoke, or smoke member cleanup. Edge smoke also fails widening unless its proxy label attests nginx or a separately validated trusted-edge control.Keeps private VPS validation tied to sanitized operator evidence instead of memory, chat notes, or body-cap-only claims.
Origin consistencyFails when explicit --origin does not match NOCTURNE_PUBLIC_ORIGIN, or when neither is available.Stops evidence from one edge/domain being accidentally reused for another.
Backup postureFails when NOCTURNE_BACKUP_POSTURE=local. Configured and external posture pass, with doctor/preflight checks still visible.Private testing can create real operational state; local-only backup posture is not enough.
backup-manifest-checkFails when the selected/newest backup ID does not have both postgres_dump and media_archive hashes recorded.Backup posture must be backed by a sealed dump/media pair before private testers create state worth preserving.
backup-custody-checkFails when the selected backup ID does not have current encrypted offsite/provider custody metadata.A complete dump/media pair still needs off-host retention before private testers create state worth preserving.
Restore drill evidenceWarns until backup_restore_drill evidence is recorded.Required before public-launch readiness, but advisory for the first private VPS widening gate.
Sequence

Recommended operator order

  1. Generate deployment-rehearsal-plan with the final origin and backup ID so the operator sequence is explicit before the VPS session starts.
  2. Copy the private production-shaped environment to the disposable rehearsal host, replace placeholders with rehearsal-specific secrets, and run vps-bootstrap-plan --env-file .env.production before starting services. Recreate fresh secrets/evidence when transplanting the proven shape to the official VPS.
  3. Load production environment on the VPS and run production-preflight.
  4. Record deployment-evidence-record --stage production_preflight with a hash of the sealed output.
  5. Attach the HTTPS reverse proxy and run external edge smoke from outside the VPS network.
  6. Provision a disposable smoke member, run external member smoke, then clean up the disposable access.
  7. Record evidence for each smoke/provision/cleanup stage with artifact hashes, not raw logs.
  8. Generate and verify payment-provider-review-plan --artifact-file ... --review-result passed|warning|failed before recording payment_provider_review evidence; keep raw provider approvals, contracts, dashboards, and logs outside git and outside the browser surfaces.
  9. Record sealed PostgreSQL dump and media archive hashes with backup-manifest-record.
  10. Record encrypted/offsite custody and retention metadata with backup-custody-record.
  11. Optionally run restore-drill-plan --backup-id ... --manifest-file ... --custody-file ... for the selected sealed backup pair to prepare the isolated restore checklist and backup_restore_drill evidence command; completed drill evidence remains advisory for private VPS widening but required before public launch.
  12. Review the gated /owner operational readiness cockpit for browser-safe derived status rows and command anchors. Treat it as operator orientation only; it must not replace shell evidence checks.
  13. Run owner-operational-summary --artifact-file deployment_evidence/owner-operational-summary.txt to export a sanitized owner-facing snapshot of doctor, evidence, payment-provider review, owner visual review, backup, restore-drill, and checkout lifecycle posture.
  14. Run private-vps-readiness. Fix failures before increasing member count or inviting testers.
Boundary

Not a public-launch approval