Files
home-network-k3s-impl/bootstrap/gitea/README.md
jakman85andClaude Opus 4.8 e6b4062310 Phase 1: host Gitea as the bootstrap GitOps source (resolves source-URL)
Run a single Gitea container on the host (bootstrap/gitea/), outside the cluster,
while the cluster is built; Flux pulls this repo from it over the k3s-dev NAT
gateway (http://10.73.0.1:3000/Home-Network/home-network-k3s-impl.git, public repo
=> no creds, NAT-only). Wired the flux-system GitRepository url in clusters/dev.
Migrates to in-cluster Gitea in Phase 6. Pins confirmed. Author-only; gate PASS.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
2026-08-16 01:26:47 -05:00

1.9 KiB

bootstrap/gitea — Phase-1 host Gitea (GitOps bootstrap source)

Solves the self-hosted-git chicken-and-egg for Phase 1: the platform's Gitea will eventually run in the cluster (Phase 6), but the cluster needs a git source to bootstrap from. So during bring-up we run a single Gitea container on the host, outside the cluster, and Flux pulls this repo from it.

How it fits

  • bootstrap-gitea.sh starts gitea/gitea on the host with a persistent data dir, HTTP on :3000, reachable from the cluster VMs on the k3s-dev NAT gateway 10.73.0.1.
  • The repo is pushed to it as a public repo (Home-Network/home-network-k3s-impl) — public so Flux needs no credentials; safe because this Gitea is NAT-only, not internet-exposed.
  • Flux's flux-system GitRepository is wired to http://10.73.0.1:3000/Home-Network/home-network-k3s-impl.git (inlined in clusters/dev/kustomization.yaml). bootstrap/flux/bootstrap.sh then apply -k clusters/dev and Flux reconciles from here.

Bring-up order (operator, at execution time — not now)

  1. ./bootstrap/gitea/bootstrap-gitea.sh → create admin + public repo → git push bootstrap main.
  2. tofu apply (infra/tofu) — VMs + k3s-dev net.
  3. Ansible site.yml — k3s HA + Cilium.
  4. bootstrap/sops/age-keygen.sh → install-age-key.sh → bootstrap/flux/bootstrap.sh.
  5. Flux reconciles clusters/dev from the host Gitea.

Phase 6 cutover

Once the in-cluster Gitea is onboarded (gitea.home.keithjackson.dev), push the repo there, repoint the flux-system GitRepository URL, and keep an off-cluster mirror (docs/05 "Circularity & DR"). The host Gitea can then be retired.

Notes

  • Pinned gitea/gitea:1.22 (override GITEA_IMAGE); data at ~/.local/share/home-k3s-bootstrap-gitea (override GITEA_DATA_DIR).
  • No secrets here: admin credentials are created interactively at bring-up, never committed.