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>
This commit is contained in:
10
CLAUDE.md
10
CLAUDE.md
@@ -33,10 +33,10 @@ GW je VLAN = `.1` · APs: ap1=`.1`, ap2=`.2` · Switches: ALLNET=`.11`, Omada=`.
|
||||
| hAP ax² #2 (ap2) | 10.40.41.2 | MikroMCP (live) · **Port 2 am Omada-Switch** |
|
||||
| NAS (nas-bf, DS923) | 10.40.41.10 | SSH · Docker (Portainer endpointId=14) |
|
||||
| Omada-Controller | 10.40.41.175 | `https://10.40.41.175:8043` (macvlan auf DS923) |
|
||||
| omada-mcp | 10.40.41.176 | StreamableHTTP `http://10.40.41.176:3000/mcp` · MCP in Claude Code ✓ (pve-LXC) |
|
||||
| omada-mcp | 10.40.20.176 | StreamableHTTP `http://10.40.20.176:3000/mcp` · MCP in Claude Code ✓ (pve-LXC) · **TP14.2 2026-07-10: .41→.20, OMADA_BASE_URL→.20.175** |
|
||||
| pve-mcp | 10.40.20.173 | **StreamableHTTP `http://10.40.20.173:3000/` (Root-Pfad, NICHT /sse)** · NAS-Stack ep14 id 202 (vlan20-only, TP14.1 2026-07-10) · `~/.claude.json` ✓ (wirkt nach Restart) |
|
||||
| Proxmox (pve) | 10.40.41.100 | kein SSH-Key konfiguriert |
|
||||
| Docker-LXC (auf pve) | 10.40.41.126 | Portainer CE 2.40.0 (`https://10.40.41.126:9443`) |
|
||||
| Docker-LXC (auf pve) | 10.40.20.126 | Portainer CE 2.40.0 (`https://10.40.20.126:9443`) · **TP14.2 2026-07-10: LXC 400 net0 tag=20/.20.126 (iface heißt jetzt `veth20`, NICHT eth0); Docker-Netz `vlan20`=ipvlan parent `veth20`; adguard_bf1 .20.16, adguard_fm2 .20.17** |
|
||||
| Mac mini | 10.40.41.167 | `ssh macmini` |
|
||||
| Arris-Kabelmodem | (Bridge-Mode, keine Mgmt-IP im BF-LAN) | Liwest-Edge, physisch an sw1 gi16 · **FritzBox 6660 seit 2026-07-01 komplett ausgebaut** (Liwest-Tausch, kein Zurück); Telefonie war auf der FB und wird nicht weitergeführt |
|
||||
|
||||
@@ -48,9 +48,9 @@ GW je VLAN = `.1` · APs: ap1=`.1`, ap2=`.2` · Switches: ALLNET=`.11`, Omada=`.
|
||||
- **ALLNET-Switch:** kein MCP — nur Telnet-CLI (IOS-artig, FW 2.2.1). Runner:
|
||||
`cd ~/dev/bf-network-r6/switch && . ./.secrets && expect cli/run-cli.exp cli/<datei>.cli`
|
||||
Klickanleitungen in `switch/ui-guides/` für manuelle Schritte.
|
||||
- **Omada-Switch:** Controller `https://10.40.41.175:8043` (TP2 ✅). Adoption ✅. Port-Config: manuell im Browser.
|
||||
omada-mcp live auf pve-LXC (.176, StreamableHTTP /mcp, MCP in Claude Code ✓).
|
||||
- **Docker-Management:** Portainer API `https://10.40.41.126:9443`, Key in `mcp/portainer/.env`.
|
||||
- **Omada-Switch:** Controller `https://10.40.20.175:8043` (TP2 ✅). Adoption ✅. Port-Config: manuell im Browser.
|
||||
omada-mcp live auf pve-LXC (.20.176, StreamableHTTP /mcp, MCP in Claude Code ✓).
|
||||
- **Docker-Management:** Portainer API `https://10.40.20.126:9443`, Key in `mcp/portainer/.env`.
|
||||
Ablösung durch Komodo (native MCP) geplant.
|
||||
|
||||
---
|
||||
|
||||
@@ -20,7 +20,7 @@ Fingerprint via Colo-Locations (CF-API ↔ lokale cloudflared-Logs) + Arch.
|
||||
| CF-Connector | arch | Host (Portainer) | LAN-IP | Docker-Netz | Vantage |
|
||||
|---|---|---|---|---|---|
|
||||
| `1856dfc3-…` | arm64 | **macmini** (ep20) | 10.40.20.167 | **bridge** `cloudflared_default` | **VLAN20** |
|
||||
| `db713b30-…` | amd64 | **pve-LXC** (ep2) | 10.40.41.126 | host | VLAN1/.41 |
|
||||
| `db713b30-…` | amd64 | **pve-LXC** (ep2) | 10.40.20.126 | host | **VLAN20** (TP14.2 2026-07-10 → #1033-Zielbild) |
|
||||
| `d7454e68-…` | amd64 | **nas-bf DS923** (ep14) | 10.40.41.10 | host | VLAN1/.41 |
|
||||
|
||||
Alle 3 fahren **denselben Tunnel-Token** (`tunnel run`, token-managed Ingress im Dashboard).
|
||||
@@ -51,7 +51,7 @@ Quelle: macmini aktiv geprobt; pve/NAS aus echten cloudflared-Fehler-Logs (tail
|
||||
| gitea | http://10.40.41.157:3000 | OK | ? | OK | ok (macmini transient) |
|
||||
| nginx-bf | http://10.40.41.123:81 | OK | ? | OK | ok |
|
||||
| ds-bf | http://10.40.41.10:8080 | OK | OK | OK | ok |
|
||||
| portainer | https://10.40.41.126:9443 | OK(self) | ? | OK | ok |
|
||||
| portainer | https://10.40.20.126:9443 | OK | OK | OK | TP14.2: Origin .41→.20.126; Tunnel-Smoke 200 |
|
||||
| grafana | http://10.40.41.109:3000 | ? | ? | OK | ok |
|
||||
| pve-mcp | http://10.40.41.173:3000 | ? | ? | OK | ok |
|
||||
| gateway-bf | http://10.40.41.254 | OK | ? | OK | ok (FB) |
|
||||
|
||||
@@ -23,10 +23,10 @@
|
||||
| sw1 ALLNET (Core) | 10.40.41.11 | Switch-Mgmt | 99 MGMT | `10.40.99.11` | ⬜ | Mgmt-VLAN-Wechsel = Lockout-Risiko, sorgsam |
|
||||
| sw2 Omada (ES208G) | 10.40.41.12 | Switch-Mgmt | 99 MGMT | `10.40.99.12` | ⬜ | |
|
||||
| NAS nas-bf (DS923) | 10.40.41.10 | INFRA | 20 INFRA | `10.40.20.10` | ⬜ | 🔴 **Geblockt:** CF Zero Trust angepasst + TP10 (VPN auf ap1) abgeschlossen |
|
||||
| Omada-Controller | 10.40.41.175 | Service (macvlan/DS923) | 20 INFRA | `10.40.20.175` | ⬜ | 🔴 **Geblockt:** macvlan auf DS923 → folgt NAS (gleicher Block) |
|
||||
| omada-mcp | 10.40.41.176 | Service (pve-LXC) | 20 INFRA | `10.40.20.176` | ⬜ | ⚠️ Mgmt-Ebene |
|
||||
| pve-mcp | 10.40.41.173 | Service (pve) | 20 INFRA | `10.40.20.173` | ⬜ | ⚠️ Mgmt-Ebene |
|
||||
| Docker-LXC | 10.40.41.126 | Docker-Host (pve) | 20 INFRA | `10.40.20.126` | ⬜ | Portainer/Komodo |
|
||||
| Omada-Controller | 10.40.20.175 | Service (macvlan/DS923) | 20 INFRA | `10.40.20.175` | ✅ **live** | TP14.1: läuft auf vlan20 (mbentley 6.2); ⏸️ Inform-Adr./sw2-readopt vertagt (Login) |
|
||||
| omada-mcp | 10.40.20.176 | Service (pve-LXC) | 20 INFRA | `10.40.20.176` | ✅ **live** | TP14.2 2026-07-10; OMADA_BASE_URL→.20.175 |
|
||||
| pve-mcp | 10.40.20.173 | Service (pve) | 20 INFRA | `10.40.20.173` | ✅ **live** | TP14.1; NAS-Stack (vlan20-only) |
|
||||
| Docker-LXC | 10.40.20.126 | Docker-Host (pve) | 20 INFRA | `10.40.20.126` | ✅ **live** | TP14.2 2026-07-10: LXC 400 net0 tag=20; Docker `vlan20`=ipvlan parent `veth20` |
|
||||
| Proxmox pve | 10.40.41.100 | Hypervisor+INFRA | 20 INFRA | `10.40.20.100` | ⬜ | User: Hypervisor zählt zu INFRA (wie DS923) |
|
||||
| Mac mini | 10.40.41.167 | INFRA/Server | 20 INFRA | `10.40.20.167` | ✅ **live** | umgezogen; Omada P7 + Access-INFRA (VLAN20, ohne VLAN1) ✅ |
|
||||
| FritzBox 6660 | 10.40.41.254 | WAN/Transfer | bleibt VLAN1/Transfer | `10.40.41.254` | ⬜ | wird Modem nach Bridge (TP10) |
|
||||
|
||||
@@ -46,7 +46,17 @@ Verifikation: `pt.py containers` alle `running`/`.20.x`; von `.41`-Host (gw ap1)
|
||||
Tunnel `curl -m8 -w %{http_code} https://<host>.emsenhuber.net/` → 200/302.
|
||||
</details>
|
||||
|
||||
## TP14.2 — Session B: pve-Docker-LXC (.126) → VLAN20 (⚠️ ipvlan, nicht macvlan!)
|
||||
## TP14.2 — Session B: pve-Docker-LXC (.126) → VLAN20 ✅ DURCH (2026-07-10)
|
||||
**Ergebnis:** LXC 400 (`docker`) net0 `tag=20 / 10.40.20.126/24 / gw .20.1`; Docker `vlan20`=ipvlan
|
||||
**`parent=veth20`** (⚠️ in-Container-Iface heißt jetzt `veth20`, nicht eth0 — UI-Namensfeld). Container:
|
||||
omada-mcp `.20.176` (OMADA_BASE_URL→`.20.175`), adguard_bf1 `.20.16`, adguard_fm2 `.20.17` — alle running/reachable.
|
||||
CF-Connector `db713b30` jetzt VLAN20 → **#1033-Zielbild gelöst** (Tunnel healthy; portainer/gitea/vw 200).
|
||||
Refs nachgezogen: `mcp/portainer/.env`, `~/.claude.json` omada-mcp, CLAUDE.md, ip-plan, cf-tunnel-mapping.
|
||||
**⚠️ Gotcha:** Proxmox-Token `claude@pam!claude` hat **kein `VM.Config.Network`** → Retag muss Christoph
|
||||
(UI) machen; Reboot danach via API (`VM.PowerMgmt` vorhanden). Transf. Files: `stacks/{195-adguard,200-omada-mcp}.yml`.
|
||||
|
||||
<details><summary>Original-Aufgabe (erledigt)</summary>
|
||||
|
||||
Kontext: pve-LXC(ep2) hängt auf `.41`, Netz `default_external` = **ipvlan** parent `eth0`:
|
||||
omada-mcp `.176`, adguard_bf1 `.16`, adguard_fm2 `.17`. **Portainer-Server + aktiver CF-Connector laufen
|
||||
hier.** ⚠️ Reihenfolge kritisch.
|
||||
@@ -59,6 +69,7 @@ Aufgabe:
|
||||
5. `mcp/portainer/.env` + `PORTAINER_URL` + CF-Ingress (portainer `.20.126`) nachziehen.
|
||||
Ergebnis: CF-Connector in VLAN20 = **#1033-Zielbild** (TP11-Track-B/C erledigt). Verifikation: Portainer
|
||||
unter neuer URL, ep2-Container `.20.x`, Tunnel healthy, pve-lokale Origins (pve-Host `.41.100`) noch erreichbar.
|
||||
</details>
|
||||
|
||||
## TP14.3 — Session C: Dormante Stacks vlan20-tauglich + Referenz-Sweep
|
||||
Aufgabe:
|
||||
|
||||
@@ -284,7 +284,8 @@ FT kaschierte das bisher als „Roaming" statt „schwache Abdeckung".
|
||||
- ✅ **NAS (DS923, ep14) migriert (2026-07-09/10):** Docker von `default_external` (macvlan .41) auf **ein** `vlan20`-Macvlan (10.40.20.0/24, gw .1, parent `ovs_eth0`); DSM-Cutover `.20.10`; Portainer-Endpoint `.20.10:9001`. **Root-Cause der Dauerfehler** = Portainer **Config-Only-Macvlan-Falle** (`Driver:null`, kein Container-Attach) + Macvlan-Parent-Exklusivität (`default_external` muss weg für `vlan20`) + `default_internal` (172.18) weg. Container laufen auf `.20.x`.
|
||||
- ✅ **CF-Ingress v116 (2026-07-10):** 6 NAS-Origins .41→.20 (SSoT `docs/cf-tunnel-mapping.md` §8); `vw` 200 via Tunnel = pve→VLAN20-Routing steht (502 direkt nach Ingress-PUT = transient).
|
||||
- ⚠️ **Abh./Reihenfolge:** verzahnt mit Omada-PVID-Fix/IP-Migration (Reihenfolge #3); Sessions = Sub-TPs **TP14.1–14.5**, sequenziell A→B→C→(D jederzeit)→E, **keine parallelen Branches** (geteilte Live-Infra). Anschlussstatements: `docs/nas-vlan20/handoff/README.md`.
|
||||
- ✅ **TP14.1 (Session A) durch 2026-07-10:** alle ep14-Container auf vlan20 + pve-mcp neu; nur Omada-Inform-Adresse offen (Controller-UI-Task, s.u.). Nächste Session = **TP14.2 (Session B, pve-LXC → VLAN20, ⚠️ ipvlan)**.
|
||||
- ✅ **TP14.1 (Session A) durch 2026-07-10:** alle ep14-Container auf vlan20 + pve-mcp neu; nur Omada-Inform-Adresse offen (Controller-UI-Task, s.u.).
|
||||
- ✅ **TP14.2 (Session B) durch 2026-07-10:** pve-LXC (400/`docker`) auf VLAN20 (.20.126, ipvlan `parent=veth20`); omada-mcp/adguard→.20.x; CF-Connector jetzt VLAN20 = **#1033 gelöst**. Nächste Session = **TP14.3 (Session C, dormante Stacks + Referenz-Sweep ap1-DNS)**.
|
||||
|
||||
### TP14.1 — Session A: NAS fertigstellen ▸ ✅ DURCH (2026-07-10); Omada-Inform/sw2 VERTAGT
|
||||
- ✅ **Alle ep14-Container auf vlan20 redeployed + verifiziert running/.20.x** (via Portainer-Stack-Redeploy, Env preserved, Volumes intakt): oc-stack(112 → prometheus `.151`/node-exporter `.154`/grafana `.109`), default(72 → hms-mqtt `.124`), nginx(101 → dashboard-web `.148`), oc-central(160 → qdrant `.159`), oc-charlie(158 → `.162`+cf), oc-johnny2(150 → `.161`+cf), gitea(111 → `.157`, DB `.20.23:3306` erreichbar ✓), drawio(107 → `.139`, intern; CF-CNAME war eh gelöscht).
|
||||
@@ -295,10 +296,12 @@ FT kaschierte das bisher als „Roaming" statt „schwache Abdeckung".
|
||||
- ⏸️ **VERTAGT — omada-controller Inform-Adresse → `10.40.20.175` + sw2 re-adopt** (2026-07-10): **Login an der Controller-UI `https://10.40.20.175:8043` schlägt fehl** (Christoph kommt nicht rein) → Recovery blockiert, verschoben. **Unkritisch:** sw2 „Disconnected" ist reiner Management-Loss — sw2 (ES208G Easy-Managed) switcht mit letzter Config weiter, Netz läuft (Live-Traffic bestätigt). Kein Auto-Fix: Open API hat kein Inform/Hostname-Setting, kein Controller-Admin-Login lokal, **sw2 = statische IP `.41.12` → keine DHCP-Option-138-Recovery**. **Wenn Login wieder geht:** UI → Settings → Controller → „Controller Hostname/IP" = `10.40.20.175`, dann sw2 forget+re-adopt (L3-Discovery). Vorher **Controller-Login klären** (Passwort-Reset / Recovery — Creds liegen nicht lokal).
|
||||
- 🐞 **Gotcha gefunden:** Portainer-Stack 111 (gitea) hatte den `vlan20`-Networks-Block **auskommentiert** (Vorsession-Artefakt) → Container landete auf `gitea_default`/172.18. Fix = Redeploy mit Disk-File `docs/nas-vlan20/stacks/111-gitea.yml` als Override.
|
||||
|
||||
### TP14.2 — Session B: pve-Docker-LXC (.126) → VLAN20 ▸ 🔜 TODO (⚠️ ipvlan, nicht macvlan!)
|
||||
- ep2-Stacks (`adguard`, `omada-mcp`) transformieren `.41→.20` (adguard .16/.17, omada-mcp .176; `OMADA_URL`→`.20.175`).
|
||||
- LXC in Proxmox auf VLAN20 taggen + IP `.126→.20.126` (⚠️ **Portainer-URL wandert** — Zugang vorher sichern; `mcp/portainer/.env`+`PORTAINER_URL` nachziehen).
|
||||
- `default_external`(ipvlan eth0) weg → `vlan20`(ipvlan, `-o parent=eth0`) neu. Ergebnis: CF-Connector in VLAN20 = **löst TP11-Track-B/C** (#1033-Zielbild).
|
||||
### TP14.2 — Session B: pve-Docker-LXC (.126) → VLAN20 ▸ ✅ DURCH (2026-07-10) (ipvlan)
|
||||
- ✅ ep2-Container auf `vlan20`: **omada-mcp `.20.176`** (OMADA_BASE_URL→`.20.175`), **adguard_bf1 `.20.16`**, **adguard_fm2 `.20.17`** — alle running/reachable (health 200, adguard 302). Transf. Files `docs/nas-vlan20/stacks/{195-adguard,200-omada-mcp}.yml`.
|
||||
- ✅ LXC 400 (`docker`) net0 → `tag=20, ip=10.40.20.126/24, gw=10.40.20.1` (⚠️ **Retag brauchte Christoph** — Token `claude@pam!claude` hat kein `VM.Config.Network`; UI-Edit, dann Reboot via API mit `VM.PowerMgmt`). Portainer wandert auf `https://10.40.20.126:9443`.
|
||||
- 🐞 **Gotcha: in-Container-Iface heißt jetzt `veth20`, NICHT `eth0`** (UI setzte Name analog net1=veth16) → Docker `vlan20`=ipvlan **`parent=veth20`** (nicht eth0 wie im Runbook). cloudflared(host)/portainer(bridge) unberührt.
|
||||
- ✅ **CF-Connector `db713b30` jetzt in VLAN20** (Tunnel `bf.emsenhuber.net` healthy/8 conns) = **löst TP11-Track-B/C** (#1033-Zielbild). Ingress `portainer` .41.126→.20.126. Smoke: portainer/gitea/vw 200, grafana 302.
|
||||
- ✅ Refs nachgezogen: `mcp/portainer/.env` (PORTAINER_URL), `~/.claude.json` (omada-mcp `.20.176`), CLAUDE.md, `docs/ip-plan.md`, `docs/cf-tunnel-mapping.md`. Next = **TP14.3 (Session C, dormante Stacks + Referenz-Sweep ap1-DNS)**.
|
||||
|
||||
### TP14.3 — Session C: Dormante Stacks vlan20-tauglich + Referenz-Sweep ▸ 🔜 TODO
|
||||
- `transform.py` auf core(43)/openclaw(92)/openclaw2(97)/oc20260307(119)/openspeedtest(74)/speedtest_tracker(80)/technikscheiss(42) → `.new` (42/43 waren `default_internal` → vlan20-only).
|
||||
|
||||
Reference in New Issue
Block a user