Skip to content

v1.2.0 — disaster recovery

Latest

Choose a tag to compare

@Holo795 Holo795 released this 03 Jul 18:59

Adds a complete disaster-recovery story: CBM now backs up its own metadata, hands you a portable recovery file, and can restore your resources onto a fresh or different Coolify — even when the source Coolify is gone. The controller applies two new migrations automatically on start; no breaking changes.

Added

  • Metadata self-backup. The controller keeps an always-current, encrypted pg_dump of its own database on an off-site destination (S3 or SSH) as a single overwritten artefact — change-driven and throttled, with a daily safety run and failure/overdue alerts. Configure it in Settings → Disaster recovery.
  • Portable recovery file. A reveal-once, password-gated download that carries the master key and the location of your latest self-backup. Import it on a fresh install to rebuild CBM: it fetches the latest metadata and re-encrypts every secret under the new master key. A Verify recovery path drill proves the backup is recoverable without a restore.
  • Restore onto a fresh or different Coolify. Snapshots now capture the full resource definition (git/build pack, image, compose, domains, database credentials), so Restore → new works even when the source Coolify is gone: it recreates the missing projects/environments, remaps the target server, and re-injects the config. When several instances are connected, a Restore onto picker clones a backup onto another Coolify (migration).
  • Re-point an instance in place (edit its URL + API token) to redirect every snapshot to a new Coolify, plus a per-instance multi-server restore map. See docs/disaster-recovery.md.
  • Disaster recovery shortcut in the command palette.

Fixed / hardened

  • The invitation signup gate now closes ~10 minutes after a link is opened (it was open for the invite's full 48h), so an intercepted-then-abandoned claim can't be used later.
  • Documented the single-replica scheduler and added a Postgres advisory-lock backstop, so an accidental second controller replica doesn't double-fire schedules.

Upgrading

  • The controller applies migrations 0016 and 0017 automatically on start — no breaking changes. The controller image now bundles the PostgreSQL client used by the self-backup and recovery. Run exactly one controller replica. Pull the new images below (or :latest).

Images

Published to the GitHub Container Registry — also tagged :1.2 and :latest:

docker pull ghcr.io/holo795/cbm-controller:1.2.0
docker pull ghcr.io/holo795/cbm-agent:1.2.0