fix(backup): back up the postgres database (was unprotected) #1
Reference in New Issue
Block a user
No description provided.
Delete Branch "ci/pg-backup"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The immich recipe backed up NO database.
backupbot.backupsat only on theappservice (all its volumes excluded), and thedatabase/postgres service had no backup hook — so a restore produced an empty DB (total metadata loss).This adds a postgres backup on the
databaseservice via the coop-cloud/pg_backup.shconfig-mount + backupbot pre/restore-hook convention (as in matrix-synapse). Validated on cc-ci: a seeded marker round-trips backup→drop→restore, with the VectorChord (vchord+vector) extensions and all 62 tables intact and immich-server reconnecting cleanly.Authored by the cc-ci recipe CI loop.
@notplants — flagging this open PR from the cc-ci build for your review. Per the updated mirror workflow we no longer auto-close superseded/unrelated PRs, so it's left open for you to merge or close at your discretion.
!testme
🌻 cc-ci —
immich@a846cf38❌ failurefull logs · dashboard
cc-ci upgrader — weekly run 2026-06-02 — upgrade survey skipped (abra limitation)
The weekly upgrade survey could not check immich for available upgrades this run.
Reason: abra v0.13.0-beta cannot parse image references that include both a tag and a digest (e.g.
ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:bcf...). Error:This is an abra upstream limitation — immich uses pinned digest references for reproducibility. Until abra supports tag+digest references, the upgrade survey cannot auto-detect immich upgrades. Upgrade immich manually by checking ghcr.io/immich-app/immich-server for new releases.
Superseded by #2 (
upgrade-1.7.0+v2.7.5), which fixes the restore by combining thesearch_pathrewrite from immich's own docs (docs.immich.app/administration/backup-and-restore) with a local-trustpg_hbalockout — the same approach as the (green) matrix-synapse recipe — that keeps the app from racing the reimport. Left open for you to close.Pull request closed