feat(nas): pull-based offsite backup of Immich to local NAS #180

Open
opened 2026-06-26 14:14:30 +02:00 by dominik.polakovics · 0 comments

Goal (future — needs a design pass)

Add a third copy of the Immich data on the local NAS, off-Hetzner, for real 3-2-1 backup hygiene. Today the Immich originals live on the Hetzner Storage Box (sub12, snapshot-protected) and the DB is dumped to borg — both on Hetzner. The NAS copy gives provider/geographic diversity.

Hard constraint

  • The nas host idles powered-off (ADR 0008), so a push from web-arm would hit a dead host. The design must be pull-from-NAS-when-awake.

Sketch (to refine during triage)

  • When the NAS is awake (scheduled or manual), it pulls:
    • Originals from the Storage Box sub12 share directly (Hetzner Storage Boxes expose SSH/rsync/borg) — no need to involve web-arm.
    • Immich DB dump from web-arm's /var/backup/postgresql (or its borg repo).
  • Decide: tool (restic / borg / rsync), schedule + wake mechanism (WoL?), retention, and whether DB↔originals point-in-time consistency matters (Immich reconciles on restore, so loose consistency is acceptable).

Out of scope

  • Does not block Immich deploy or the Nextcloud→Immich migration.

Filed as needs-triage: the shape is sketched but the tool/schedule/wake design is open.

## Goal (future — needs a design pass) Add a **third copy** of the Immich data on the local **NAS**, off-Hetzner, for real 3-2-1 backup hygiene. Today the Immich originals live on the Hetzner Storage Box (`sub12`, snapshot-protected) and the DB is dumped to borg — **both on Hetzner**. The NAS copy gives provider/geographic diversity. ## Hard constraint - The `nas` host idles **powered-off** (ADR 0008), so a push from web-arm would hit a dead host. The design must be **pull-from-NAS-when-awake**. ## Sketch (to refine during triage) - When the NAS is awake (scheduled or manual), it pulls: - **Originals** from the Storage Box `sub12` share directly (Hetzner Storage Boxes expose SSH/rsync/borg) — no need to involve web-arm. - **Immich DB dump** from web-arm's `/var/backup/postgresql` (or its borg repo). - Decide: tool (restic / borg / rsync), schedule + wake mechanism (WoL?), retention, and whether DB↔originals point-in-time consistency matters (Immich reconciles on restore, so loose consistency is acceptable). ## Out of scope - Does **not** block Immich deploy or the Nextcloud→Immich migration. _Filed as `needs-triage`: the shape is sketched but the tool/schedule/wake design is open._
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Cloonar/nixos#180
No description provided.