/goal /ultracode-workflows [HYB-1] harden the bare-k3s VPS germination path (two-step registries + tunnel cutover + public-edge-aware germinate) #25
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.
Blocks
#27 /goal /ultracode-workflows [SPINE-4] re-establish a known-good baseline — germinate a fresh long-lived reference/staging platform from post-SPINE-2/3 main
open-platform/mitosis
Reference
open-platform/mitosis#25
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?
Track/Wave:
HYB-1· Wave M3 · Size LRepos:
mitosisDepends on: DOM-1a
Why
The first client deploys to a single VPS. README documents the bare-k3s two-step but nothing hardens or validates it. Recommended edge = Cloudflare Tunnel (finishes the half-built CUTOVER_TUNNEL seam): outbound-only, no inbound 80/443, no cloud LB. The tunnel alone does NOT give trusted origin TLS — DOM-1a is a hard dependency.
Scope
Make the README two-step real and safe: (a) recipe/registries.yaml.tmpl → /etc/rancher/k3s/registries.yaml BEFORE k3s starts; k3s installed with
--disable=traefik --disable=servicelb --tls-san <domain> --write-kubeconfig-mode 644, behind a default-deny firewall (SSH only; no 80/443) baked into cloud-init. (b) wire the cloudflared tunnel cutover cleanly (CUTOVER_TUNNEL=1). (c) FIX germinate's success card — bin/germinate:535-536 prints 127.0.0.1 /etc/hosts guidance silently wrong on a VPS; branch on CUTOVER_TUNNEL to print tunnel/DNS guidance and drop the self-signed-CA-trust step when DOM-1a's public issuer is active. (d) fold an optional remote/bare-k3s mode into CI-1.Acceptance
A platform germinated on a real non-localhost VPS with a real domain + tunnel is reachable over the public internet, serves the Forgejo admin UI over browser-trusted HTTPS, and builds+ships an app to a public URL — captured as a client-followable runbook (Hetzner CX-class worked example).
Notes
Seam A (bin/up) — after SPINE-3. Persistent storage = k3s local-path; backup = documented off-box cron (see SEC-1 for the key half).
Part of the First Client Deploy → Governance roadmap. The owning agent may recurse into its own subagent team (ultracode workflow) if the task warrants. Honor the seam-serialization: land on a shared seam by rebase, and don't start a seam position until the prior one has merged.
Done in #51 (merged to
mainas6725c32). Bare-k3s two-step recipe inbin/upis copy-paste-correct (registries.yaml before k3s +--disable=traefik,servicelb --tls-san --write-kubeconfig-mode 644, SSH-only firewall note);bin/germinatesuccess card forks onCUTOVER_TUNNELto print tunnel/DNS guidance (traefik.kube-system.svc) instead of /etc/hosts and drops CA-import;docs/deploy/hetzner-vps.mdis the Hetzner + Cloudflare-tunnel runbook (honest about the DOM-1a public-TLS dependency, plat/gitops#3). Validated on the vxrail: freshvalid8dgerminated healthy (mcp+agents Available) and the card printed tunnel guidance under CUTOVER_TUNNEL=1. HYB-2 (real public tunnel + Hetzner box) remains.