HYB-1: harden bare-k3s single-VPS germination + Cloudflare-tunnel edge #51
No reviewers
Labels
No labels
bug
discussion
duplicate
enhancement
goal
help wanted
horizon:backlog
horizon:governance
horizon:mvp
invalid
operator-decision
question
roadmap
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
open-platform/mitosis!51
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/hyb-1-bare-k3s-tunnel-hetzner"
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?
Roadmap HYB-1 (plat/mitosis#25). Locked decisions: edge = Cloudflare Tunnel, VPS = Hetzner.
What changed
bin/upbare-server two-step — the printed fallback recipe is now copy-paste-correct for a real k3s node:registries.yamlwritten to/etc/rancher/k3s/registries.yamlbefore k3s starts (the only time k3s wires containerd's mirror), the k3s install line with--disable=traefik --disable=servicelb --tls-san <domain> --write-kubeconfig-mode 644, and a default-deny (SSH-only) firewall note since the tunnel is outbound-only (no inbound 80/443). YAML renders flush-left so it pastes cleanly.bin/germinatesuccess card — the reach-it card now forks onCUTOVER_TUNNEL. When set it prints tunnel/DNS guidance (point the tunnel ingress athttp://traefik.kube-system.svc; DNS handled by the tunnel) and drops the self-signed-CA-trust step (a public issuer serves trusted certs), honestly noting DOM-1a (plat/gitops#3) is still open. The local (non-tunnel)/etc/hosts+ CA-trust path is unchanged.traefik.kube-system.svctarget matches the existingensure_kube_system_traefik_alias(bin/lib.sh) added underCUTOVER_TUNNEL=1at germinate ~477. No in-cluster cloudflared deployment is added (dashboard-managed by design).docs/deploy/hetzner-vps.md— new client-followable runbook: Hetzner CX server + cloud-init (SSH-only firewall, two-step k3s), Cloudflare tunnel totraefik.kube-system.svc,DOMAIN=<real> CUTOVER_TUNNEL=1 CLAUDE_CODE_OAUTH_TOKEN=<tok> nix run .#germinate, reach the platform. Honest about manual steps and the DOM-1a public-TLS dependency.Validation
Validated on the vxrail with a fresh cluster
valid8d(CLUSTER=valid8d DOMAIN=valid8d.local PORTS=none CUTOVER_TUNNEL=1 nix run .#up) — see PR comment for the germination result and the tunnel-guidance card output.Closes plat/mitosis#25.
🤖 Generated with Claude Code
6bdebf50c9to270136ac4bValidated on the vxrail â fresh k3d cluster
valid8d(CLUSTER=valid8d DOMAIN=valid8d.local PORTS=none CUTOVER_TUNNEL=1 nix run .#up), platgold2 untouched.Germination healthy:
mcp + agents dispatcher are Available; ci-builder + mcp0.23.15+ agents0.7.3all built on attempt 1;up complete.Card prints TUNNEL guidance under
CUTOVER_TUNNEL=1(not/etc/hosts):The
127.0.0.1 git.<domain>/etc/hosts line count in the log is 0.Cutover alias coherent: germinate added
kube-system/traefik ExternalName -> traefik.traefik.svc.cluster.local, exactly the target the card tells the tunnel to hit.bash -nclean on both files;shellcheck bin/upclean;shellcheck bin/germinateshows only pre-existing info/warnings on untouched lines (203/234/362) â none introduced here.Rebased onto latest
main(includes SEC-1 #52): the FORK_KEY_ACK custody gate + backup-note card lines coexist with the CUTOVER_TUNNEL branch (both preserved). Note: HYB-2 (real public tunnel + Hetzner box) is out of scope here.