OverviewThis WebsiteHome LabTrading BotEcosimProcedural Generation
Projects

Home Lab

Three old computers running a hardened, highly-available Kubernetes cluster — hosting message queues, databases, a git runner, and whatever else needs a home.


Architecture

Three-Node HA

The cluster runs RKE2, Rancher's hardened Kubernetes distribution, across three physical machines. Every node acts as both a control plane member and a worker — there are no dedicated roles. This means the cluster tolerates losing any single machine while continuing to schedule and run workloads normally.


Storage

Longhorn

Persistent volumes are backed by Longhorn, a lightweight distributed block storage engine built for Kubernetes. Longhorn replicates volume data across nodes so that storage survives individual machine failures without manual recovery. Each volume can be snapshotted and restored independently.


Networking

Istio & Wildcard TLS

The service mesh is handled by Istio, which manages traffic routing and mTLS between services. A wildcard DNS record points *.k8s.peterpinto.dev at the cluster, so exposing any service externally is a matter of creating a Gateway resource with the right hostname — TLS is handled automatically.


Workloads

What's Running

The cluster hosts a mix of infrastructure services and experimental projects, none of which are intended for public access:

  1. Gitea Actions Runner — CI for projects hosted on the local Gitea instance
  2. RabbitMQ — message broker used by internal services
  3. Matrix — self-hosted messaging server
  4. InfluxDB — time-series database for metrics and sensor data
  5. SpacetimeDB — experimental database for a game project in progress

Management

kubectl & Helm

Deployments are managed with plain kubectl or Helm depending on complexity. Simple, stateless services get raw manifests applied directly. Anything with meaningful configuration, versioning, or upgrade requirements gets a Helm chart — either an upstream chart with a custom values.yaml or a local one written from scratch.