Zustand cruncher — Container-KrĂŒmel „in the middle"

Stand: 2026-09-25 (abends) · fĂŒr: morgen in der Null / auf dem Parkplatz weiterbauen
Node: cruncher · NetBox device 13 · RPi5 8GB + NVMe + Hailo-8L · Site crumbcase00 (Pelikan-Koffer)


Was cruncher jetzt IST

cruncher ist der Container-KrĂŒmel „in the middle": zuhause im Pelikan-Koffer (crumbcase00),
arbeitet mit crumbdesktop zusammen (#questions-core #missionscore), trĂ€gt spĂ€ter die KrĂŒmelrobos
(#esps #senseron). Der kurze OZM-Museum-Stand war ein Ausflug — jetzt zurĂŒck im Container, wo es
gebaut wurde. Waldtech reist nur im Peli-Case/Vault.

Doppel-IdentitÀt: trÀgt weiter das lebende Exponat (hexapi-Container, mosquitto, InfluxDB) UND
ist jetzt ein echter hailo-node. Default-IP 10.60.0.199 (Container-Kante), WG 10.42.0.19.


Was heute erledigt wurde (alles committet + gepusht auf main)

Strang Was Status Commit
A IdentitĂ€t Rolle mqtt-host→hailo-node, Site→crumbcase00, Tags +hailo+vision−museum, Hailo-8L ins NetBox-Inventory ✅ NetBox + SOT 6f94687
B Hailo-Nerv DKMS fĂŒr -2712 gebaut, hailo_pci geladen, /dev/hailo0, hailortcli identify rc=0 — no-reboot ✅ aebed96
D OZM-Inbox Host-Vertrag User crumb-inbox, /srv/ozm-inbox, INTEGRITY_KEY_V1 (on-node, 0600), export.env, Unit disabled ✅ Primitive fbb360e
C qdrant natives musl-Binary v1.19.1 (16K-page safe), System-Unit, Loopback 6333, readyz 200, NRestarts=0 ✅ geheilt a982a40

Playbooks (alle idempotent, --check zuerst):
playbooks/cruncher-hailo.yml · playbooks/ozm-inbox-host.yml · playbooks/cruncher-qdrant.yml
NetBox-Sync: netbox-raspis.yml --limit cruncher (kann jetzt nb_inventory_items).


⚠ ZUGANG (wichtig fĂŒrs Weiterbauen)

Vom Mac aus ist cruncher NUR ĂŒber den nullfeld-Sprung erreichbar (Inventory sagt 192.168.1.10
ohne Proxy = von unterwegs tot; WG 10.42.0.19:22 direkt vom Mac = Timeout). Ansible-LĂ€ufe brauchen:

# SSH-Config (ProxyJump ĂŒber nullfeld) einmal anlegen:
cat > /tmp/cruncher_wg.cfg <<'EOF'
Host nullfeld-hub
    HostName 194.164.194.191
    User root
    IdentityFile ~/.ssh/crumbforest_spirale
    IdentitiesOnly yes
Host 192.168.1.10
    HostName 10.42.0.19
    User sysop
    IdentityFile ~/.ssh/crumbforest_cruncher
    IdentitiesOnly yes
    ProxyJump nullfeld-hub
EOF
# dann jedes Playbook so fahren:
ANSIBLE_SSH_ARGS="-F /tmp/cruncher_wg.cfg -o ControlMaster=auto -o ControlPersist=60s" \
  ANSIBLE_HOST_KEY_CHECKING=False \
  ansible-playbook playbooks/<play>.yml --limit cruncher --check --diff

Grund: Inline--o ProxyCommand via -e bricht auf ansible 14 / py3.14 (tty-Parser).

Auf dem Parkplatz / im Container hĂ€ngt cruncher lokal (192.168.1.10 bzw. 10.60.0.199) —
dort ist der Sprung nicht nötig, direkt per LAN erreichbar.


Der Host-Vertrag fĂŒr ozmai (Export-Seite steht, wartet auf Code)

Node    : cruncher (WG 10.42.0.19)
Bind    : 10.42.0.19:8790  (wg0, NICHT 0.0.0.0)   ← TCP nullfeld→cruncher bewiesen (PONG)
User    : crumb-inbox (system, nologin)
Binary  : /srv/ozm-inbox/bin/room-export           ← Deploy = ozmai (aus OZM_Nullfeld_v1)
Key     : /srv/ozm-inbox/integrity_key_v1          (HMAC, on-node, 0600, ≠ SSH/WG)
Room    : /srv/ozm-inbox/room                      (read-only Quelle)
Config  : /etc/ozm-inbox/export.env                (OZM_INBOX_* — Namen = Vorschlag, abstimmbar)
Unit    : ozm-inbox-export.service                 (installiert, DISABLED — gehĂ€rtet, wg-scoped)

NĂ€chste Schritte (gemeinsame Kante mit ozmai):
1. ozmai deployt room-export nach /srv/ozm-inbox/bin/ (env-Namen ggf. abstimmen)
2. Unit enable+start → echter Envelope → HMAC → Relay-Spool → STORED_BY_RELAY
3. erst DANACH die Gegendruck-Harness — eng inbox-scoped (KILL nur der Unit, DROP/DELAY/
REORDER/DUP/INVALID_HMAC/REMOVE_ACK/CONCURRENT_EXECUTOR). VERBOTEN auf diesem Host:
DISK_FULL, READ_ONLY_FS, RESTART_NODE, POWER_LOSS (das Exponat teilt sich die Kiste).
Evidence = append-only JSONL-Receipt am Runner, kein NEXUS-Auto-Finding.


Offene Punkte / Beobachtungen (nicht blockierend)

  • UFW ist inactive auf cruncher; mosquitto (1883) + influxdb (8086) binden 0.0.0.0/*
    (weit offen). FĂŒr den echten Envelope-Lauf: eine bezeugte, WG-scoped UFW-Kante setzen — aber
    ERST kartieren, wer mit 1883/8086 spricht (ESPs/VLAN-50/hexapi), sonst killt default-deny das Exponat.
  • Stale IP: 192.168.1.10 (NetBox id 23) hĂ€ngt noch an eth0; primĂ€r ist jetzt 10.60.0.199.
    Harmlos, kann bei Gelegenheit aufgerÀumt werden.
  • Großer Bruder snakeview: volles Hailo-8 (cruncher = 8L), gleicher -2712-Kernel, gleiches
    Muster; hailo_pci lĂ€dt bei beiden ohne modules-load.d via PCIe-modalias → cruncher wird nach
    einem kĂŒnftigen Reboot von selbst wach (snakeview ist der lebende Beweis). #snake
  • qdrant-Scope: lĂ€uft jetzt lokal auf cruncher (leer, 0 Collections). Falls die Vektor-Arbeit
    ganz auf nullfeld/questions-core gehört, wĂ€re „qdrant auf cruncher wieder entfernen" eine Option —
    Architektur-Entscheidung, offen.
  • qdrant systemd-scope: heute System-Unit (nicht systemd --user wie im TODO) — bewusst, fĂŒr
    SSH-Robustheit. Bei Bedarf auf user-scope umstellbar.

Memory-Anker

cruncher-container-kruemel-hailo-node · verwandt: snakeview-hailo-dkms-kernel,
raum-hat-keine-ip-pelicase-key-kontext, pelikan-uplink-scope-sxt-port0,
nexus-passkante-receipt-am-runner, nullfeld-qdrant-ollama-loopback-bind.