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-backupfolder) - [ ] Run
st-failover.shdry-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.shwritten 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.shwith secondary online): open — secondary needs~/mirror/kube3-scenario1-testcleared 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.shon 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