Artemis is my homelab Kubernetes cluster, built on Talos Linux and managed entirely through Git. Three bare-metal control planes, three VM workers (one with a GPU), all reconciled automatically by Flux CD — push to main, it shows up in the cluster.
📁 kubernetes
├── 📁 apps
│ ├── 📁 actions-runner-system # Self-hosted GitHub Actions runners for CI workflows
│ ├── 📁 cert-manager # Automated TLS certificates via Let's Encrypt
│ ├── 📁 cortex # AI stack — Open WebUI, SearXNG, text-embeddings-inference, ToolHive (9 MCP servers)
│ ├── 📁 default # Personal apps — Immich (photos), Komga (comics), Bookboss (books)
│ ├── 📁 external-endpoints # ExternalName services bridging off-cluster resources into the mesh
│ ├── 📁 external-secrets # 1Password-backed ExternalSecret operator for all cluster secrets
│ ├── 📁 flux-system # Flux Operator, FluxInstance, and GitOps sync entrypoint
│ ├── 📁 home-automation # Home Assistant, Frigate, Zigbee2MQTT, Mosquitto, Matter Server, ESPHome
│ ├── 📁 kube-system # Cilium (CNI/BGP), CoreDNS, Multus, Intel GPU driver, cluster utilities
│ ├── 📁 media # Arr stack, Jellyfin, SABnzbd, qBittorrent+Gluetun, Prowlarr, Bazarr
│ ├── 📁 network # Envoy Gateway ingress, ExternalDNS (Cloudflare + UniFi), Cloudflare Tunnel
│ ├── 📁 observability # Prometheus, Grafana, VictoriaLogs, Fluent Bit, Gatus, Kromgo, KEDA
│ ├── 📁 openebs-system # Local-path storage provisioner for single-node PVCs
│ ├── 📁 rook-ceph # Distributed block storage across 3 OSD nodes (one per control plane)
│ ├── 📁 security # Pocket-ID OIDC provider for cluster-wide SSO
│ ├── 📁 system-upgrade # Tuppr — automated Talos and Kubernetes version upgrades
│ └── 📁 volsync-system # PVC backup and restore via Kopia snapshots
├── 📁 components # Reusable Kustomize components (volsync, etc.)
└── 📁 flux # Flux sync entrypoint → kubernetes/apps| Device | Count | Disk | RAM | OS | Purpose |
|---|---|---|---|---|---|
Lenovo M710q (talos-cp-01/02/03) |
3 | 256GB NVMe (boot) + 256GB SATA SSD (Ceph OSD) | 16GB | Talos Linux | Kubernetes Control Plane |
Proxmox VM on pantheon (talos-w-01/02) |
2 | Virtualized | 32GB | Talos Linux | Kubernetes Worker |
Proxmox VM on pantheon (talos-gpu-01) |
1 | Virtualized | 32GB | Talos Linux | Kubernetes GPU Worker (ASRock Arc A380 6GB passthrough) |
HPE ML150 G9 (pantheon) |
1 | T-FORCE 1TB SSD | 192GB | Proxmox | Virtualization Host |
Supermicro (atlas) |
1 | 3× RAIDZ2 6-wide (~41TB usable) | 94.3GB ECC | TrueNAS SCALE | NAS / Media Storage |
| Device | Role |
|---|---|
| UniFi Cloud Gateway Max | WAN/NAT, L3 gateway, DHCP, BGP (FRR), DNS, UniFi controller |
| Mikrotik CRS309-1G-8S+ | L2 switch only — downstream of UCG-Max on VLAN 1099 (LAB) |
| UniFi US-48 PoE 500W | L2 switch (upstream: UCG-Max) |
| UniFi US-16 PoE 150W | L2 switch (upstream: US-48) |
Thanks to the following for their work and shared knowledge:
- onedr0p/home-ops
- bjw-s-labs/home-ops
- joryirving/home-ops
- Christian Lempa
- TechnoTim
- Home Operations Discord community
This repository is available under the WTFPL License. See LICENSE for details.
