Skip to content

docs(examples): end-to-end homelab stack manifests (J1)#149

Merged
astrojerms merged 1 commit into
mainfrom
docs/j1-examples
Jul 20, 2026
Merged

docs(examples): end-to-end homelab stack manifests (J1)#149
astrojerms merged 1 commit into
mainfrom
docs/j1-examples

Conversation

@astrojerms

Copy link
Copy Markdown
Owner

J1 — end-to-end example manifests

Adds examples/homelab/ — the full homelab vision as deploy-today manifests, tying together everything shipped this cycle (GPU passthrough, node prep, Longhorn/NFS storage, generic Platform, tunnel exposure). Nothing bespoke: the cluster is a k3s.Cluster, every app is a stock Helm chart in a HelmRelease, exposure is a Tunnel + DNSRecord.

File Kind(s) What
01-cluster.cue k3s/Cluster control plane + general/GPU/storage pools; GPU passthrough + nodePrep: open-iscsi
02-platform.yaml k8s/Platform traefik, cloudflared, longhorn, nfs, nvidia + a generic kube-prometheus-stack (K4a)
03-tunnel.yaml cloudflare/Tunnel one connector fronting every public app
04-dns.yaml cloudflare/DNSRecord CNAMEs that $ref the Tunnel's cnameTarget
05-ollama-openwebui.yaml k8s/HelmRelease Ollama on GPU + Open WebUI
06-media-and-services.yaml k8s/HelmRelease Jellyfin (NFS), MinIO, Authentik (SSO)

The README walks the deploy path and the three wiring mechanisms the whole stack leans on: $ref outputs (kubeconfigPath, tunnel cnameTarget), $secret credentials (tunnel token via action provider; Vault), and nodePrep prerequisites (open-iscsi for Longhorn).

Verification

  • 01-cluster.cue schema-checks offline: openctl validate -f examples/homelab/01-cluster.cueValid: 1 resource(s) (exercises the new nodePrep + gpu fields against the compiled-in k3s schema).
  • All YAML is well-formed and carries valid apiVersion/kind/metadata.name, matching each plugin's advertised schema.

Docs/examples only — no Go changes.

Add examples/homelab/ — the full homelab vision as deploy-today manifests,
tying together everything shipped (GPU passthrough, node prep, Longhorn/NFS
storage, generic Platform, tunnel exposure):

- 01-cluster.cue    k3s Cluster: control plane + general/GPU/storage pools;
                    GPU passthrough + nodePrep(open-iscsi). openctl-validated.
- 02-platform.yaml  Platform: traefik, cloudflared (token via action $secret),
                    longhorn, nfsProvisioner, nvidiaDevicePlugin + a generic
                    kube-prometheus-stack (K4a).
- 03-tunnel.yaml    Cloudflare Tunnel fronting every public app.
- 04-dns.yaml       DNSRecord CNAMEs that $ref the Tunnel's cnameTarget.
- 05/06 *.yaml      HelmReleases: Ollama+Open WebUI (GPU), Jellyfin (NFS),
                    MinIO, Authentik (SSO).
- README.md         deploy path + the three wiring mechanisms ($ref outputs,
                    $secret credentials, nodePrep prerequisites).

The .cue cluster schema-checks offline (openctl validate); the plugin-kind
YAML is well-formed with accurate apiVersion/kind/spec shapes. Docs only,
no code change.
@astrojerms
astrojerms merged commit dfbb19c into main Jul 20, 2026
6 checks passed
@astrojerms
astrojerms deleted the docs/j1-examples branch July 20, 2026 00:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant