This commit is contained in:
2026-06-16 19:38:48 +02:00
parent ed6455787a
commit 42c42688de
3 changed files with 25 additions and 1 deletions
+1 -1
View File
@@ -264,7 +264,7 @@ def search(
LIMIT %(limit)s LIMIT %(limit)s
""" """
params = { params = {
"query": query, "mboxes": mboxes, "query": tsq_text, "mboxes": mboxes,
"since": since_dt, "until": until_dt, "since": since_dt, "until": until_dt,
"folder": folder_contains, "folder": folder_contains,
"folder_like": f"%{folder_contains}%" if folder_contains else None, "folder_like": f"%{folder_contains}%" if folder_contains else None,
+1
View File
@@ -17,3 +17,4 @@
- [Claude Code learning path](project_claude_learning.md) — Level 2 Intermediate, mezery: Skills/Subagenty/Hooks/Print mode, tutoriál v `claude-howto/` - [Claude Code learning path](project_claude_learning.md) — Level 2 Intermediate, mezery: Skills/Subagenty/Hooks/Print mode, tutoriál v `claude-howto/`
- [Admin PowerShell nefunguje](feedback_admin_powershell.md) — příkazy vyžadující admin práva rovnou napsat uživateli, nezkoušet alternativy - [Admin PowerShell nefunguje](feedback_admin_powershell.md) — příkazy vyžadující admin práva rovnou napsat uživateli, nezkoušet alternativy
- [SeaweedFS na Tower1](project_seaweedfs.md) — kontejner na .50 (bloby na array, metadata SSD), noční backup filer metadat na tower .76, retence 7+4 - [SeaweedFS na Tower1](project_seaweedfs.md) — kontejner na .50 (bloby na array, metadata SSD), noční backup filer metadat na tower .76, retence 7+4
- [SeaweedFS offsite záloha](project_seaweedfs_offsite.md) — offsite na Synology DS213+ v ordinaci; NAS-pull rsync přes MikroTik 2250→.50 FUSE mount; ~50 GiB ověřeno; runbook v Triliu
@@ -0,0 +1,23 @@
---
name: project-seaweedfs-offsite
description: "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"
metadata:
node_type: memory
type: project
originSessionId: 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.