Commit Graph
48 Commits
Author SHA1 Message Date
Robert RappandClaude Fable 5.1 1f3b12d099 k3s-agent: cloud-init verwaltet /etc/hosts nicht mehr; Befund Netzausfall 20.10. (BETRIEB §14.x)
ci / test (push) Failing after 23s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-20 16:31:56 +02:00
Robert RappandClaude Opus 5.5 4a1bda3409 Merge main in plan/aufbau-2026-10-12: KNOW-Analyse, Ontologie, cpu_roles
ci / test (push) Failing after 22s
main (bis 13.10.) enthielt eine parallele Fassung von Task 0.4 (c81e372) sowie
KNOW-Befunde und die Ontologie. Konflikte zugunsten des Plan-Branches gelöst
(ausgerollter Stand); übernommen aus main: Ontologie (core/src/knaster/ontology,
ontology/, Tests, Router-Image), KNOW-Doku, cpu_roles im Placement samt
Kennzeichnung von pve61 und gode-pc-05/06 im Inventar und Test.
infra-stack kopiert jetzt auch ontology/ nach infra (Router-Build braucht es).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 19:23:22 +02:00
Robert RappandClaude Opus 5.5 50acfa6a95 Verwaltung durch Personen (Weg 1), AGENTS.md, project-map.md, known-issues.md
ci / test (push) Failing after 24s
Admin-Schlüssel je Person auf ops (Bastion) aus sites/knaster/proxmox.yaml
(access.ops_ssh_keys/_revoked), Playbook admins.yml, Test, Übergabe in
BETRIEB §15. Einstieg für Agenten und neue Admins: AGENTS.md, Projektkarte,
bekannte Probleme. Weg 2 (Verwaltung über NEX) als Entwurf in Phase 9.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 18:54:02 +02:00
Robert RappandClaude Opus 5.5 862825fa1e llama.cpp: Embedding mit -ub 4096 (ub 8192 braucht 5 GB Rechenpuffer auf der P2000)
ci / test (push) Failing after 22s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 17:44:15 +02:00
Robert RappandClaude Opus 5.5 986f1116fe k3s: llama.cpp-Server als Deployments (Task 6.1)
ci / test (push) Failing after 22s
Ein Pod je GPU-VM (Embed+Rerank bzw. Chat), Host-Netz mit den Ports aus dem
Compose, P2000 fest per UUID (NVIDIA_VISIBLE_DEVICES). Das Device Plugin
vergibt nur noch Index 0 (M4000). Rolle gpu-llamacpp: gemeinsame Vorbereitung
(prepare.yml), k3s.yml mit Image-Import und Compose-Stopp; gpu-llamacpp.yml
bricht ohne -e llamacpp_compose=true ab.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 17:27:23 +02:00
Robert RappandClaude Opus 5.5 4ac251715e k3s: Pod-Monitoring in Grafana (Task 6.5)
ci / test (push) Failing after 23s
kube-state-metrics (NodePort 30808) und ServiceAccount prometheus-infra (nur
nodes/metrics) im Cluster; Prometheus auf infra liest kubelet/cAdvisor per TLS
gegen die k3s-CA. Ziele per file_sd aus kubectl get nodes, cAdvisor auf die
nötigen Reihen begrenzt. Dashboard "k3s – Pods" (Vorgabe nex), Alerts K3s*
nur mit notify. Playbook monitoring-k3s.yml.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 16:31:03 +02:00
Robert RappandClaude Fable 5.1 39cd150230 Brücke nex: EndpointSlice statt Endpoints, DNS-Prüfung mit getent
ci / test (push) Failing after 21s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-19 13:45:57 +02:00
Robert RappandClaude Fable 5.1 31f6435c2f Namespace nex: Brücke zu appsrv08, Zugang für nex-admin, Pull-Secret
ci / test (push) Failing after 22s
Vorbereitung für Agenten im Cluster (nex-Spec 2026-10-19, D259/D263/D265):
Services ohne Selector auf die Host-Ports von appsrv08, ServiceAccount mit
Role nur für den Namespace nex, Pull-Secret aus einer Datei auf ops.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-19 13:45:18 +02:00
Robert RappandClaude Fable 5.1 d27385e3e1 portainer-k3s: Prüfung über /api/system/status (ohne Anmeldung)
ci / test (push) Failing after 23s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-15 18:47:52 +02:00
Robert RappandClaude Fable 5.1 4d31dda0e5 k3s: Portainer CE mit übernommener Datenbank von appsrv08 (Manifest + Playbook mit Rollback BE→CE)
ci / test (push) Failing after 24s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-15 18:45:37 +02:00
Robert RappandClaude Fable 5.1 2a8badd610 GPU-VMs 8 vCPU / 20 GB, infra 4 GB, ZFS-ARC 2 GB (Rolle pve-host), kein Auto-Reboot durch tofu
ci / test (push) Successful in 29s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-15 17:26:00 +02:00
Robert RappandClaude Fable 5.1 8b1f2a7e95 rustdesk: Schlüsselprüfung über das Secret statt exec
ci / test (push) Successful in 29s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-15 14:47:15 +02:00
Robert RappandClaude Fable 5.1 d11e2d90fc k3s: RustDesk-Server (hbbs/hbbr) als Manifest und Playbook, parallel zu appsrv08
ci / test (push) Successful in 26s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-15 14:41:00 +02:00
Robert RappandClaude Fable 5.1 7d1bdf70e0 k3s: NEX-Websuche (SearXNG) als Umzugstest von appsrv08, NodePort 30880
ci / test (push) Successful in 28s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-15 12:36:28 +02:00
Robert RappandClaude Fable 5.1 9c4e3f1a2f docs: k3s/Portainer (D6) in BETRIEB §14 und Plan; nex-speech.yml abgesichert; k3s-VM DHCP-Client-ID=MAC
ci / test (push) Successful in 28s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-15 12:03:56 +02:00
Robert RappandClaude Fable 5.1 dc4edb643f k3s: Konfigurationsverzeichnis anlegen
ci / test (push) Successful in 27s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-15 11:58:59 +02:00
Robert RappandClaude Fable 5.1 d9537cbb42 k3s-server: kubectl-Version ohne Regex ableiten (YAML-Escape)
ci / test (push) Successful in 26s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-15 11:58:41 +02:00
Robert RappandClaude Fable 5.1 3a8e9f3357 refresh-vm-access: Dienst-VMs mit aufnehmen (Lesefehler behoben)
ci / test (push) Failing after 23s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-15 11:57:57 +02:00
Robert RappandClaude Fable 5.1 2c1d43e9c7 k3s (D6): Dienst-VM k3s per tofu, Rollen k3s-server/k3s-agent/k3s-apps, Manifeste, NEX-Sprachdienste als k3s-Umzugstest
ci / test (push) Failing after 22s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-15 11:55:18 +02:00
Robert RappandClaude Fable 5.1 96cc1ab9c6 infra: feste Adresse 192.168.100.188 statt DHCP, DNS im LXC gesetzt
ci / test (push) Successful in 32s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-14 19:10:06 +02:00
Robert RappandClaude Fable 5.1 97bbb58433 docs: Betriebshandbuch §8–§13 (Zugang, Benachrichtigungen, Firewall, Zertifikat, Netzwerk, Testvorgehen), healthcheck.sh, Plan Phase 4 erledigt
ci / test (push) Successful in 27s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-13 17:12:51 +02:00
Robert RappandClaude Fable 5.1 47ad1580ff pve-cluster: Verwaltungsports nur aus IPSET admin (Proxmox ergänzt management stets um das /24); Skript nutzt python auf dem Laptop
ci / test (push) Successful in 25s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-13 17:08:42 +02:00
Robert Rapp 87b678e7a8 pve-cluster: cluster.fw ohne mode (pmxcfs erlaubt kein chmod)
ci / test (push) Successful in 26s
2026-10-13 17:06:40 +02:00
Robert Rapp f3cfacfe48 pve-cluster: Token-Abfrage verträgt fehlenden Benutzer (Probelauf)
ci / test (push) Successful in 27s
2026-10-13 17:06:05 +02:00
Robert Rapp d9b2539dea pve-cluster: when-Listen in Anführungszeichen (YAML-Flow-Sequenz)
ci / test (push) Successful in 26s
2026-10-13 17:05:43 +02:00
Robert RappandClaude Fable 5.1 81602373fc pve-cluster: Phase 4 als Rolle – Admin-Gruppe/-Konten, Healer-Token, Benachrichtigungen, Firewall mit IPSET management (Tasks 4.1–4.4)
ci / test (push) Failing after 21s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-13 17:05:30 +02:00
rorappandClaude Opus 5.5 c81e372c49 sites: Inventar und Zielbild an echte Knoten (pve44–pve61) angepasst; ADR-0001/0002/0006 ergänzt
ci / test (push) Successful in 25s
Aufbauplan Task 0.4:
- inventory.yaml: pve44/46/48/52/61 und GODE-PC-05/06 (Ada, Windows, cpu_roles: false)
- proxmox.yaml: eine GPU-VM pro Knoten mit allen Karten (D2), local-lvm/tank (D1 B),
  192.168.100.0/24 ohne VLAN, Gast-IPs .220–.239 (ANNAHME bis Task 0.2)
- registry.yaml/prometheus.yml: ops-Labels auf gpu-pve44/46/48, Ada ohne pve_node/vmid
- tofu: dynamische hostpci, Speicher je Gast; Ansible: pve_gpu_hosts/pve_kiosk,
  Replikation auf mehrere Ziele
- Placement: cpu_roles=false schließt Arbeitsplätze/Kiosk von CPU-Rollen aus
- PLAN §1.3/§1.4/§9 und ADR-Nachträge (D1 entschieden, D2/D3 Bestätigung offen)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 01:39:49 +02:00
Robert RappandClaude Opus 5.5 5c790cc8d4 gpu-llamacpp: Compose auf P2000 per device_ids, Rolle und Playbook (Task 6.1)
ci / test (push) Successful in 27s
- Build-Pin wie im Benchmark (b6000 = 4762ad7, CUDA 12.4, sm_52;61), Host-Netz,
  Log-Rotation, /slots und Web-Oberfläche aus, Qwen3 ohne Denkphase.
- Exporter aus dem Compose entfernt (laufen nativ, Rolle gpu-exporters).
- Rolle gpu-llamacpp: Karten-UUID über den Namen, Modelle mit Prüfsumme,
  ufw-Regeln nur vorgemerkt. Inventargruppe gpu_llamacpp (ohne gpu-pve52).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 21:28:33 +02:00
Robert RappandClaude Opus 5.5 456fce2386 infra-stack: Schutz gegen veralteten ZFS-Seiten-Cache nach HA-Umzug, Betriebsabschnitt 7
ci / test (push) Successful in 28s
Bei der HA-Probe startete dockerd auf pve48 nicht (bbolt „invalid freelist page“): Nach zfs receive
liefert der Zielknoten für früher gemappte Dateien alten Inhalt aus dem Seiten-Cache. Ein oneshot-Dienst
im LXC verwirft vor containerd/docker den Cache aller Dateien (posix_fadvise DONTNEED).
BETRIEB.md Abschnitt 7: URLs, Geheimnisse (ohne Werte), file_sd auffrischen, Wiederherstellung.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 20:49:49 +02:00
Robert RappandClaude Opus 5.5 ddd7ad033d nex-speech: Dateirechte explizit (Clone auf ops ist 0600, Piper läuft als nobody)
ci / test (push) Successful in 29s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 20:41:35 +02:00
Robert RappandClaude Opus 5.5 afc5fa0360 nex-speech: Sprachdienste für NEX (whisper.cpp CUDA 12 + Piper) als Compose und Ansible-Rolle
ci / test (push) Successful in 29s
- deploy/compose/nex-speech: whisper-server v1.9.4 (sm_52/sm_61, Port 8178, -l de -bs 5
  --convert, tmpfs, Aufwärmen mit 1 s Stille) und OpenAI-kompatibler Piper-Wrapper
  (Port 8179, mp3/opus/aac/flac/pcm gestreamt, wav, PCM 24 kHz mit Rate-Header)
- Host-Netz, damit ufw greift; keine Texte in Logs, kein Access-Log
- Rolle nex-speech + Playbook (nur gpu-pve52): ufw, Modelle mit sha256, Compose bauen/starten
- compose-check um nex-speech erweitert, community.docker in requirements.yml

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 20:41:11 +02:00
Robert RappandClaude Opus 5.5 02f1d62715 infra-stack: Repo-Auszug für Container-Benutzer lesbar machen (Clone auf ops ist 0600)
ci / test (push) Successful in 29s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 20:26:20 +02:00
Robert RappandClaude Opus 5.5 bf7c137adf infra: Compose-Stack mit Monitoring, ohne LiteLLM (Task 5.2)
ci / test (push) Successful in 28s
- deploy/compose/infra: Dienst litellm entfernt (D4), Router auf LITELLM_BASE_URL
  (appsrv08, Port noch offen), alle Images gepinnt, Grafana und pve-exporter
  ohne Profile, node-exporter für den LXC, Zustand über KNASTER_STATE_DIR
- Prometheus: GPU-VMs per file_sd (node, gpu), Proxmox-Knoten per IP, infra-node
- Grafana: Datasource und Dashboards provisioniert (grafana.com 10347, 1860,
  14574 sowie knaster-Übersicht)
- Alertmanager: n8n-Receiver nur vorbereitet (auskommentiert)
- Ansible: Rollen infra-stack und gpu-exporters, Playbooks monitoring.yml und
  monitoring-targets.yml, Skript monitoring-targets.py (tofu output → file_sd)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 20:22:26 +02:00
Robert RappandClaude Opus 5.5 c1f11d2660 tofu: Container-Pool nicht über tofu (pool_id erzwingt Ersetzen)
ci / test (push) Successful in 29s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 20:06:29 +02:00
Robert RappandClaude Opus 5.5 438e0949e9 tofu: Gäste in die Pools gpu und infra (Task 4.5)
ci / test (push) Successful in 28s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 20:06:05 +02:00
Robert RappandClaude Opus 5.5 c794cd3f0a docker-host: Compose-Paketname für Debian 13
ci / test (push) Successful in 28s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 19:54:24 +02:00
Robert RappandClaude Opus 5.5 56576c7d3c scripts: Zugang auch für Infra-Container (Hostschlüssel per pct exec, Knoten nach HA-Umzug)
ci / test (push) Successful in 30s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 19:53:37 +02:00
Robert RappandClaude Opus 5.5 bf20da1629 infra: HA-Ressource und Node-Affinity per pve-host statt tofu, Infra-IP im Inventar
ci / test (push) Successful in 29s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 19:41:17 +02:00
Robert RappandClaude Opus 5.5 23d6e36028 gpu-vms: DHCP-Client-ID auf MAC, Docker-Runtime als Aufgabe, Zugang nach Neustart auffrischen
ci / test (push) Successful in 28s
Nach dem Treiber-Neustart hatten gpu-pve44 und gpu-pve46 ihre DHCP-Adressen
getauscht; die strenge Hostschlüssel-Prüfung hat den Lauf gestoppt. netplan
nutzt jetzt die MAC als Client-ID (Voraussetzung für Reservierungen, D5).
Der Handler für nvidia-ctk ist eine idempotente Aufgabe, vor dem Neustart
werden Handler ausgeführt. scripts/refresh-vm-access.sh holt Adressen aus
dem Agenten, schreibt das Inventar und trägt die Hostschlüssel ein.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 19:39:25 +02:00
Robert RappandClaude Opus 5.5 ba42ce3f9d scripts: Hostschlüssel der GPU-VMs über den Gast-Agenten eintragen
ci / test (push) Successful in 27s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 19:19:58 +02:00
Robert RappandClaude Opus 5.5 72e293ce9a ansible: Python-Interpreter der GPU-VMs festlegen
ci / test (push) Successful in 27s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 19:13:03 +02:00
Robert RappandClaude Opus 5.5 e5d1fa45b1 tofu: neue Ressourcennamen des Providers (hardware_mapping_pci, haresource)
ci / test (push) Successful in 27s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 19:09:08 +02:00
Robert RappandClaude Opus 5.5 ff74c1a7b2 tofu: GPU-VMs mit allen Karten des Knotens, DHCP über Gast-Agent, Provider für PVE 9
ci / test (push) Successful in 28s
bpg/proxmox ~> 0.116.0 (nur API). Template je Knoten, Speicher je Gast,
hostpci dynamisch aus vms.*.gpus, kein Secure Boot (DKMS), Vendor-Snippet
für den qemu-guest-agent, Ausgabe ansible_inventory für die DHCP-Adressen.
scripts/make-template.sh legt das Ubuntu-24.04-Template mit Prüfsumme an.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 19:04:56 +02:00
Robert RappandClaude Opus 5.5 9b2ad426da pve-host: update-grub ohne ZFS-Root wirklich ausführen
ci / test (push) Failing after 27s
proxmox-boot-tool refresh endet ohne proxmox-boot-uuids mit Exit 0, die
Verkettung mit || hat update-grub deshalb nie erreicht.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 19:00:33 +02:00
Robert RappandClaude Opus 5.5 ac91744ce0 pve-host: lesende Aufgaben auch im Check-Modus ausführen
ci / test (push) Failing after 27s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 18:59:09 +02:00
Robert RappandClaude Opus 5.5 908c698589 proxmox: Site-Datei und pve-host-Rolle an die echten Knoten (pve44–pve61) angepasst
ci / test (push) Failing after 27s
proxmox.yaml mit gelesenen PCI-IDs/IOMMU-Gruppen, eine GPU-VM pro Knoten
mit allen Karten, DHCP, Templates je Knoten. pve-host nur für GPU-Knoten:
vfio-pci-IDs auf dem Knoten gelesen, softdeps, sysfb aus, initramfs-
Handler, Vendor-Snippet für den Gast-Agenten, Replikation erst wenn
der Container existiert.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 18:58:34 +02:00
Robert RappandClaude Opus 5.5 640e79dbe8 feat(platform): bootstrap-node.sh für Proxmox-Knoten (Schlüssel, Paketquellen, full-upgrade)
Idempotent, läuft vom Admin-Laptop in Git-Bash. Hostschlüssel wird nur mit
--reinstall verworfen, das Update läuft per systemd-run abgekoppelt von der
SSH-Sitzung. .gitattributes hält Shell-Skripte auf LF.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 16:35:07 +02:00
rorappandClaude Opus 5.5 f22eaa8449 platform: OpenTofu/Ansible für Proxmox, CI, Makefile, Doku-Abgleich
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 00:54:23 +02:00