Commit graph

31 commits

Author SHA1 Message Date
a803eda2c0 docs: fix podinfo/hello-app CNAME target to match actual DNS pattern
An earlier commit (22acad8) pointed these at git.boglabob.com under the
assumption it was a canonical alias target for the server. Checking the
real zone file shows every other hostname (git, photos, music, etc.) is
a CNAME straight to the bare apex boglabob.com instead - git.boglabob.com
isn't special, just one more independent CNAME. Fix podinfo/hello-app to
match.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y4YNpuC2bgT224suQLLJ7B
2026-09-04 10:20:17 +01:00
854780c2bf ci: retrigger hello-app build with dual-scope FORGEJO_TOKEN
All checks were successful
build-hello-app / build-and-push (push) Successful in 33s
FORGEJO_TOKEN now has both repository read (needed for the archive-based
checkout) and write:package (needed for the kaniko push) - confirmed via
a direct curl test against the archive endpoint returning 200.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y4YNpuC2bgT224suQLLJ7B
2026-09-04 10:09:00 +01:00
0106254827 ci: retrigger hello-app build with corrected token/vars
Some checks failed
build-hello-app / build-and-push (push) Failing after 20s
FORGEJO_TOKEN now has package:write scope, and FORGEJO_USER/FORGEJO_ORG
have been moved from repo Secrets to repo Variables where ${{ vars.X }}
actually reads from.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y4YNpuC2bgT224suQLLJ7B
2026-09-04 09:53:51 +01:00
93a9943a7d ci: retrigger hello-app build with workspace mkdir fix
Some checks failed
build-hello-app / build-and-push (push) Failing after 25s
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y4YNpuC2bgT224suQLLJ7B
2026-09-04 09:25:53 +01:00
5d025ef55c ci: mkdir workspace before writing into it
The last failure was identical to the one before the /tmp -> workspace
fix, byte for byte - meaning github.workspace resolves to /tmp itself in
this runner, and the real gap was that nothing creates that directory
before our step runs (actions/checkout@v4 normally does this itself;
plain wget doesn't). mkdir -p it first, and echo the resolved path so a
third failure isn't another blind guess.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y4YNpuC2bgT224suQLLJ7B
2026-09-04 09:25:44 +01:00
bfdc9704cb ci: retrigger hello-app build with fixed checkout step
Some checks failed
build-hello-app / build-and-push (push) Failing after 27s
Forgejo's re-run replayed the workflow file as it was at the original
triggering commit, not the fixed version now on main - needs an actual
new push touching apps/hello-app/src/** to pick it up.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y4YNpuC2bgT224suQLLJ7B
2026-09-04 07:51:15 +01:00
7919d37fcc ci: fix manual checkout writing to nonexistent /tmp in kaniko image
/tmp doesn't exist in the kaniko executor:debug image (confirmed - no
standard FHS layout there at all), so the wget -O target failed with
"No such file or directory". Write into github.workspace instead, which
is known to exist since the build step already uses it.

Also adds the step-7 desktop-vs-k8s clarification from earlier.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y4YNpuC2bgT224suQLLJ7B
2026-09-04 07:48:02 +01:00
baf3ac1724 test the pipeline
Some checks failed
build-hello-app / build-and-push (push) Failing after 20s
2026-09-04 07:32:40 +01:00
912cd596e0 ci: replace actions/checkout with manual tarball fetch in build-hello-app
actions/checkout@v4 needs a Node.js runtime, which the kaniko executor:debug
image doesn't have and has no package manager to install it with (confirmed
via a throwaway podman run - no git, no node, not even /etc/os-release).
Fetch the repo as a tarball from Forgejo's archive endpoint instead, using
wget/tar, which are actually present in the image.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y4YNpuC2bgT224suQLLJ7B
2026-09-04 07:28:23 +01:00
89f738885c docs: fix Forgejo runner setup gaps in stage 3 step 6
- Distinguish the runner registration token from FORGEJO_TOKEN explicitly
  (easy to mix up, causes a confusing "registration token not found" error)
- Split register/daemon into two commands: register is one-shot and exits,
  running only it under --restart unless-stopped silently loops forever
  instead of ever listening for a job
- Add --userns=keep-id, needed so the container can open the rootless
  Podman socket (owned by k8s's host UID, not the container's remapped one)
- Note that <FORGEJO_USER>/<FORGEJO_TOKEN> are placeholders to replace,
  not literal syntax, since bash reads a bare <word> as redirection

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y4YNpuC2bgT224suQLLJ7B
2026-09-04 07:18:52 +01:00
bf6246d577 docs: clarify podinfo's helm CLI snippet is illustrative only
The two commands under step 4 show what imperative Helm install would
look like for comparison, not something to actually run - helm isn't
installed anywhere in this project since Flux handles it declaratively.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y4YNpuC2bgT224suQLLJ7B
2026-09-04 06:34:02 +01:00
354b68b30a Merge branch 'main' of https://git.boglabob.com/codegit/cloud-demo 2026-09-04 00:26:50 +01:00
267e57d1fc Updated docs to describe installation of all required flux components 2026-09-04 00:25:27 +01:00
Flux
ae604b2082 Add Flux v2.9.4 component manifests 2026-09-04 00:20:32 +01:00
af5c1cf010 Updated to reference env variable 2026-09-04 00:16:37 +01:00
5eb5ea5f25 added manual kubernetes clean up script 2026-09-03 22:41:11 +01:00
4ea6d8b9e5 Updated project to improve guidance
Some checks failed
terraform / validate (push) Failing after 37s
2026-09-03 19:06:27 +01:00
63008b3ab9 Switching from unmaintained kubernetes-dashboard to headlamp 2026-08-19 13:24:16 +01:00
68c111b969 docs: full rewrite of QUICKSTART with real explanations, not just steps
Previous version listed commands with light justification; this
explains the actual mechanism at each stage - qemu:///system vs
session, why pools mediate permissions, COW overlays, what cloud-init's
two data files are for, what each virt-install flag does, what a
kubeconfig actually contains, and (the deepest gap) what flux bootstrap
concretely does under the hood: the controllers/CRDs involved, what
GitRepository and Kustomization objects actually do on their reconcile
loops, why apps.yaml gets picked up automatically, and how the auth
Secret works - with kubectl/flux commands to go verify each claim
against the already-bootstrapped cluster rather than take it on faith.
2026-08-19 10:32:39 +01:00
71415dae21 docs: add Caddy exposure guidance specific to QUICKSTART's DHCP networking 2026-08-19 10:13:13 +01:00
22acad855d docs: use CNAME records for podinfo/hello-app, matching existing DNS pattern 2026-08-19 09:25:29 +01:00
Flux
f6e52eb3f0 Add Flux sync manifests 2026-08-19 08:58:31 +01:00
Flux
ecb2e7e0c0 Add Flux v2.9.4 component manifests 2026-08-19 08:58:29 +01:00
92203f004c docs: install flux CLI without brew (no-sudo, matches kubectl pattern) 2026-08-19 08:57:37 +01:00
73d9f92a2e docs: use default SSH key name, install kubectl, fix .kube dir
Some checks failed
terraform / validate (push) Has been cancelled
Rename k8s's key from the custom k3s_homelab to the default
id_ed25519 - the custom name had no real justification (k8s is a
fresh account with nothing to collide with) and caused a real bug:
OpenSSH only auto-offers default-named keys, so ssh commands lacking
an explicit -i silently failed to authenticate. Also add the
never-actually-documented kubectl install step, and mkdir -p ~/.kube
before the first redirect into it, in both SETUP.md and QUICKSTART.md.
2026-08-19 08:40:08 +01:00
a6123398bc docs: fix QUICKSTART - missing default pool/network, tilde-in-arg bug, os-variant
Debian's libvirt-daemon-system doesn't auto-create a default storage
pool (network exists but inactive) - added explicit pool-define/build/
start and net-start steps. Also fixed --cloud-init user-data=~/... not
expanding (tilde only expands at start of a shell word, not after =),
and noted why --os-variant may need to be an older release than the
actual image if osinfo-db is stale.
2026-08-19 08:31:52 +01:00
25eba8fd8b docs: add missing mkdir ~/vms step in QUICKSTART 2026-08-19 07:30:19 +01:00
440cb2077f docs: fix QUICKSTART manual VM storage for system libvirt
Disk images under k8s's home directory aren't readable by the
libvirt-qemu user that actually runs VMs under qemu:///system. Use
libvirt's own default storage pool (vol-create-as/vol-upload) instead,
so libvirtd handles file ownership rather than k8s directly, and pin
LIBVIRT_DEFAULT_URI=qemu:///system throughout.
2026-08-19 07:29:32 +01:00
a3cfba3d6a Split setup into 2 phases and updated docs 2026-08-19 00:03:05 +01:00
dc2f1e85e0 Updated docs to cover tokens for k8s and flux users 2026-08-18 23:26:46 +01:00
5c2080a73b initial scaffold
Some checks failed
terraform / validate (push) Waiting to run
build-hello-app / build-and-push (push) Has been cancelled
2026-08-18 20:22:42 +01:00