Commit Graph

92 Commits

Author SHA1 Message Date
84103acdb7 docs 🩹 TP16.1: ICMP-Proxy-Korrektur (war schon AN, fm-Ping 10.101.0.0/24 beweist es)
Fehlschluss revidiert: ICMP-Häkchen ist Dashboard-only (nicht im API-Spec),
aber aktiv — belegt durch funktionierenden Ping ins FM-Netz. Kein To-Do.
bf-Ping-Verlust im Incident lag an QUIC-losen macmini-Connectoren (post-http2),
nicht am Flag. Re-Check trotzdem nach Scharfschalten (§4.5).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-17 07:47:26 +02:00
97e2d9c354 docs 🔎 TP16.1: Recherche verifiziert + Runbook gehärtet (Mesh-Rebranding, ICMP-Proxy-Prereq, vnet-Gotcha, v4-only)
Primärquellen (animmouse Mesh-on-MikroTik + wgcf-connector) und offizielle
CF-Docs/OpenAPI-Spec gegengelesen — Lead bestätigt, 6 Härtungen eingearbeitet:

- Produkt seit 2026-04-14 offiziell 'Cloudflare Mesh' (API bleibt /warp_connector,
  im Spec bestätigt inkl. Token- und HA-Endpoints; Node-Limit 50/Account)
- NEU: ICMP-Proxy-Prerequisite — Dashboard-only (nicht im API-Spec), 1 Klick
  Traffic settings→Proxy→ICMP, sonst bleibt das Abnahmekriterium Ping tot
- Split-Tunnel-Exclude auf BEIDEN Device-Profilen (Default + Mesh)
- vnet-Gotcha beim Route-Umzug ('virtual networks only for cloudflared') →
  Weg A PATCH / Weg B DELETE+POST; CF-API-Writes sind WARP-unabhängig (Rollback safe)
- v4-only-Entscheid (Mesh-IPv6-site-to-site laut Guide broken, kein NAT66)
- keepalive 1m ok, .conf-Inhalte präzisiert (IPv6+DNS ignorieren)

Runbook ausführungsreif für die Delegations-Session.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-17 06:07:13 +02:00
d52cf16e0b docs 📋 TP16.1: Konzept+Runbook Private Access via native Cloudflare Mesh (WireGuard) auf ap1
Incident-Nachgang 2026-07-16: ICMP über den cloudflared-WARP-Pfad ist strukturell
kaputt (TCP ok überall, Ping fm 36%/bf 100%/dw 100% Loss) — cloudflared ist ein
QUIC-L7-Proxy, kein WireGuard. Richtungsentscheid: Private Access (unterwegs ->
10.40.0.0/16 inkl. ICMP) wandert vom cloudflared-Proxy auf einen nativen
Cloudflare-Mesh-Node (WireGuard) auf ap1 -- kein Container/TUN/LXC/neue HW
(RouterOS-Container haben kein /dev/net/tun -> hAP ax3 löst es nicht, zudem WiFi6).
Public-FQDNs bleiben unverändert auf dem cloudflared-3-Tunnel-HA.

- Neu: docs/tp16.1-warp-mesh-native-ap1.md (Konzept + vollständiges Runbook +
  gemessener Account-Ist-Stand, Team emsenhuber.cloudflareaccess.com)
- cf-tunnel-mapping.md §13: ICMP-Dreiländer-Befund; "bf-pve wegen USV" REVIDIERT
  (Begründung invertiert -- bf-pve-Connectoren laufen auf NAS+macmini, nicht pve)
- cf-tunnel-mapping.md §14 + teilprojekte.md TP16.1: Richtungsentscheid dokumentiert

Scharfschalten = eigene Session (CF-Prereqs sind account-weit, treffen Live-WARP).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-16 22:10:00 +02:00
1c1a6763a9 docs 🔧 TP16: macmini-cloudflared QUIC-Flap gefixt (http2), WARP-Route bewusst auf bf-pve (USV)
Incident 2026-07-16: User unterwegs, keine BF-IPs mehr über WARP. Root Cause:
cloudflared-bfnas/-bfpve auf macmini flappten unter QUIC/UDP (Docker-Desktop-
Bridge-NAT) -> bf-nas/bf-pve von 2 auf 1 Connector degradiert. Fix: beide auf
TUNNEL_TRANSPORT_PROTOCOL=http2 umgestellt, rollend, wieder volle HA.

Nebenbefund per Audit-Log: User hatte die WARP-Private-Network-Route selbst
neu angelegt, zeigt jetzt auf bf-pve statt bf-nas. Bewusst so belassen -
pve ist USV-gepuffert, NAS/macmini nicht. cf-tunnel-mapping.md §11 damit
überholt, §13 als neue Baseline.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-16 13:59:28 +02:00
3cfab1d5bd docs 🚀 TP20+TP21 live: Platform-Postgres (pve) + Nautobot-Stack (NAS), sw2 final auf .99.12
TP20: Postgres-16-LXC (105, pve, 10.40.20.20) provisioniert, UTF8/en_US.UTF-8,
wal_level=replica, DB+Rolle nautobot angelegt, End-to-End verifiziert. archive_mode
bewusst noch aus bis TP18/pgBackRest steht.

TP21: Nautobot-Stack (ghcr.io/nautobot/nautobot:3.1.7) als Portainer-Stack auf NAS
live (App+Worker+Scheduler+Redis), DB=platform-pg, API-Smoke-Test grün. Healthcheck-
gated Worker/Scheduler-Start ergänzt (Migration-Race-Condition beim Erstboot gefixt).

TP19.1: sw2 jetzt final auf 10.40.99.12 (statisch) — Christoph über Klickanleitung.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-16 11:29:03 +02:00
9611d47ef3 docs 🧭 Governance „Config nur via Nautobot" + TP19.1-Stand (ap1-DNS ✅, ap2 vertagt), sw2-IP-Korrektur .41.181, VLAN99-Cutover-Guides sw1/sw2, TP15-Lieferung 17.07., TP20 an Komodo gebunden
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-16 09:58:09 +02:00
c25f7ea512 docs ✅ TP2.1 fertig + TP19 Live-Sweep: VLAN1 fast leer, Omada-Controller gelöscht
TP2.1 (sw2-Standalone-Recovery) von Christoph solo abgeschlossen. TP19-Live-Sweep
auf ap1 zeigt VLAN1 schon viel weiter zurückgebaut als dokumentiert (defconf-DHCP
bereits disabled, cudy1→VLAN10 umgenutzt, cudy2 tot) → neuer Unterpunkt TP19.1 für
den VLAN99-MGMT-Cutover. TP14.1-Rest obsolet (kein Omada-Re-Adopt mehr), TP14.3
DNS-Sweep fertig (nas/docker-Records auf ap1 korrigiert, omada/omada-mcp/fritzbox-
Records entfernt, da Controller von Christoph komplett gelöscht wurde). RouterOS-
Config-Backups (enthalten Live-WiFi-Passphrasen) neu gitignored.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-16 09:17:28 +02:00
fbf5500715 docs 🚨 TP3.1: ap1-VLAN1-Leak (dirtyvader-main) + TP19 hochgestuft, Runbook
dirtyvader-main-Clients bekommen zeitweise VLAN1-IPs (10.40.41.x) statt
VLAN10 — gleiches Dual-DHCP-Race-Muster wie beim ap2-Fix (TP3.1,
2026-07-06), aber die admit-only-vlan-tagged-Härtung fehlt bisher auf ap1.

Zwei-Phasen-Runbook angelegt: Phase A (TP3.1-Scope, Akutfix ap1) vor
Phase B (TP19-Scope, voller VLAN1+cudy-Teardown, macht Phase A obsolet).
TP19 auf hochdringlich gesetzt, da VLAN1 jetzt ein aktiver Bug ist statt
nur Cleanup.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-15 01:19:15 +02:00
6661fd5365 docs 🔧 TP2.1: Omada-Switch Standalone-Recovery + TP15-Korrektur (Omada raus)
sw2-Controller-Link brach beim VLAN20-Umzug (TP14.1), Werks-Reset beim
Rettungsversuch, fehlerhafte Wiederherstellung — Controller-Zustand jetzt
invalid. sw2 wird ohne Managementsoftware neu aufgesetzt (TP2 als Playbook,
neue Portbelegung offen). TP15 korrigiert: Omada bekommt keine Rolle mehr,
auch nicht WLAN (bleibt bei hAP ax²/CAPsMAN) — reines MikroTik-Ecosystem.
TP19-Update: Shelly wieder da, SwitchBot-Move erst nach VLAN1-Retirement.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-15 01:00:28 +02:00
8bd790b6d6 docs 🔀 TP15: CSS326→CRS326 (RouterOS/in-model) + TP20.1 Vaultwarden ausgelagert
- Switches: CSS326-Fehlbestellung storniert, 2x CRS326-24G-2S+RM bestellt → RouterOS-fähig, damit in MikroMCP + Nautobot Golden Config (in-model statt SwOS-Insel). Kein PoE → EAP via Injektor.
- TP21 Scope-Grenze: Golden Config deckt jetzt Router + beide CRS-Switches (ganzer Kabel-Fabric); außerhalb nur noch Omada-WLAN.
- TP20.1 neu: Vaultwarden MariaDB→PG-Migration + Cross-Site-2-Site-HA aus TP20 ausgelagert (User-Wunsch). TP20 = reine Plattform (Cluster/Tiering/Backup/Nautobot-DB).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-14 20:34:42 +02:00
2069c17406 docs 🧭 TP15 neu ausgerichtet + TP20/TP21: MikroTik-Ecosystem-Commit, Platform-Postgres, Nautobot Golden Config
Grundsatzentscheid 2026-07-14 (Christoph):
- Ecosystem-Split nach Layer: MikroTik = Kabel+Routing (CAKE=Ziel #1), Omada = nur WLAN.
- TP15: 2x CSS326-24G-2S+RM im Zulauf (SwOS-only → nicht in MikroMCP/Nautobot; kein PoE → EAP via Injektor; CRS-Swap-Flag offen). WLAN→Omada-EAP, Router→RB5009. A/B/C/D-Varianten = Archiv.
- TP20 Platform-DB: 2-Tier (Postgres precious = Nautobot+Vaultwarden; MariaDB Tier-2 = HA-Recorder). Single-site-first, replication-ready (WAL/pgBackRest→Garage-S3). Vaultwarden migriert MariaDB→PG.
- TP21 Nautobot Golden Config als config-as-code Control-Plane über RouterOS (ergänzt MikroMCP), Git-Backend→Gitea, DB→TP20.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-14 18:14:21 +02:00
3426366cee chore 🔌 gitea-mcp in .mcp.json registriert + TP17 Shelly-Migrationslog (16 Geräte VLAN1→VLAN30)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13 19:58:37 +02:00
2135772e04 feat 🔌 TP17 GO: 16 Shellys VLAN1→VLAN30 (Anker-Verfahren) + eco-Policy; TP17.2/TP19 angelegt
- migrate.py: anker-sicherer Runner (AP-Anker vor sta-Write, deanchor, auth, table)
- 16 Shellys migriert (Pilot+2 Wellen), 22/26 auf VLAN30, VLAN1 shelly-frei
- eco-Policy RSSI-basiert (AN >= -80, AUS < -80), provisorisch bis TP3.3
- bf.csv: 22 Shelly-Zeilen .41→.30, Section→IOT
- TP17.2 (Geräte-PW, zurückgestellt/Kosmetik) + TP19 (cudy-Teardown + VLAN1-Retirement) angelegt
- Verlorene Küchen-Shelly via HA identifiziert (Plug S Gen3, e4:b0:63:e4:1a:b8, bogus-IP 10.95.10.206 auf elektrosmog.c) → Remote-Recovery-Plan in TP19

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13 17:27:56 +02:00
850f0c7560 feat 🔀 TP14 komplett: pve-Host-Mgmt VLAN1→VLAN20 (letzter Host-Umzug)
vmbr0.20 (kaputte Netzadresse statt Host-IP) auf 10.40.20.100/24 korrigiert,
Default-GW live geflippt (ifreload -a, kein Reboot). CF-Ingress bf-pve
(pve/j44d6tua-ssh) + ap1-DNS nachgezogen; dabei Alt-Bug gefunden und gefixt
(pve-mcp.bf.lan zeigte noch auf .41.173 statt .20.173).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-13 09:36:44 +02:00
17c8fd0d24 docs 📄 TP16: bf-nas als eigener Tunnel nachgezogen (Legacy-Monolith gelöscht) + hass-400 präzisiert
- bf-nas neu = 220c9958 (frisch, config_src=cloudflare); Ingress 1:1, 8 CNAMEs
  umgebogen, 2 Connectoren (pve host-net / macmini bridge).
- WARP-Route 10.40.0.0/16 via PATCH teamnet/routes tunnel_id umgezogen
  (sonst DELETE-Block 1023 "private network routes").
- Legacy 70d6a4cf/bf.emsenhuber.net GELÖSCHT; .env CF_BF_TUNNEL_ID aktualisiert.
- Writes nur via CF_API_TOKEN (CF-MCP OAuth = read-only).
- hass-400 = rein Origin-Layer (hass/vw/gitea sind bypass): HA trusted_proxies
  fehlt .20.10/.20.167 → use_x_forwarded_for + IPs + Restart (user-gated, kein SSH).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-12 20:36:37 +02:00
b23ce62828 docs 🗄️ TP18: souveräner Objektspeicher (Garage Multi-Site, S3-Cold-Tier)
Neuer TP-Konzeptstand aus der Storage-Skalierungs-Diskussion: selbst
gehosteter, geo-verteilter S3-Objektspeicher (Garage) über BF/FM/DW als
Cold-Tier — statt Cloud oder größerem Einzel-NAS.

Kernentscheide festgehalten: Engine=Garage (WAN-tolerant; Ceph/MinIO/
SeaweedFS als Fallback begründet), Disk-Layout=JBOD statt RAID
(Redundanz nur über Sites, RF=3), Variante kalt=Objektspeicher/heiß=
lokal. Inkl. Dimensionierung (10 TB nutzbar Anker), Kostenmodell
(capex/opex, per-Site + kumulativ, JBOD-vs-RAID1-Ersparnis) und Impacts
auf Syno-Rolle, Backup-Kette und Container-Hosts (TP14/15/10/16).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-12 20:06:04 +02:00
248b1b5e74 feat 🔌 TP17: statische Shelly-IP + in-pool-Reservierung + voller HA-MAC-Scan
- Entscheidung: alle Shellys bekommen statische IP (10.40.30.<octet>, gw/dns .30.1)
  + in-pool DHCP-Reservierung als Backup. set_sta auf static=true (Default) umgestellt
  (Ziel-IP aus Oktett), _sta_cfg-Helper.
- pool-v30 auf .100-.250 erweitert (Reservierungen jetzt in-pool, User-Konvention).
- s24 (14:33:5c:d8:2d:7c) ins inventory/bf.csv + .30.204-Reservierung.
- Voller HA-Device-Scan (alle MAC-Geräte, nicht nur configuration_url): fand
  Apple TV 4K + Philips TV (aus, VLAN40) — vor cudy-Teardown VLAN verifizieren;
  Apple TV = vmtl. Thread-Border-Router (TP17.1). Tasmota bestätigt tot (MAC nicht im Netz).
- .41.246/.247 = cudy1/cudy2 (Teardown-Ziele) dokumentiert.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-11 07:45:08 +02:00
794082fd74 feat 🔌 shelly-mcp set_auth-Tool + Digest-Auth-Fallback (TP17 Geräte-PW)
- set_auth: setzt einheitliches Admin-PW (SHELLY_DEVICE_PW) via Shelly.SetAuth,
  realm=Geräte-ID, ha1=sha256("admin:realm:pw") pro Gerät; guarded (confirm/dry-run).
- _rpc: HTTP-Digest-Fallback (user admin) bei 401 → Geräte bleiben nach set_auth managebar.
- .env.example/README: SHELLY_DEVICE_PW dokumentiert (getrennt vom WLAN-PSK); Rollout mit PW-Schritt.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-11 07:17:16 +02:00
dcdf299568 docs 📄 TP17 go-ready + Netz-Abgleich 2026-07-11: HA-IPv4-Sweep, VLAN1-Leerstand-Analyse, Runbook
Live-Abgleich Projektstatus vs. echter Netzstand (MikroMCP/pve-mcp/HA):
- VLAN20 verifiziert: NAS .20.10, Mac mini .20.167, pve-LXC .20.126 alle live;
  einziger Host noch in VLAN1 = pve-Host-Mgmt .41.100 (verbleibende Host-Migration).
- TP17 Shelly: Migration schon ~6/26 durch (s14/16/18/22/23/24 stabil auf .30.2xx);
  16 VLAN1-Shellys verbleiben; alle VLAN30-Reservierungen stehen; s6-Reservierung
  .30.213 MAC gefixt (0C:72..9E -> real D0:CF:13:D8:18:FC).
- HA-Cross-Check aller IPv4-Geräte: .30.204 = Shelly Bad/Spiegelschrank (=vmtl. s24);
  Nicht-Shelly-VLAN30-Mover SwitchBot/.184 + Tasmota Nous A1 + 1 offen; .41.246 unident.
- Neues Runbook docs/tp17-shelly-go-runbook.md: 16er-Migrationstabelle, Go-Sequenz,
  Scope-Erweiterung (WLAN+IP+einheitliches Geräte-PW via Shelly.SetAuth),
  Gen4->Thread/Matter-Projektion (TP17.1, experimentell), VLAN1-Leerstand-Verdikt.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-11 07:14:29 +02:00
db9adaed46 feat 🌳 projektstatus-Skill: TP-Statusbaum aus teilprojekte.md rendern
Projekt-Skill unter .claude/skills/projektstatus/ — liest SSoT docs/teilprojekte.md
frisch, gruppiert alle TP in Themenblöcke (inkl. TP17 Shelly, TP14-Migration) und
rendert ASCII-Statusbaum + kritischen Pfad.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-11 01:18:37 +02:00
e76289c8e9 feat 🔌 shelly-mcp + TP17 Shelly-Migration VLAN1→VLAN30; TP14.3 dormante Stacks bereitgestellt
TP17 (neu): shelly-mcp (eigenbau, FastMCP StreamableHTTP :3030 + Status/Health-Seite,
in .claude/launch.json) mit Tools discover/get/set_sta[guarded]/verify/reservation_plan.
Recon: 16 Shellys live, alle Gen3/4 (RPC WiFi.SetConfig, auth=off). Inventar-Fix:
s6/kueche_kuehlschrank MAC 0c:72… → real d0:cf:13:d8:18:fc.

TP14.3: 7 dormante Stacks als .new.yml bereitgestellt (nur lokal, gitignored) — SSoT
in docs/teilprojekte.md nachgezogen.

mcp/INVENTORY.md: shelly-mcp-Zeile + Richtungsentscheid „MCPs zentral, nicht Client;
MikroMCP+shelly-mcp sind pragmatische Interims, später zusammenziehen".

.gitignore: __pycache__/*.pyc.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-11 01:15:32 +02:00
80a68d80b9 docs 📄 TP14.2 Live-Smoke re-verifiziert: alle 6 VLAN20-IPs ping+dienstseitig grün
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-10 23:32:11 +02:00
4b63f5cdb3 docs 📄 TP16 Schritt 5: vw-Access-Leck geschlossen + Wildcard-login_method-Fund
vw von bypass/everyone auf non_identity(Heim-IP)+allow(email:christoph) umgestellt
(reusable-Policy via App-PUT detacht). Neuer 🔴 Fund dokumentiert: Wildcard
*.emsenhuber.net login_method:github/google = jeder Eingeloggte erreicht alles
(user-gated). hass-400 = HA-Origin (nicht Access), gateway-dw WG offen. §10.6.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-10 21:33:16 +02:00
1b43f397ec docs 📄 TP16 ✅ CF-Tunnel reziprokes 3-Tunnel-HA umgesetzt (#1033 strukturell weg)
bf-nas/bf-pve/bf-mm (je Dienst nur von Fremdhost-Connectoren), 6 Connectoren
2/Host. Loop-Smoke 19 FQDNs 0×530, HA per Host-Ausfall-Sim bewiesen.
As-Built = cf-tunnel-mapping.md §10. Offen: Access-Strang (WARP + vw) = user-gated.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-10 20:49:39 +02:00
884e51edd6 docs 📄 TP16 turnkey: CF-Tunnel Round-Robin=macvlan-Host-Isolation → reziprokes HA (Umsetzung eigene Session)
Root-Cause endgültig (User-Diagnose bestätigt): ein cloudflared ist blind NUR
für macvlan/ipvlan-Container auf seinem EIGENEN Host → mehrere Connectoren auf
1 Tunnel + Round-Robin = 1/N garantierte 1033 ("jeden 3. Schuss eine Niete").
Kein Route→Connector-Pinning innerhalb eines Tunnels → HA nur über getrennte
Tunnel: reziprokes Per-Host-Design (jeder Dienst von den anderen Hosts bedient,
3 Tunnel/2 cloudflared je Host = voll HA gegen Single-Host-Ausfall).

- cf-tunnel-mapping.md §9: Invariante + Live-Inventory v119 (Access-Modi,
  DOWN-Origins pbs/nginx-bf/hermes×2) + Ziel-Design + Umsetzungsreihenfolge;
  Abschnitte 1-8 als Historie markiert.
- teilprojekte.md TP16 umgeschrieben: Root-Cause, reziprokes HA, Access-Strang
  (hass-400=CF-Access→WARP, vw=bypass→schützen), Status "dokumentiert,
  Umsetzung = eigene Session".
- Reine Doku, keine Tunnel-/DNS-/Container-Änderung.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-10 19:24:35 +02:00
a969efbe6d docs 📄 pve-mcp Single-Session-Fix (TP14.2a) + TP16 CF-Tunnel 🔴 hochdringlich
- pve-mcp „Failed to connect" = mcp-pve 0.4.8 kann nur 1 MCP-Session
  ("Server already initialized") → Upgrade 0.6.1 (Per-Session), ✔ Connected.
  omada-mcp war/ist gesund (frische Session-ID pro Init).
- Kollateral: VLAN20-Host-DNS auf NAS+LXC zeigte noch auf totes .41.254
  → docker-pull scheitert; LXC pct set .20.1, NAS Synology-DHCP-DNS-Falle.
  Neuer Gotcha in CLAUDE.md.
- TP16 (neu, hochdringlich): FQDNs via CF „sehr unsicher" = #1033-Round-Robin
  zurück; Live-Snapshot 2026-07-10: bf-Tunnel 2 statt 3 Connectoren, alle
  frisch (2026.7.1), Origins nach VLAN20-Move erneut asymmetrisch zu auditieren.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-10 18:29:25 +02:00
7636ea399f docs 📄 TP14.2 ✅ pve-Docker-LXC (400) → VLAN20 (#1033 gelöst)
LXC 400 `docker` net0 tag=20/.20.126; Docker vlan20=ipvlan parent=veth20.
omada-mcp .20.176 (OMADA_BASE_URL→.20.175), adguard .20.16/.17 — running/reachable.
CF-Connector db713b30 jetzt VLAN20 → #1033-Zielbild (Tunnel healthy; portainer/gitea/vw 200).
Refs .41→.20: mcp/portainer/.env, ~/.claude.json omada-mcp, CLAUDE.md, ip-plan, cf-tunnel-mapping.

Gotchas: Proxmox-Token kein VM.Config.Network (Retag via UI); Iface heißt veth20 nicht eth0.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-10 13:34:29 +02:00
244e18729d docs 📄 TP15-Entwurf: HW-Refresh Core-Switch + OG-Verteiler (Requirements)
Requirements/Architektur zur Ablösung von ALLNET-Core + 2 Branch-Switches:
Strom-Baseline, Energieeffizienz, zentrales Management, DC-USV-Konzept.
Status: Entwurf; verweist auf TP15 in teilprojekte.md.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-10 13:11:37 +02:00
be85403d2f docs 📄 TP14.1: Omada-Inform/sw2 vertagt (Controller-Login .20.175 fehlt)
Login an der Controller-UI https://10.40.20.175:8043 schlägt fehl →
Inform-Adresse + sw2 re-adopt verschoben. Unkritisch: sw2 „Disconnected"
ist reiner Mgmt-Loss (Easy-Managed switcht mit letzter Config weiter,
Netz läuft). Voraussetzung fürs Nachholen = Controller-Login/Passwort-
Recovery (Creds nicht lokal hinterlegt).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-10 12:48:27 +02:00
7f1871eb96 docs 📄 TP14.1 ✅ NAS-Container auf VLAN20 + pve-mcp neu (Session A durch)
Alle ep14-Container via Portainer-Stack-Redeploy auf vlan20/.20.x (Env
preserved, Volumes intakt): prometheus/node-exporter/grafana, hms-mqtt,
dashboard-web, qdrant, gitea (DB .20.23 ✓), drawio (intern), oc-charlie,
oc-johnny2. pve-mcp NEU als Stack id 202 (.20.173) — StreamableHTTP am
Root-Pfad / (nicht /sse); ~/.claude.json mcpServers.pve-mcp neu angelegt.

Geflaggt (pre-existing, nicht migrationsbedingt): alertmanager crash-loop
(${TELEGRAM_CHAT_ID}-Literal), openclaw shared-DB .41.122 down. Gotcha:
gitea-Stack hatte vlan20-Block auskommentiert → Fix via Disk-Override.
Merke: kein Blanket-Env-.41→.20 (Mac-mini .167 bleibt .41).

OFFEN: Omada-Inform-Adresse → .20.175 (Controller-UI-Task; sw2 static IP,
kein DHCP-138; nur Mgmt-Loss, Netz läuft).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-10 10:47:07 +02:00
5bed507d30 docs 📄 TP14 in Sub-TPs gegliedert (TP14.1–14.5 = Sessions A–E)
- teilprojekte.md: TP14 Parent (✅ NAS + CF-Ingress) + Sub-TPs TP14.1 (NAS-Rest),
  14.2 (pve-LXC/ipvlan), 14.3 (dormante Stacks + DNS-Sweep), 14.4 (CF-Access-Profil),
  14.5 (Freigabe-Gate → TP5). Analog zu TP3.1/3.2-Muster.
- Handoff-README-Headings auf TP14.x-Nummern gezogen (Konsistenz).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-10 10:08:52 +02:00
c51704fd84 docs 📄 TP14 angelegt: Host/Container-IP-Migration VLAN1→VLAN20 (NAS ✅, pve 🔜)
- teilprojekte.md: neuer TP14 (Docker-Cutover NAS+pve) + Querverweise TP11 (Track-B/C) + Reihenfolge #3.
- NAS ep14 ✅ auf vlan20-Macvlan; CF-Ingress v116; Root-Cause Config-Only-Macvlan-Falle dokumentiert.
- Handoff docs/nas-vlan20/handoff/README.md: paste-fertige Anschlussstatements Session A–E
  (sequenzielle Sessions, keine parallelen Branches — geteilte Live-Infra).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-10 09:46:59 +02:00
6dea5ec361 docs 📄 cf-tunnel §8: Ingress v116 (.41→.20) + Connector-Reachability nach NAS-VLAN20-Cutover
- 6 NAS-Origins .41→.20 repointet (ha-mcp, NAS-ssh, gitea, vw, grafana, pve-mcp), v115→v116.
- Befund: pve-Connector erreicht VLAN20 (vw 200 via Tunnel); 502 direkt nach Ingress-PUT = transient.
- grafana 502 = Container exited, kein Routing-Problem. Kein pve-Static-Route nötig.
- Stufe-4-Connector-Vantage löst sich mit pve→VLAN20 (PVID1-Cutoff).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-10 09:42:33 +02:00
06e491f609 docs 📄 NAS→VLAN20 Docker-Migration: Runbook + Root-Cause
Diagnose der Docker-Container-Fehler nach NAS-NIC-Wechsel auf VLAN20:
- Config-Only-Macvlan-Falle (Portainer 2-Schritt, Driver=null → kein Attach)
- Macvlan-Parent ovs_eth0 exklusiv → default_external muss weg für vlan20
- default_internal (172.18) existiert nicht mehr (Range von gitea_default belegt)

RUNBOOK: IP-Mapping .41.X→.20.X (Oktett behalten), Phase-A-Teardown,
Post-Steps (ap1-DNS, CF-Ingress-Repoint, omada-Inform .20.175), CF-Access
claude-mcp-Profil-Status.

Stack-Compose-Files + Inspect-JSONs (docs/nas-vlan20/stacks/, inspect_*.json)
via .gitignore ausgeschlossen — enthalten Live-Secrets.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-09 21:14:49 +02:00
711b46f92c docs 📄 TP5.1: DNS-Redirect + Live-Torch für Low-Trust-Geräte (Airfryer-Fall)
Airfryer-Override dns=1.1.1.1 (public Consumer-Resolver, ≠ Gateway-DoH) macht
das Gerät DNS-blind + umgeht Filterung. Zwei Folgepunkte vorgemerkt:
- (a) DNS-Redirect (dst-nat 53 auf plain Resolver) = dauerhafter Fix, Logging+OTA
- (b) Live-Torch als Ad-hoc-Flow-Observability
Verweis in Reihenfolge-Liste (hängt an TP5-Deny-by-default + UNTRUSTED-Move).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-09 17:02:49 +02:00
37e17100a4 docs 📄 teilprojekte: offene Notizen geflusht (TP3.1-Interim-Härtung + Migrationsziel)
- TP3.1: Interim-Härtung ap2 wifi1/wifi2 frame-types=admit-only-vlan-tagged
  (Dual-DHCP-Race 2026-07-06, Provisorium bis VLAN1-Abbau)
- Ist-Stand: Migrationsziel „from scratch" + cudy1-VLAN1-Leak als Aufräum-Liste

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-09 17:02:10 +02:00
82ca6e282c docs 📄 TP7.2: HA↔Sonos static-host binding + VLAN1/GUEST-Discovery
HA-Sonos waren unavailable: HA hängt auf VLAN1 (10.40.41.105), nicht VLAN20,
und die Sonos-Integration ist SSDP-abhängig (quert VLAN nicht) — frühere
"HA nutzt mDNS/self-healing"-Notiz war falsch.

Fix: static hosts: + advertise_addr in configuration.yaml (discovery-unabhängig,
advertise_addr fixt UPnP-Callbacks trotz Multi-Homing). Zusätzlich VLAN1/GUEST-
Erreichbarkeit: mdns-repeat-ifaces +vlan90,bridge; forward vlan90↔vlan40 (ganzes
MEDIA) + input 5353 vlan90. Flacher-Repeater-Leak bewusst.

- teilprojekte.md: neues TP7.2, TP5/TP7-Regeln nachgezogen
- sonos-inventar.md: HA-Abschnitt korrigiert (SSDP + static hosts)
- tp7-mdns.md: superseding Update-Block (neue Repeater-Ifaces, GUEST-Forward)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 08:05:18 +02:00
5fbce5f798 docs 📄 teilprojekte: offene WLAN-Coverage-Arbeit als TP3.3 abgelegt
TP3.2 = P750W/Discovery erledigt; offene Coverage-Kur (Dead-Spot-Map →
Platzierung/3.AP/Outdoor, Nachbar-Kanal-Scan, INFRA-auf-ap1) als
kaltstart-taugliches TP3.3 für die Fortsetzungs-Session ausgelagert.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 06:52:26 +02:00
9ac5f5d840 docs 📄 P750W/WLAN-Coverage in CLAUDE.md, teilprojekte, inventory nachgezogen
- CLAUDE.md: Gotcha CAP-Reachability (dozende Legacy-Clients nur auf ap1) +
  Merkregel DHCP-geht-Ping-nicht=ARP/PowerSave + Coverage/TX/Steering-Stand
- teilprojekte.md: TP3.2 (P750W gelöst, Coverage-Kur offen, Nomenklatur-Realität)
- inventory/bf.md: P750W Web-UI-Pfad + ap1-Pin-Hinweis

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 06:47:57 +02:00
1188adfa9c docs 📄 wifi: P750W-Fix, Coverage-Stand & Interface-Map (Zwischendoku)
- P750W (VLAN30) gelöst: DHCP-client-id-Fix, geordneter ap1-Access-List-Pin
  (dozende Legacy-Clients nur am co-located-GW ap1 erreichbar), mDNS-vlan30-Discovery
- Coverage an Kanten/Terrasse grenzwertig (−76..−89 dBm, 4-Radio-Ping-Pong);
  TX bereits am AT-Maximum; Steering (neighbor-group bf-main) gesetzt;
  echter Fix = Platzierung (Dead-Spot-Map offen)
- Interface-Map als SSoT (ap1 statisch w2-/w5-, ap2 dynamische CAP-Slaves
  nicht praktikabel umbenennbar); Session-Änderungen + Journal-IDs + Backups

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 06:42:55 +02:00
cb847b99a8 docs 📄 teilprojekte.md: TP7.1 SSDP-Reflector als Sub vorgemerkt
macOS-Desktop-Sonos-App braucht SSDP über VLAN-Grenze; iOS/HA reichen für den
Alltag nicht, sobald der User die Desktop-App nutzen will. Reflector-Container
auf NAS/pve (nicht am hAP), Scope vlan10↔vlan40.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-02 20:10:31 +02:00
cd804b9766 docs 📄 teilprojekte.md: Edge-Cutover / Sonos-Migration / TP5-teil-live nachgezogen
Doc-Nachzug gegen den Router-Ist-Stand 2026-07-02:
- Edge-Cutover 2026-07-01 (FB physisch weg, Arris-Bridge, ap1 = Public-Edge) in
  Ist-Stand, TP4-Titel/NAT/FB-Bridge-Block, TP10-Public-Edge-Zeile.
- TP3/TP7/Reihenfolge: Sonos-Migration ✅ (10/10 auf VLAN 40), mDNS-Repeater ✅
  (vlan10/20/40/30), macOS-Desktop-SSDP-Gotcha dokumentiert.
- TP5 auf "teil-live" umgeschrieben: forward MAIN/INFRA↔MEDIA + input 5353 +
  WAN-Seal als bereits gebaut markiert; Deny-by-default bleibt offen.
- TP11: CF-Tunnel #1033 Track A als Sub-Note.
- VLAN 100 in kanonischer Tabelle: FB-Transfer → Arris-Transfer.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-02 20:03:56 +02:00
1e0e92671a TP7 📄 Sonos-Inventar: Migration abgeschlossen (alle 10 auf VLAN40) + HA-Integration
Alle Sonos jetzt auf VLAN40 (10.40.40.0/24), IPs per MAC DHCP-reserviert.
Korrigierte IPs (Arbeitszimmer .199/.200 → .191/.192, Arc hält .199).

Discovery-Merkregel dokumentiert: iOS-App + Home Assistant = mDNS/zeroconf
(_sonos._tcp.local.) → über Repeater lösbar; macOS-Desktop-App = SSDP
(quert VLAN nicht, kein Reflector gebaut); Spotify = Cloud.

Passend zur Router-Änderung (nicht im Repo): mdns-repeat-ifaces=
vlan10,vlan20,vlan40 (vlan20 für HA ergänzt) + forward/input-Regeln
vlan20<->vlan40. HA discovert per zeroconf selbst → self-healing der IPs.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-02 19:29:22 +02:00
bda879416a 📄 Inventar: P750W — mobil/batteriebetrieben + WLAN-PowerSave-Gotcha
Brother PT-P750W Label-Drucker: Standort variabel (Akku), aggressives
WLAN-PowerSave (wifi-qcom) → idle nicht ARP/ping-erreichbar, Druckjob
weckt das Gerät. Ziel-VLAN 30 (IoT), reserviert 10.40.30.5.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-02 17:18:11 +02:00
4a6cdcff5b CF/#1033 📄 CLAUDE.md: Edge-Cutover dokumentiert (FB6660 ausgebaut, Arris-Bridge)
Liwest hat die FritzBox dauerhaft gegen ein Arris-Kabelmodem getauscht
(2026-07-01). WAN läuft jetzt über den Core-Switch statt ether1, ap1
zieht die öffentliche Liwest-IP direkt. Telefonie entfällt.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-02 13:46:52 +02:00
6807c5da08 CF/#1033 ✅ Track A komplett: bf-Tunnel pve-only + Ingress-Repoints + DNS-Cleanup
- A1: n8n Compose-Port .41.167→.20.167 (Daten/Encryption-Key erhalten), NAS-Leichen weg
- A2: Ingress v106 alle Origins .41.167→.20.167, hermes-geli neu, mcp-ms365 raus
- A3: hermes-geli-CNAME + 12 tote/Orphan-CNAMEs gelöscht
- Endzustand: Tunnel healthy/1 Connector, 23 Ingress↔23 CNAMEs, keine Waisen
- Zugang via scoped API-Token (mcp/cloudflare/.env), OAuth-MCP blieb read-only

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-02 09:21:27 +02:00
ae6c84dc0b TP3.1 ✅ ap2 VLAN-Trunk-Fix: vlan-filtering=yes (WLAN-Segmentierung)
Root cause: ap2 (CAP, local forwarding) hatte bridge vlan-filtering=no →
datapath.vlan-id wurde nie getaggt → alle WLAN-Clients (main/media/iot/…)
egressten ungetaggt in VLAN1 → OG-iPhone-Drops beim Roaming ap1↔ap2.

Fix wie ap1: VLAN1 untagged=bridge,ether2 (Mgmt), 10/30/40/50/90 tagged
auf ether2 + wifi1/wifi2 als tagged-Member (nur Master-Radios sind
Bridge-Ports, CAPsMAN legt das auf dem CAP nicht an). As-built +
teilprojekte.md TP3.1 + CLAUDE.md-Gotcha. OG-Funktionstest offen (User).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-01 22:37:03 +02:00
381365b8ed CF/#1033 📄 CF-Tunnel-Mapping (SSoT) + cloudflare-MCP-Scaffold
- docs/cf-tunnel-mapping.md: Single Source of Truth zur #1033-Diagnose
  (bf-Tunnel = Round-Robin über 3 Connectors macmini/pve/NAS)
- mcp/cloudflare/: README + .env.example (echtes .env via mcp/.gitignore ausgeschlossen)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-01 17:49:46 +02:00
99ee2838a4 TP10/CF 📄 Übergabe für CF-Tunnel #1033-Fix (Track A) in neue Session
Ursache verifiziert: 1 Tunnel, gleicher Token auf 2 Connectors (pve+nas) →
Round-robin trifft Origins, die nur von einem Host routbar sind → sporadisch #1033.
Ziel: HA-Connector-Paar in VLAN20, Origins auf 10.40.20.x, Rogues weg.
Reihenfolge: #1033 → FB-Bridge → IP-Migration. cf-mcp (Remote-OAuth) braucht
frische Session; Handoff ist self-contained mit Startschritten + Fallback.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 17:43:04 +02:00
0f23a1b22a TP10 ✅ FM→BF Rückweg ebenfalls grün: BF-FB-Route 10.101.0.0/24 getestet
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-28 12:33:26 +02:00