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.
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.
What the report combines
| Input | Blocking behavior | Why it exists |
|---|---|---|
production-preflight | Fails 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-check | Fails 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 consistency | Fails 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 posture | Fails 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-check | Fails 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-check | Fails 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 evidence | Warns until backup_restore_drill evidence is recorded. | Required before public-launch readiness, but advisory for the first private VPS widening gate. |
Recommended operator order
- Generate
deployment-rehearsal-planwith the final origin and backup ID so the operator sequence is explicit before the VPS session starts. - 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.productionbefore starting services. Recreate fresh secrets/evidence when transplanting the proven shape to the official VPS. - Load production environment on the VPS and run
production-preflight. - Record
deployment-evidence-record --stage production_preflightwith a hash of the sealed output. - Attach the HTTPS reverse proxy and run external edge smoke from outside the VPS network.
- Provision a disposable smoke member, run external member smoke, then clean up the disposable access.
- Record evidence for each smoke/provision/cleanup stage with artifact hashes, not raw logs.
- Generate and verify
payment-provider-review-plan --artifact-file ... --review-result passed|warning|failedbefore recordingpayment_provider_reviewevidence; keep raw provider approvals, contracts, dashboards, and logs outside git and outside the browser surfaces. - Record sealed PostgreSQL dump and media archive hashes with
backup-manifest-record. - Record encrypted/offsite custody and retention metadata with
backup-custody-record. - Optionally run
restore-drill-plan --backup-id ... --manifest-file ... --custody-file ...for the selected sealed backup pair to prepare the isolated restore checklist andbackup_restore_drillevidence command; completed drill evidence remains advisory for private VPS widening but required before public launch. - Review the gated
/owneroperational readiness cockpit for browser-safe derived status rows and command anchors. Treat it as operator orientation only; it must not replace shell evidence checks. - Run
owner-operational-summary --artifact-file deployment_evidence/owner-operational-summary.txtto export a sanitized owner-facing snapshot of doctor, evidence, payment-provider review, owner visual review, backup, restore-drill, and checkout lifecycle posture. - Run
private-vps-readiness. Fix failures before increasing member count or inviting testers.
Not a public-launch approval
- The gate is for private VPS testing only. The first rehearsal host may be disposable and is not the official long-lived VPS; public launch still needs payment processor approval, jurisdiction/tax review, trust/safety escalation procedures, monitoring/WAF decisions, and completed restore drills.
- Warnings are not hidden. Review checkout lifecycle, backup drill, bind/proxy, and operator-posture warnings before widening.
owner-operational-summaryprints/exports sanitized readiness metadata only and writes a 0600 artifact when requested. The/ownerreadiness cockpit renders only derived status/counts and command names; it does not render evidence paths, artifact paths, backup IDs, storage locations, raw summaries, provider material, database URLs, owner keys, CSRF tokens, raw logs, IPs, or user-agent data. Keep raw smoke logs, recovery keys, owner keys, database URLs, provider secrets, and raw access logs outside the repository.- The backup manifest and custody ledgers are metadata-only. The restore-drill plan binds the drill checklist to the selected backup ID and preflight checks, but only a completed isolated drill proves decryptability, offsite provider availability, and restore success.