diff --git a/projects/business/memory/infrastructure.md b/projects/business/memory/infrastructure.md index 1f4d0a9..75949ef 100644 --- a/projects/business/memory/infrastructure.md +++ b/projects/business/memory/infrastructure.md @@ -135,7 +135,7 @@ Config in `/home/openclaw/.ssh/config`: ## Backup Strategy (TO IMPLEMENT) -### Current State: ❌ NO BACKUPS +### Current State: ✅ OPERATIONAL (since 2026-02-19) ### Plan: Borg to Hetzner Storage Box @@ -179,7 +179,7 @@ Target: `u149513-sub11@u149513-sub11.your-backup.de:23` (already set up, SSH key ## Future Improvements ### Priority: High -- [ ] **Implement Borg backup** (see above) — ZERO backups currently +- [x] **Implement Borg backup** — operational since 2026-02-19 (DB every 6h, full daily at 03:00 UTC) - [ ] **DNS: staging.docfast.dev** → 46.225.37.135 — needed for staging ingress TLS - [ ] **Persist HA spread constraints** — CoreDNS scale, CNPG operator replicas, pooler anti-affinity are runtime patches. Need infra-as-code (manifests in Git) to survive K3s upgrades/reinstalls - [ ] **Decommission old server** (167.235.156.214) — still running, no longer serves traffic. Stop Docker, delete VM, save €4.5/mo diff --git a/skills/k3s-infra/SKILL.md b/skills/k3s-infra/SKILL.md index d0a789f..0d03dca 100644 --- a/skills/k3s-infra/SKILL.md +++ b/skills/k3s-infra/SKILL.md @@ -151,21 +151,40 @@ kubectl exec -n postgres -c postgres -- psql -U docfast -d < dump.sql` +5. Update DNS to new LB IP +6. Estimated recovery time: ~15-30 minutes + +**Verify backup:** +```bash +ssh k3s-mgr 'export BORG_RSH="ssh -p23"; export BORG_PASSPHRASE=$(cat /root/.borg-passphrase); borg list ssh://u149513-sub10@u149513-sub10.your-backup.de/./k3s-db' +``` ## Common Operations