# Projektkarte knaster Stand 19.10.2026. Was wo läuft, wie man es erreicht und wo es im Repo steht. Bei jeder Änderung an Adressen, Diensten oder Ports mitpflegen (siehe [AGENTS.md](AGENTS.md)). Bekannte Probleme: [known-issues.md](known-issues.md). ## Netz Flaches Netz `192.168.100.0/24`, Gateway `.1`, DNS und DHCP auf dem DC `.120` (verwaltet vom DC-Support, nicht von uns). Feste Adressen: Knoten, ops und infra statisch konfiguriert; GPU-VMs und k3s-VM per DHCP (Reservierungen Task 0.2). ## Rechner und Gäste | Name | Art | Adresse | Feste Adresse | Rolle | |---|---|---|---|---| | pve44 | Proxmox-Knoten | .210 | statisch + Reservierung | GPU-Knoten (M4000 + P2000), Heimat von infra | | pve46 | Proxmox-Knoten | .209 | statisch, keine Reservierung möglich | GPU-Knoten (M4000 + P2000), Heimat von ops | | pve48 | Proxmox-Knoten | .212 | statisch, keine Reservierung möglich | GPU-Knoten (M4000 + P2000), Heimat der k3s-VM | | pve52 | Proxmox-Knoten | .207 | statisch + Reservierung | GPU-Knoten (nur M4000) | | pve61 | Proxmox-Knoten (Surface) | .214 | statisch | Quorum, später Kiosk (Task 5.3), kein `tank` | | ops | LXC 100 auf pve46 | .173 | statisch | Steuerrechner/Bastion: kubectl, Ansible, tofu, Repo-Clone | | infra | LXC 101 auf pve44 (HA) | .188 | statisch, keine Reservierung möglich | Monitoring und Router (Compose-Stack `knaster-infra`) | | k3s | VM 110 auf pve48 (HA) | .124 | DHCP | k3s-Steuerung, Portainer CE, kube-state-metrics | | gpu-pve44 | VM 244 | .186 | DHCP | k3s-Agent; llama.cpp Embedding + Rerank (P2000) | | gpu-pve46 | VM 246 | .178 | DHCP | k3s-Agent; llama.cpp Embedding + Rerank (P2000) | | gpu-pve48 | VM 248 | .183 | DHCP | k3s-Agent; llama.cpp Chat (P2000) | | gpu-pve52 | VM 252 | .174 | DHCP + Reservierung | k3s-Agent; NEX-Sprachdienste (M4000) | | appsrv08 | fremder Server | .29 | – | NEX-Produktion, LiteLLM (D4), Portainer EE, nex-admin, Traefik | | Admin-Laptop | – | .151 (WLAN), .181 (Dock) | Reservierung | Arbeitsplatz von r.rapp | ## Dienste und Ports | Dienst | Wo | Adresse | Zugang | |---|---|---|---| | Proxmox-Weboberfläche | jeder Knoten | `https://:8006` | persönliches Konto + TOTP, nur Adressen aus `firewall.management` | | Grafana | infra | `http://192.168.100.188:3000` | `admin`, `kiosk` (Viewer); Dashboards: Übersicht, Proxmox, Knoten, GPU, k3s – Pods | | Prometheus / Alertmanager | infra | `:9090` / `:9093` | ohne Anmeldung, nur LAN | | knaster-Router | infra | `:8080` | Bearer-Token (Dry-Run) | | TTS (Piper, knaster) | infra | `:8090` | – | | k3s-API | k3s | `https://192.168.100.124:6443` | kubeconfig nur auf ops; nex-admin mit eigenem Token (nur Namespace `nex`) | | Portainer CE | k3s | `https://192.168.100.124:30779` | Portainer-Konten (Datenbank von appsrv08 übernommen) | | Portainer-Agent | jeder k3s-Knoten | `:30778` | für Portainer | | SearXNG (NEX) | jeder k3s-Knoten | `:30880` | – | | kube-state-metrics | jeder k3s-Knoten | `:30808` | für Prometheus | | RustDesk hbbs/hbbr | jeder k3s-Knoten | `:21115–21119` | Clients zeigen noch auf `.29` | | llama.cpp Embedding / Rerank | gpu-pve44, gpu-pve46 | `:8081` / `:8082` | LAN (ufw) | | llama.cpp Chat (verifier-small) | gpu-pve48 | `:8080` | LAN (ufw) | | NEX STT (whisper.cpp) / TTS (Piper) | gpu-pve52 | `:8178` / `:8179` | nur von appsrv08 (ufw) | | node_exporter / nvidia_gpu_exporter | jede GPU-VM | `:9100` / `:9835` | LAN | | kubelet | jeder k3s-Knoten | `:10250` | Token `prometheus-infra` | ## k3s-Namespaces | Namespace | Inhalt | Ausgerollt mit | |---|---|---| | `kube-system` | k3s-Grundlagen, metrics-server, NVIDIA Device Plugin (nur M4000), kube-state-metrics | `playbooks/k3s.yml`, `playbooks/monitoring-k3s.yml` | | `knaster` | llama.cpp je GPU-VM (`llamacpp-`) | `playbooks/gpu-llamacpp-k3s.yml` | | `nex` | NEX-Agenten (von nex-admin), nex-stt, nex-tts, nex-searxng, Brücke zu appsrv08 | nex-admin, `playbooks/nex-k3s.yml`, `nex-speech-k3s.yml`, `nex-searxng-k3s.yml` | | `portainer`, `portainer-ce` | Portainer-Agent, Portainer CE | `playbooks/k3s.yml`, `playbooks/portainer-k3s.yml` | | `rustdesk` | RustDesk-Server | `playbooks/rustdesk-k3s.yml` | ## Repo | Pfad | Inhalt | |---|---| | `AGENTS.md`, `project-map.md`, `known-issues.md` | Einstieg für Agenten und neue Admins | | `docs/superpowers/plans/2026-10-12-aufbau-cluster-knaster.md` | Aufbauplan mit Stand je Task | | `docs/BETRIEB.md` | Betriebshandbuch (Monitoring §7, Zugang §8, Firewall §10, k3s §14, Übergabe §15) | | `docs/ANMELDUNG.md` | Anmeldung und Vertretung (Password Depot) | | `docs/PLAN.md`, `docs/adr/`, `docs/spec/` | Architektur, Entscheidungen, Spezifikationen | | `sites/knaster/proxmox.yaml` | Zielbild: Knoten, GPUs, VMs, LXC, Zugang, Firewall | | `sites/knaster/registry.yaml`, `catalog/` | Slots (Modelle je Rolle) und Modellkatalog | | `config/` | Policy, Healer-Regeln, Lifecycle | | `core/` | Python-Paket `knaster` (Router, Healer, Canary, Inventar) und Tests | | `deploy/k8s/` | Manifeste für k3s (Übersicht: `deploy/k8s/README.md`) | | `deploy/compose/` | Compose-Stacks (infra aktiv; gpu-llamacpp, nex-speech nur noch Rückweg) | | `deploy/prometheus/`, `deploy/alertmanager/`, `deploy/grafana/` | Monitoring-Konfiguration für infra | | `platform/proxmox/tofu/` | VMs und LXC (OpenTofu, `bpg/proxmox`) | | `platform/proxmox/ansible/` | Rollen und Playbooks (laufen auf ops) | | `platform/proxmox/scripts/` | Bootstrap, Healthcheck, Zugang auffrischen, Monitoring-Ziele, Admin-Konto | | `n8n/workflows/` | n8n-Workflows (inaktiv importieren) | ## Geheimnisse (nur Orte, nie Inhalte) | Was | Wo | |---|---| | Proxmox-Admin-Passwort, TOTP, root-Passwörter | Password Depot; Kopie Passwörter auf dem Admin-Laptop `it/proxmox/.env` | | SSH-Schlüssel Laptop | Admin-Laptop `it/proxmox/keys/` | | tofu-, pve-exporter-, Healer-Token, k3s-Token, nex-admin-Token, Prometheus-Token, k3s-CA, Gitea-Registry | ops `/root/.config/knaster/` | | Postgres, Router-Token, Grafana-Passwörter, Kopien der Exporter-/k3s-Zugänge | infra `/opt/knaster/infra/.env`, `/opt/knaster/infra/secrets/` | | kubeconfig | ops `/root/.kube/config` |