Skip to content

Scenario 1 — Syncthing 3-Node Backup

Goal: All data on the source is continuously backed up to two independent nodes — one encrypted cloud relay (untrusted), one local hot spare (plaintext mirror).

Status: in progress

Bricks used

Topology

source-host (source)
    │
    ├──[receiveencrypted]──► <relay-ip> (Hetzner relay, Docker)
    │                          /mnt/st-data  (200 GB volume)
    │
    └──[receiveonly]────────► secondary-host (hot spare notebook)
                               ~/mirror/<original-path>

Nodes

Role Host Details
Source source-host Primary; all data originates here
Relay <relay-ip> Hetzner VPS; Docker; untrusted; encrypted blobs only
Secondary secondary-host Notebook; hot spare; full plaintext mirror

Setup checklist

  • [ ] Install Syncthing on source and secondary
  • [ ] Run Syncthing in Docker on relay
  • [ ] Mount 200 GB data volume on relay at /mnt/st-data
  • [ ] Pair all three devices (exchange Device IDs)
  • [ ] Wire all source folders to relay (receiveencrypted) — set encryption password per folder
  • [ ] Wire all source folders to secondary (receiveonly) at ~/mirror/<path>
  • [ ] Enable staggered versioning on secondary
  • [ ] Set up config backup (export timer + st-config-backup folder)
  • [ ] Run st-failover.sh dry-run on secondary

Current state

  • 41/41 source folders wired to relay (receiveencrypted) ✓
  • 41/41 source folders wired to secondary (receiveonly) ✓
  • Bulk wire script completed; state file: ~/.local/state/st-bulk-wire.done
  • Config backup export running every 15 min via st-config-export.timer
  • st-failover.sh written and dry-run tested on secondary ✓

Test run status (2026-05-16):

  • Phases 1–3 (wiring, sync, source loss simulation): completed ✓
  • Phase 4 (failover via st-failover.sh with secondary online): open — secondary needs ~/mirror/kube3-scenario1-test cleared before rerun
  • Phases 5–6 (relay restore, resync): not yet run

Full test protocol to be added after Phase 4 rerun.

Test checklist

  • [ ] Simulate source going offline — verify secondary has all files
  • [ ] Run st-failover.sh on secondary — verify it becomes send+receive
  • [ ] Restore from relay: decrypt a folder using the encryption password on a clean machine
  • [ ] Rebuild source from scratch using reproduce-host
  • [ ] Re-pair rebuilt source with relay and secondary — verify resync completes

Notes

  • Relay Device ID: U2J25J6-FNFGAST-NMNXP4X-DGRRM5L-NSM35EX-75XCFAY-5YOK2DP-TEJC5QX
  • Secondary Device ID: BRKXCVM-74J5YZW-626KTHZ-TUMUT2Z-W2XTMMM-POB6GXY-4ECPP6T-ZZIM2QQ
  • Secondary known hosts: <secondary-ip> (home), <secondary-ip> (other location)

← 1 ask People what might be necessary id_tfamnc · Workshop with B1 →

tf5-7hn · v2026-05-16 · Export created: 2026-06-11 15:08 UTC