RC1 (crumbzero02) — VPN-Onboarding & Deploy

Der reproduzierbare Weg, wie ein frischer Zero (RC1) dem CrumbVPN beitritt und
das aktuelle missions-core-Target bekommt. crumbconnect ist der SchlĂźssel.

ssh #vpn #wireguard

Rollen (bewusst getrennt):
crumbconnect läuft auf dem Gerät (der Mensch fßhrt aus, die Maschine bekommt
Identität). Der Hub (nullfeld) schließt den Kreis, indem er den Peer registriert.

Fixe Werte (öffentlich — Public Keys sind wie ein .pub):
- Hub-Public-Key: nsVtizXiFfG4+aWR1J+floEMGcKNOjcEAfr94921TnA=
- Hub-Endpoint: 194.164.194.191:51820
- Tunnel-IP für RC1: 10.42.0.22/32 (SOT-Regel „neue Raspis ab .22")
- Mesh-Name: crumbzero02


① Auf RC1 (root) — crumbconnect

scripts/crumbconnect.sh auf RC1 legen (z.B. scp von hier), dann:

sudo HUB_PUBKEY="nsVtizXiFfG4+aWR1J+floEMGcKNOjcEAfr94921TnA=" \
     MY_IP="10.42.0.22/32" \
     ./crumbconnect.sh

Das erzeugt RC1s SchlĂźsselpaar (privat bleibt auf RC1), schreibt
/etc/wireguard/wg0.conf (Split-Tunnel, nur 10.42.0.0/24 — kein Full-Tunnel,
kein Tracking), aktiviert wg-quick@wg0 (reboot-fest) und zeigt RC1s Public Key.

Diesen Public Key an den Hub geben.


② Hub-Seite (nullfeld) — Peer registrieren

In Ansible-Crumbforest/host_vars/nullfeld.yml → wg_peers:

  - { name: crumbzero02, public_key: "<RC1-PUBLIC-KEY>", allowed_ips: "10.42.0.22/32" }

Und Inventar-Zeile in inventory.ini unter [ozm_linux] (falls LAN-erreichbar)
oder als Tunnel-Peer. Dann vom Control-Node (M4):

ansible-playbook vpn-hub.yml --check --diff    # trocken (Schnecki-Weg)
ansible-playbook vpn-hub.yml                    # erst dann pflanzen

Kein wg_hub_service_access (Qdrant/Ollama) nĂśtig, solange RC1 nur missions-core
fährt — das ist der Katalog-Server, der reicht mit dem reinen Tunnel. Erst wenn RC1
questions-core/RAG bekommt, .22 → 6333/11434 nachlegen (wie bei 01).

Test: auf RC1 ping 10.42.0.1 (Hub). Handshake klappt, sobald der Key am Hub steht.


③ Deploy missions-core v0.1.0

Das aarch64-Binary aus dem Release (OZM_Nullfeld_v1 v0.1.0, sha256
ea85b2df…62eb63a3) auf RC1:

scp crumb-missions sysop@10.42.0.22:/home/sysop/crumb-missions      # Ăźber den Tunnel
scp missions-core/deploy/crumb-missions.service sysop@10.42.0.22:/home/sysop/
ssh sysop@10.42.0.22 '
  sudo cp ~/crumb-missions.service /etc/systemd/system/
  sudo systemctl daemon-reload && sudo systemctl enable --now crumb-missions
  curl -s localhost:8791/health; curl -s localhost:8791/api/missions | head -c 300
'

Die missions/ mĂźssen zur Laufzeit unter CRUMB_MISSIONS_ROOT liegen (der Klon
~/Crumbmissions/missions oder aus missions-bash/).


Status: bereit. RC1 (02) liegt noch in der Kiste; sobald es bootet, ist dies ein
Drei-Schritt-Kreis. Nichts am Hub angefasst, bis der Pubkey da ist.
🌲🦀