Build Daily

Tinley Park · October 29, 2026

A Kubernetes homelab on one Mac with Rancher, K3s and Lima

This Kubernetes homelab runs on one Mac: Rancher manages K3s clusters for management, beta and prod, and each cluster is a Lima VM on Apple's Virtualization framework. The map below shows every service in the setup, grouped by layer and by cluster.

Until mid-October, everything behind the GodfreyLabs products ran on one Kubernetes cluster inside Docker Desktop on the same Mac: databases, sign-in, object storage, schedulers, the backends of every site. The plan for leaving was written before the build, in Off Docker Desktop, without stopping anything. Over four days the whole stack moved to the Lima VMs.

The products moved one at a time. elevatedaily.io went first, then eightballsports.com, then paiddaily.io and sagedaily.io, and last the shared platform that all of them depend on. Each product ran in only one place at a time. When the last piece left, Docker Desktop was switched off.

What the management, beta and prod clusters do

The management cluster is the hub. Rancher runs there and manages all three clusters through one UI and one API, with Keycloak for sign-in. Argo CD runs there too. It syncs beta from the beta branch and prod from main, so a merge to either branch starts a deploy to that cluster. Images build on Argo Workflows with BuildKit and go into a private registry. Prometheus, Grafana, Loki and Tempo collect what the other two clusters send. OpenBao holds the secrets. The backup store and Backstage live on the hub as well.

Beta and prod stay lean. They run the products and the data the products need, plus small agents that ship metrics and logs up to the hub. Tools that only an operator looks at stay off the clusters that serve traffic.

Two design decisions apply to every cluster: where the backups are stored, and how the sites reach the internet.

Every cluster backs up into one store, and that store keeps its data in a folder on the Mac itself, outside every VM. If a VM is lost, its backups are still on the Mac.

The sites are published through Cloudflare Tunnel, which dials out from the Mac, so the Mac opens no inbound ports. Cloudflare Access sits in front of the operator surfaces.

The stack, by layer and clusterHover, tap or tab to a service. The red lines show what it talks to.
One Mac, three Linux VMs
FoundationThe VMs, Kubernetes and the control plane that everything else runs on.
All three clusters
Management
DeliveryHow code becomes images, and images become running workloads.
Management
ObservabilityMetrics, logs, traces, alerts, SLOs and cost, collected on the hub.
All three clusters
Beta and Prod
Management
Beta
Security and identityWho can get in, where secrets live, and what is allowed to run.
Beta and Prod
Management
Beta
Prod
DataThe databases and object stores the products and agents use.
Beta and Prod
Management
Prod
Backup and recoveryGetting everything back after a bad day, and proving it with drills.
All three clusters
Management
OperationsPipelines, upgrades and the developer portal that keep it running.
Beta and Prod
Management
Prod

Services by layer

The map groups every service by the job it does:

  • Foundation: the Lima VMs, K3s, Rancher and Fleet, Traefik for ingress, cert-manager for certificates.
  • Delivery: Argo CD for GitOps, Argo Workflows and BuildKit for image builds, a private registry to hold the images.
  • Observability: a Prometheus hub with agents on beta and prod, Alertmanager, Grafana, Loki for logs, Grafana Alloy to collect them, Tempo and the OpenTelemetry Operator for traces, Pyrra for SLOs, Blackbox probes that check the sites from outside, and OpenCost to show where the resources go.
  • Security and identity: Keycloak, OpenBao with External Secrets, Kyverno policies, Falco for runtime alerts, Trivy scans, Cloudflare Tunnel and Access.
  • Data: Postgres on CloudNativePG, Neo4j, Redis, MinIO, and SeaweedFS as the backup store.
  • Backup and recovery: Velero every night with Kopia, Rancher Backup, and K3s control-plane snapshots.
  • Operations: one shared Airflow scheduler with a worker per product, Backstage as the catalog, Reloader to restart pods when their config changes, and System Upgrade Controller for K3s upgrades.

Backups and the restore drill

Velero backs up the clusters every night, with Kopia moving the data. Rancher Backup saves Rancher's own state, and K3s takes snapshots of its control plane. All of these backups go to the SeaweedFS store on the management cluster, which writes to a folder on the Mac outside the VMs. A Rancher restore was tested on a throwaway VM, and Rancher came back in under a minute.

What the homelab costs

The setup added no new spend. Every piece is open source and runs on hardware that was already owned. The costs are memory and disk on one machine, and the time it takes to learn how the pieces fit together.

Hover any service on the map for a short summary and a link to its resource page. Some of those pages are still being written.

  • #kubernetes
  • #k3s
  • #rancher
  • #lima
  • #homelab
  • #argocd
  • #observability
  • #gitops
  • #platform-engineering
  • #architecture

Continue reading