diff --git a/task-75-nas2-token-fix-2026-07-23.md b/task-75-nas2-token-fix-2026-07-23.md new file mode 100644 index 0000000..4b8e3a2 --- /dev/null +++ b/task-75-nas2-token-fix-2026-07-23.md @@ -0,0 +1,61 @@ +# Task #75 — nas2 auf toten Matrix-Token geprüft und repariert (2026-07-23) + +Nachtrag zu Task #70: nas2 (Synology, 100.111.0.111) war beim Hub-Fix per root-SSH nicht +erreichbar, deshalb dort NICHT geprüft. Zugang geht nur per `ssh admin@100.111.0.111` +(kein root), siehe Skill `tailscale-admin`. + +## Befund + +Systemweite Suche (`grep -r` über `/volume1/docker/`, `/volume1/homes/`, Crontab) nach +`syt_aGVybWVz`, `matrix`, `hermes`, `koerners.org` fand **zwei** Stellen mit dem exakt +gleichen toten Hermes-Token aus Task #70 (`syt_aGVybWVz_pGkHRNGFSJJhRSAtCpnz_1Bgdx2`, +401 M_UNKNOWN_TOKEN) — beide unabhängig vom Hub-Fix, da nie synchronisiert: + +1. `/volume1/docker/shadow-refresh/scripts/shadow/shadow_controller.py` + (läuft im Docker-Container `shadow-refresh`, `_send_matrix_alert()`) +2. `/volume1/homes/admin/shadow_alarm.py` + (läuft direkt per Synology-Crontab alle 2h als `admin`: `0 */2 * * * admin /usr/bin/python3 /volume1/homes/admin/shadow_alarm.py`) + +Beide hatten zusätzlich den gleichen verwaisten Alarm-Raum wie in Task #70 gefunden: +`!bYMaQYlFbFfQGDmktu:matrix.consoro.eu` — mit dem neuen Hermes-Token per `joined_rooms`-Check +verifiziert: Hermes ist dort **nicht** Mitglied (nur in `!wRgSkVkLNpGzehtWie:matrix.koerners.org` +und `!whhWWnaOUNyVnhHwAV:matrix.koerners.org`). Ein reiner Token-Tausch hätte also weiterhin +mit `M_FORBIDDEN` fehlgeschlagen. + +`matrix.consoro.eu` und `matrix.koerners.org` sind derselbe Synapse-Host (identische IP, +185.242.114.9) — nur der Hostname im Code war veraltet. + +## Fix + +In beiden Dateien: +- `MATRIX_TOKEN` → aktueller Hermes-Token (`/opt/mcp-server/secrets/credentials.json` → + `matrix_hermes_token`, Vaultwarden "Matrix Bot Token (@hermes:matrix.koerners.org)") +- Raum → `!wRgSkVkLNpGzehtWie:matrix.koerners.org` (derselbe verifizierte Alert-Raum wie + Task #70 / `Post-ToMatrix.ps1`) +- Hostname `matrix.consoro.eu` → `matrix.koerners.org` in den API-URLs + +**Backups (reversibel, nichts gelöscht):** +- `/volume1/docker/shadow-refresh/scripts/shadow/shadow_controller.py.bak-20260723-224534-tokenfix` +- `/volume1/homes/admin/shadow_alarm.py.bak-20260723-224534-tokenfix` + +Stale `__pycache__`-Datei mit altem Token-Bytecode gelöscht +(`shadow_controller.cpython-310.pyc`), wird beim nächsten Lauf neu kompiliert. + +## Beleg (echter Testpost von nas2 aus, mit dem exakten Code-Pfad aus `shadow_alarm.py`) + +``` +HTTP 200 {"event_id":"$rd7kC0HqU7gyAwY0JASd9FrLmL3ZD-ZbSjEcjBx8LWE"} +``` +Nachricht im Raum `!wRgSkVkLNpGzehtWie:matrix.koerners.org`: "Testpost #75: nas2 +shadow_controller.py + shadow_alarm.py auf neuen Matrix-Token umgestellt (alter toter +syt_aGVybWVz_pGkHR... Token war 401). Beleg-Post." + +## Nicht geprüfte/irrelevante Treffer +Weitere Grep-Treffer auf "matrix" in `/volume1/docker/` waren False-Positives (node_modules +von homebridge/Home Assistant, Wortbestandteil in Libraries wie `luxon.js`) — kein Bezug zu +Matrix-Chat/Hermes. `/volume1/homes/admin/shadow_refresh.py` (separates Cron-Skript, auch +alle Nacht 03:00) hat keinen Matrix-Bezug, nur Token-Refresh. + +## Doku-Verteilung +Dieser Eintrag nach Forgejo (`barby/hermes-erkenntnisse`) gepusht und nach Obsidian +(`/volume1/Obsidian/Wissen/`) auf nas2 kopiert.