A GitOps-managed Kubernetes homelab built on Talos Linux, featuring specialized nodes for storage, GPU compute, and application workloads.
This repository contains the complete infrastructure-as-code configuration for a multi-node Kubernetes cluster running various applications including media servers, AI/ML platforms, game servers, and development tools.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β APPLICATIONS β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
β β Jellyfin β β LLM β β AzerothCore β β Atuin β β
β β Media Stack β β Platform β β WoW β β Shell Sync β β
β β β β β β Server β β β β
β β ββββββββββββ β β ββββββββββββ β β ββββββββββββ β β ββββββββββββ β ... β
β β βJellyfin β β β βOpenWebUI β β β βAuth/Worldβ β β βPostgreSQLβ β β
β β βJellyseerrβ β β βLlamaStackβ β β βServers β β β βServer β β β
β β βRadarr β β β βvLLM β β β βMySQL DB β β β β β β β
β β βSonarr β β β βComfyUi β β β βPHPMyAdminβ β β β β β β
β β β β β β βSigstore β β β β β β β β β β β
β β ββββββββββββ β β ββββββββββββ β β ββββββββββββ β β ββββββββββββ β β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β CORE SERVICES β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
β β Gateway β β Observabilityβ β Storage β β Security β β
β β β β β β β β β β
β β ββββββββββββ β β ββββββββββββ β β ββββββββββββ β β ββββββββββββ β β
β β βEnvoy β β β βSigNoz β β β βOpenEBS β β β βCert-Mgr β β β
β β βGateway β β β βClickhouseβ β β βMayastor β β β βTailscale β β β
β β βNginx β β β βKepler β β β βCache β β β βSOPS β β β
β β βIngress β β β βOTEL β β β βReplicatedβ β β βAge β β β
β β ββββββββββββ β β ββββββββββββ β β ββββββββββββ β β ββββββββββββ β β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
β β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
β β Networking β β GPU β β MetalLB β β KubeVirt β β
β β β β β β β β β β
β β ββββββββββββ β β ββββββββββββ β β ββββββββββββ β β ββββββββββββ β β
β β βCilium β β β βAMD GPU β β β βL2/BGP β β β βVM β β β
β β βCNI β β β βPlugin β β β βLoadBal. β β β βPlatform β β β
β β βNo Proxy β β β βIntel GPU β β β βAddress β β β βCDI β β β
β β βMesh β β β βPlugin β β β βPool β β β β β β β
β β ββββββββββββ β β ββββββββββββ β β ββββββββββββ β β ββββββββββββ β β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β KUBERNETES LAYER β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β ββββββββββββββββββββββββββββββ β
β β Flux CD β β
β β GitOps β β
β β ββββββββββββββββββββββ β β
β β β Git Repository β β β
β β β SOPS Encryption β β β
β β β Kustomization β β β
β β β Auto Sync β β β
β β ββββββββββββββββββββββ β β
β ββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β NODE TOPOLOGY β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β βββββββββββββββ βββββββββββββββ βββββββββββββββ βββββββββββββββ β
β βControl Planeβ β Storage β β Worker β β GPU β β
β β Nodes β β Nodes β β Nodes β β Nodes β β
β β β β β β β β β β
β β βββββββββββ β β βββββββββββ β β βββββββββββ β β βββββββββββ β β
β β βmaster1 β β β βstorage1 β β β βworker1 β β β βgpu1 β β β
β β βmaster2 β β β βstorage2 β β β βworker2 β β β βgpu2 β β β
β β βmaster3 β β β β β β β β β β β β β β β
β β β β β β βBonded β β β βGeneral β β β βAMD/Intelβ β β
β β βMixed HW β β β βNetwork β β β βWorkload β β β βGPU β β β
β β βSchedul. β β β βHugepage β β β β β β β βML/AI β β β
β β βββββββββββ β β βββββββββββ β β βββββββββββ β β βββββββββββ β β
β βββββββββββββββ βββββββββββββββ βββββββββββββββ βββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β TALOS LINUX β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Security Features β β
β β β’ LUKS2 Disk Encryption β β
β β β’ Secure Boot Support β β
β β β’ Immutable OS β β
β β β’ API-driven Configuration β β
β β β’ No SSH/Shell Access β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β PHYSICAL HARDWARE β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
- Operating System: Talos Linux with secure boot support
- Kubernetes Distribution: Vanilla Kubernetes managed by Talos
- GitOps: Flux CD for continuous deployment
- Networking: Cilium CNI with Tailscale mesh networking
- Storage: OpenEBS with Mayastor for high-performance storage
- Observability: SigNoz for logs/metrics/tracing, Kepler for power monitoring
The cluster consists of specialized node types:
- 3 Control Plane Nodes (master1-3): Mixed hardware for control plane workloads
- 2 Storage Nodes (storage1-2): Dedicated storage with bonded networking and hugepages
- 2 Worker Nodes (worker1-2): General application workloads
- 2 GPU Nodes (gpu1-2): ML/AI compute with AMD and Intel GPU support
- Talos Linux nodes configured and running
kubectlconfigured for cluster accesssops-key.txtfile for secret decryption
# Bootstrap Flux CD and initial configuration
make bootstrap-k8s-homelabThis command sets up Flux CD and creates the necessary secrets for GitOps operations.
Contains the core Talos configuration:
talconfig.yaml: Complete cluster and node definitionstalenv.yaml: Environment variables for Talos configurationtalsecret.sops.yaml: Encrypted secrets (disk encryption, Tailscale auth)
GitOps configuration organized by environment:
- Flux CD installation and Git repository setup
- Shared Kustomization bases
Bootstrap (bootstrap/): Initial Flux setup and bootstrapping
Core Infrastructure (core/): β View Core Components Documentation
- Networking: Cilium, MetalLB, Envoy Gateway, Nginx Ingress
- Storage: OpenEBS, persistent volume configurations
- Security: Cert-manager, Tailscale
- Observability: SigNoz, OpenTelemetry, Kepler
- GPU support: Device plugins and Node Feature Discovery
Applications (apps/): β View Applications Documentation
Custom container builds:
acore/: AzerothCore image for WOTLK World of Warcraft serverdesktop/: Custom Fedora desktop bootc image with development toolsganesha-nfs/: NFS Ganesha server image
Enterprise-grade ML infrastructure β
- vLLM deployment with IBM Granite models β
- Sigstore model validation and integrity verification
- OpenWebUI for LLM interaction
- Llama Stack for AI agent development
- Atuin shell history sync β
- Nextcloud for file sharing and collaboration
- Testing namespace for experimental deployments
Complete media automation and streaming setup β
- Jellyfin media server with hardware transcoding
- Jellyseerr for media requests
- Sonarr/Radarr for content management
- Steam game cache and game streaming server β
- Disk Encryption: LUKS2 encryption for all system and ephemeral storage
- Secret Management: SOPS with age encryption for GitOps secrets
- Network Security: Tailscale mesh networking for secure external access
- Model Integrity: Sigstore-based verification for ML models
- Secure Boot: Support for UEFI secure boot on Talos nodes
- Modify configurations in the appropriate
clusters/homelab/directory - Commit and push changes to the main branch
- Flux CD automatically applies changes to the cluster
- Monitor reconciliation with
kubectl get kustomizations -A
- Create a new directory under
clusters/homelab/apps/ - Add Kubernetes manifests with appropriate namespace, storage, and networking
- Include ServiceMonitor for observability if applicable
- Update
clusters/homelab/apps/kustomization.yamlto include the new app
Build and push custom images from the images/ directory. Each subdirectory contains a Containerfile and any necessary build context.
Renovate automatically creates pull requests for:
- Kubernetes manifest updates
- Helm chart version bumps
- Container image updates
- Flux CD component updates
- Cluster Health: SigNoz dashboards for infrastructure metrics
- Application Logs: Centralized logging through observability stack
- Power Consumption: Kepler for energy monitoring
- Storage Performance: OpenEBS metrics and alerts
This repository includes comprehensive documentation for all components:
- Core Components Overview β - Complete infrastructure component documentation
- Gateway API Configuration β - Modern ingress with automatic DNS and TLS
- GPU Support Infrastructure β - AMD and Intel GPU device plugins
- Storage Infrastructure β - OpenEBS with Mayastor high-performance storage
- Observability Stack β - SigNoz monitoring and tracing platform
- Tailscale Networking β - Secure mesh networking and zero-trust access
- MetalLB Load Balancer β - Bare-metal load balancing
- KubeVirt Virtualization β - Virtual machine platform
- Applications Overview β - Complete application portfolio
- Jellyfin Media Stack β - Media server with automation
- LLM Platform β - AI/ML inference platform
- AzerothCore WoW Server β - World of Warcraft private server
- Enshrouded Game Server β - Survival game dedicated server
- Steam Game Cache- and Streaming Platform β - Steam cache- and streaming server