Files
janssen/claude-memory/project_seaweedfs_offsite.md
2026-06-16 19:38:48 +02:00

3.5 KiB

name, description, metadata
name description metadata
project-seaweedfs-offsite Offsite záloha SeaweedFS blobů na Synology DS213+ v ordinaci — NAS si tahá rsync přes MikroTik na Tower1 .50 FUSE mount; postaveno 2026-06-14/15, runbook v Triliu
node_type type originSessionId
memory project a121e6b4-5ecf-4cb2-87e5-328fd3488630

Offsite záloha SeaweedFS příloh (viz project-seaweedfs) na staré Synology DS213+ v ordinaci. Postaveno v noci 2026-06-14→15 koordinací dvou instancí Claude přes sdílenou Trilium note (HQ = doma u Tower1, ORDINACE = na Lenovu v ordinaci). První plný mirror ~50 GiB / ~109k souborů, 0 mismatchů (sha256==jméno).

Datová cesta (NAS si tahá sám, „pull"): Synology .40 (ordinace) ──ssh -p2250──> 78.80.38.51 (domácí WAN, PPPoE pevná) ──MikroTik NAT──> Tower1 192.168.1.50:22 ──> /mnt/seaweedfuse (FUSE RO)

  • Zdroj .50: read-only FUSE mount celého fileru /mnt/seaweedfuse (weed mount, /topics skryté). Persistence: /boot/config/seaweed-mount.sh (volá se bash, protože /boot je VFAT noexec) + watchdog cron /boot/config/plugins/dynamix/seaweed-fuse.cron á 5 min + hook v /boot/config/go. weed binárka zkopírovaná z kontejneru do /usr/local/sbin/weed.
  • MikroTik (192.168.1.2, admin): NAT dstnat WAN:2250 → 192.168.1.50:22 (src-address-list=ordinace), filter forward accept ordinace→.50:22. Oddělené od Medicus rsyncu (ten je 2299→.76). Address-list ordinace = 78.44.195.114 (MySQL/eRecept) + 185.140.244.138 (Synology rsync).
  • Cíl Synology DS213+ „synologymaly" (192.168.1.40, DSM 6.2.4, PPC, ext4): /volume1/SeaweedFS-offsite. NAS dělá rsync -a --partial aditivně, BEZ --delete (immutable content-addressed bloby → bezpečný narůstající archiv). Žádné Hyper Backup (rozhodnutí majitele). Docker/Tailscale/rclone na PPC nejdou — proto plain rsync-over-ssh.
  • Auth: klíč swbackup (ed25519, na NASu /root/.ssh/swbackup), autorizován na .50 root s forced-command wrapperem /boot/config/ssh/swbackup-rsync.sh (pustí jen read-only rsync --server --sender).
  • Plán: běží přes /etc/crontab (0 4 * * * root sh /volume1/SeaweedFS-offsite/_sync.sh) — DSM Task Scheduler na téhle DSM nešel čistě (chybí v PATH); crond se restartuje přes /usr/syno/sbin/synoservicecfg --restart crond. Záloha původního crontabu /etc/crontab.bak_swoffsite. Sync skript: rsync -a --partial --stats --timeout=300, PID-lock /tmp/swoffsite.lock, log _sync.log, known_hosts_sw. Při rc!=0 pošle mail, při úspěchu mlčí.
  • Monitoring: e-mail varianta A = NAS posílá sám přes mailer /root/swoffsite_mailer.py (root, chmod 700). POZOR: klinická knihovna EmailMessagingGraph.py jede přes Microsoft Graph (OAuth client-cred, sender reports@buzalka.cz), NE SMTP — proto mailer napsán čistě ve stdlib Pythonu (urllib/json/ssl, žádný pip; msal/requests na PPC DSM 6.2 nejdou). Alert na vladimir.buzalka@buzalka.cz při chybě. Otestováno (status 202).
  • Restore (Fáze 5) ověřen: 3 bloby vytaženy mimo strom, sha256(obsah)==název → záloha čitelná i bez SeaweedFS. Projekt KOMPLETNÍ 2026-06-15.

Kompletní runbook (přístupy, provozní úkony, restore, troubleshooting): Trilium note „OrdinaceOffsiteBackupSeaWeedFS — RUNBOOK". Komunikační kanál mezi instancemi: Trilium note OrdinaceOffsiteBackupSeaWeedFS (noteId Gh5wzhrjTlv8). Viz setup-memory-sync princip — Trilium note jako async kanál mezi dvěma Claude.