joakimia homelab
A small Kubernetes cluster at home for learning Linux, cloud-init, Helm, and infrastructure automation. Everything here is rebuilt from code, and it breaks from time to time.
- 1 Proxmox host
- 2 Debian 13 VMs
- RKE2 Kubernetes
- Helm for everything
Services
What runs here
The web interfaces this cluster serves. Apart from this page, each one asks you to log in first.
Request path
How a request gets here
No ports are open at home. The cluster dials out to Cloudflare, and requests come back through that tunnel.
-
Browser
You, over HTTPS
-
Cloudflare edge
TLS, caching, and Access login for every app except this page
-
Tunnel
Outbound only, opened from home
-
cloudflared
Connector pod in the cluster
-
Traefik
Ingress, routes by host name
-
Apps
This page, Grafana, pgAdmin, and friends
Certificates: Cloudflare terminates TLS at the edge; inside the cluster, cert-manager gets certificates from Let's Encrypt.
Cluster
Two nodes on one box
One Proxmox host runs two Debian 13 virtual machines. cloud-init sets them up, and RKE2 joins them into one Kubernetes cluster.
Proxmox VE host
One physical machine, the hypervisor
cp0control plane
Debian 13 VM
- RKE2 server
- API server
- etcd
- Longhorn disk
wk0worker
Debian 13 VM
- RKE2 agent
- App workloads
- Longhorn disk
Longhorn replicates volumes across both nodes, so data survives losing one disk.
Stack
The layers
Each layer is a Helm chart or a seed in the repository, deployed in order from the bottom up.
-
Observabilitymetrics, logs, traces
- Alloy
- Prometheus
- Loki
- Tempo
- Grafana
-
Datadatabases
- PostgreSQL
- PgBouncer
- pgAdmin
-
Identitysingle sign-on
- Authentik
- Cloudflare Access
-
Edge and TLSgetting in
- cloudflared
- Traefik
- cert-manager
- Let's Encrypt
-
PlatformKubernetes and storage
- RKE2
- Longhorn
- Helm
-
Machineswhere it all runs
- Proxmox VE
- Debian 13
- cloud-init