Runbook: disaster recovery
The shops follow the platform-wide plan in the Keferboeck KB (docs.keferboeck.com → Runbooks → Disaster recovery); this page is the shop-specific delta.
- Backups: every shop database (
hampers,joinery,marlowfinch,wagwhisker,flugschule) is dumped nightly at 03:30 UTC to Spaces (keferboeck/db-backups/), 14 days retention, deliberately before the 04:15 demo reset. - Restore one shop: fetch the dump,
kamal app stopin that shop's directory, restore into<shop>-db,kamal app boot. Demo data can alternatively be rebuilt from scratch withbin/rails demo:reset_catalogue— for a pure demo, a reseed is often the faster recovery. - Droplet loss:
kamal setupper shop directory after the platform DNS and proxy steps; then either restore dumps or reseed. Shops are stateless beyond their database and generated images; images regenerate from the committed briefs via the FLUX pipeline. - What actually matters: the newsletter leads live in the portal, not the shops, so a total shop loss loses no client data.