Peering dogfood: second instance on k3s + live A↔B e2e #106
Labels
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: Cordy/Cairn#106
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Peering cannot be dogfooded against itself — we need a second live instance. Deploy cairn-peer on k3s next to the existing enc dogfood (.249): MetalLB has exactly one address left in the pool (192.168.10.250, pool .240–.250), same Keycloak realm is fine (different users make the test more honest — e.g. only
zeus321on the peer), own Garage bucket (cairn-peer), own config secret. Manifests in homelab-configk3s/cairn/.e2e (one-shot workflow
interop-peering.yml, runner as LAN test host, likeinterop-rclone.yml):Open questions:
reverse_proxyh2c/grpc config on the VPS, or decide peering rides a dedicated port. Ties into the external-exposure work (#22) — same TLS storyfiles.c0rdyceps.chneeds anyway.Done — first real A↔B transfer succeeded 2026-08-09. Executed leaner than originally sketched, per Nikola's call: a temporary 1-day second instance (not a standing peer), manual admin flows through the real panel instead of a scripted e2e workflow — which proved the right choice, because the panel's own UX turned out to be part of what needed testing. The deep matrix (negative cases, encryption proof, audit) moves to the v0.7 closed beta as planned.
Setup:
cairn-betaat 192.168.10.247 (the freed IP, not .250), posix driver on its own PVC, local auth via the first-run/setupflow — no Keycloak changes, no Garage bucket, torn down completely afterwards (manifest deleted,kubectl deleteof deploy/svc/pvc/secret). Deliberately minimal: encryption parity was not the goal of this pass; connectivity, trust exchange, and delivery were.Result: mutual key exchange via the panels,
Mülltrennung.docxsent fromcairn-encand delivered into/home/Niko-test/Inbox/dogfood/on beta.The dogfood earned its keep — every layer between panel and delivery had a real defect:
dogfoodvsMain-Cairn) fails closed asSTATUS_UNKNOWN_RECIPIENTon the sender's side.Also validated in passing: the #134 runtime toggle (beta's 503 while off, panel re-enable), the #136 key display/copy flow (used for all four issued keys), #129's receivers lists and both-direction row display, and the PVC persistence work (peering state survived four redeploys mid-test).
Open questions from this issue's body (Gateway API for public gRPC, Caddy h2 on the VPS public path, resource budget under big transfers) are explicitly NOT answered by this LAN pass — they carry to the v0.7 beta / #22 external-exposure work.
Remaining open in v0.5: #124 (README/ARCHITECTURE peering description — this issue passing was its trigger), #142, #145, #146. (Correction: an earlier revision listed #117 here — the OCM adapter was deferred to the closed-beta milestone on 2026-08-05 and is tracked there, now v0.7 after the renumbering.)
First real A↔B transfer completed end to end (2026-08-15 dogfood)
files/enc ↔ files-bao/openbao, both live per-user-encrypted instances over the public HTTPS domains.
Proven end to end (files-bao → files):
Andrej-karpathy-skills.md(5.4 KB) sent tonikola-test@files, group-authorized viacairn-admins, delivered to/home/nikola-test/Inbox/bao/and readable there. Every layer exercised on the real modes:application/grpc; server-side transparent proxy was downgrading HTTP/1.1 and 401-ing the peering RPC);Remaining before closing #106:
Findings filed head-first this session: #234 (group-receiver expansion), #235 (editable peer URL), #236 (replace outbound key), #238 (E2E direction). Net: peering genuinely moves files now, not just handshakes.