Production deploy
The long form is splick-backend/docs/deploy-production.md. This page is the map. It names steps and files. It does not copy hostnames, passwords, or key paths.
One-time on the operator machine
Docker, JDK 21, deploy.env, .env.prod, and an SSH key to the VPS. Cloudflare DNS A records for api and grafana point at the VPS. SSL mode in front of the VPS is the Cloudflare setting already chosen for that zone (the runbook describes Flexible to the origin). Confirm the current mode in Cloudflare before you change it.
Cases
| Case | Sequence |
|---|---|
| Fresh VM | manage.sh mac-sync, on the VPS setup-new, then mac-deploy, then verify |
| Snapshot restore | Update IP and DNS, mac-sync, setup-snapshot, deploy, verify |
| IP replace | Update Cloudflare and SPLICK_SERVER, sync, setup, deploy, verify, optional WAL-G restore from R2 |
| Daily release | make manage-local release (publish images and deploy) or manage.sh deploy on the VPS |
After deploy
verify checks health. Watch HighErrorRate5xx and OutboxLagHigh for 15 minutes. A schema migration that fails Flyway stops that service; fix forward with a new migration, do not edit a shipped version.
Ops shell on the VPS is make manage-remote. Monitoring comes up when ENABLE_MONITORING is enabled. Backups: manage.sh backup.
Website and mobile store binaries do not redeploy when only the API VM changes.