Merge remote-tracking branch 'origin/master'
This commit is contained in:
@@ -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,
|
||||||
|
|||||||
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
@@ -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.
|
||||||
Reference in New Issue
Block a user