Skip to content

This is the Kubernetes config for my home cluster, I use Flux to sync this and the cluster itself.

Notifications You must be signed in to change notification settings

1Solon/Home-Server-Configuration

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Solon's Home Server Config

A k8's cluster managed with Talos, Flux and Renovate

GitHub Repo stars GitHub forks

πŸ“‚ Repository structure

The Git repository contains the following directories:

πŸ“ β””β”€β”€πŸ“ kubernetes β”œβ”€β”€πŸ“ apps β”‚ β”œβ”€β”€πŸ“ ai β”‚ β”‚ β”œβ”€β”€πŸ“ litellm β”‚ β”‚ β”œβ”€β”€πŸ“ openwebui β”‚ β”‚ β””β”€β”€πŸ“ searxng β”‚ β”œβ”€β”€πŸ“ dashboard β”‚ β”‚ β””β”€β”€πŸ“ homepage β”‚ β”œβ”€β”€πŸ“ immich β”‚ β”œβ”€β”€πŸ“ manga β”‚ β”‚ β”œβ”€β”€πŸ“ komf β”‚ β”‚ β”œβ”€β”€πŸ“ komga β”‚ β”‚ β””β”€β”€πŸ“ suwayomi β”‚ β”œβ”€β”€πŸ“ ntfy β”‚ β”‚ β””β”€β”€πŸ“ ntfy β”‚ β”œβ”€β”€πŸ“ speedtest-tracker β”‚ β”‚ β””β”€β”€πŸ“ speedtest-tracker β”‚ β””β”€β”€πŸ“ syncthing β”‚ β””β”€β”€πŸ“ syncthing β”œβ”€β”€πŸ“ infrastructure β”‚ β”œβ”€β”€πŸ“ flux β”‚ β”‚ β”œβ”€β”€πŸ“ instance β”‚ β”‚ β”œβ”€β”€πŸ“ notifications β”‚ β”‚ β”œβ”€β”€πŸ“ operator β”‚ β”‚ β”œβ”€β”€πŸ“ receiver β”‚ β”‚ β”œβ”€β”€πŸ“ repositories β”‚ β”‚ β””β”€β”€πŸ“ secrets β”‚ β”œβ”€β”€πŸ“ reflector β”‚ β”‚ β””β”€β”€πŸ“ reflector β”‚ β””β”€β”€πŸ“ reloader β”‚ β””β”€β”€πŸ“ reloader β”œβ”€β”€πŸ“ media β”‚ β”œβ”€β”€πŸ“ cleanuparr β”‚ β”œβ”€β”€πŸ“ dispatcharr β”‚ β”œβ”€β”€πŸ“ flaresolver β”‚ β”œβ”€β”€πŸ“ huntarr β”‚ β”œβ”€β”€πŸ“ jellyfin β”‚ β”œβ”€β”€πŸ“ jellyseer β”‚ β”œβ”€β”€πŸ“ prowlarr β”‚ β”œβ”€β”€πŸ“ qbittorrent β”‚ β”œβ”€β”€πŸ“ radarr β”‚ β”œβ”€β”€πŸ“ recyclarr β”‚ β””β”€β”€πŸ“ sonarr β”œβ”€β”€πŸ“ networking β”‚ β”œβ”€β”€πŸ“ adguard β”‚ β”‚ β””β”€β”€πŸ“ adguard β”‚ β”œβ”€β”€πŸ“ cert-manager β”‚ β”‚ β””β”€β”€πŸ“ cert-manager β”‚ β”œβ”€β”€πŸ“ cilium β”‚ β”‚ β””β”€β”€πŸ“ cilium β”‚ β”œβ”€β”€πŸ“ envoy-gateway β”‚ β”‚ β””β”€β”€πŸ“ config β”‚ β”œβ”€β”€πŸ“ external-dns β”‚ β”‚ β”œβ”€β”€πŸ“ cloudflare β”‚ β”‚ β””β”€β”€πŸ“ cloudflare-ddns β”‚ β””β”€β”€πŸ“ tailscale β”‚ β””β”€β”€πŸ“ tailscale β”œβ”€β”€πŸ“ nodes β”‚ β”œβ”€β”€πŸ“ node-feature-discovery β”‚ β”‚ β””β”€β”€πŸ“ node-feature-discovery β”‚ β”œβ”€β”€πŸ“ nvidia-device-plugin β”‚ β”‚ β””β”€β”€πŸ“ nvidia-device-plugin β”‚ β””β”€β”€πŸ“ tuppr β”‚ β””β”€β”€πŸ“ upgrades β”œβ”€β”€πŸ“ observability β”‚ β”œβ”€β”€πŸ“ kube-prometheus-stack β”‚ β”œβ”€β”€πŸ“ kube-state-metrics β”‚ β”œβ”€β”€πŸ“ metrics-server β”‚ β””β”€β”€πŸ“ node-exporter β”œβ”€β”€πŸ“ projects β”‚ β””β”€β”€πŸ“ colwiki β”œβ”€β”€πŸ“ security β”‚ β”œβ”€β”€πŸ“ authentik β”‚ β”‚ β””β”€β”€πŸ“ authentik β”‚ β””β”€β”€πŸ“ secrets β”‚ β””β”€β”€πŸ“ external-secrets β””β”€β”€πŸ“ storage β”œβ”€β”€πŸ“ databases β”‚ β”œβ”€β”€πŸ“ dragonfly β”‚ β””β”€β”€πŸ“ postgres β”œβ”€β”€πŸ“ garage β”‚ β””β”€β”€πŸ“ webui β””β”€β”€πŸ“ longhorn β””β”€β”€πŸ“ longhorn

πŸ–₯️ Software

The following apps are installed on the clusters.

Applications

Software Purpose
Homepage Customizable homepage dashboard for service management.
Immich Self-hosted photo and video backup solution.
LiteLLM Proxy server for LLM API calls with unified interface.
Open WebUI User-friendly web interface for AI models.
SearXNG Privacy-respecting metasearch engine.
Komga Media server for comics and manga.
Komf Metadata fetcher for Komga.
Suwayomi Free and open source manga reader server.
Ntfy Simple pub-sub notification service.
Speedtest Tracker Internet speed tracking and monitoring tool.
Syncthing Continuous file synchronization program.
Shadow Empire PBEM Bot Discord bot for Shadow Empire play-by-email games.
Colwiki Personal wiki project.

Media Automation

Software Purpose
Jellyfin Media server for movies, TV shows, and music.
Jellyseerr Media discovery and request management for Jellyfin.
Sonarr Automated TV show download and management.
Radarr Automated movie download and management.
Prowlarr Indexer manager/proxy for media automation.
Qbittorrent BitTorrent client with web interface.
Recyclarr Quality profiles and custom formats sync for *arr apps.
Huntarr Missing media searcher for Radarr and Sonarr.
Cleanuparr Automated media cleanup tool for *arr apps.
Dispatcharr Discord notifications for *arr apps.
Flaresolverr Proxy server to bypass Cloudflare protection.

Infrastructure

Software Purpose
Flux CD GitOps continuous delivery for Kubernetes.
Reflector Mirrors ConfigMaps and Secrets across namespaces.
Reloader Triggers pod restarts on ConfigMap/Secret changes.

Networking

Software Purpose
Cilium eBPF-based networking, security, and observability.
Cert-Manager Automated certificate management for Kubernetes.
External DNS Synchronizes Kubernetes services with DNS providers.
AdGuard Home Network-wide ad blocker and DNS server.
Pod Gateway Routes pod traffic through VPN gateway.
Tailscale Zero-config VPN built on WireGuard.
Envoy Gateway Kubernetes-native API gateway powered by Envoy.

Security

Software Purpose
Authentik Identity provider for SSO and authentication.
External Secrets Operator Integrates external secret stores with Kubernetes.

Storage

Software Purpose
Longhorn Distributed block storage for Kubernetes.
Crunchy Postgres Operator PostgreSQL operator for Kubernetes.
Dragonfly Modern in-memory datastore (Redis/Memcached alternative).
Garage Distributed object storage service (S3-compatible).

Observability

Software Purpose
Kube Prometheus Stack Complete monitoring stack with Prometheus and Grafana.
Metrics Server Cluster-wide aggregator of resource usage data.
Node Exporter Prometheus exporter for hardware and OS metrics.
Kube State Metrics Exposes cluster-level Kubernetes object metrics.

Node Management

Software Purpose
Tuppr Talos Linux system upgrade controller.
NVIDIA Device Plugin Exposes NVIDIA GPUs to Kubernetes.
Node Feature Discovery Detects hardware features available on each node.

πŸ“¦ Hardware

Device Count OS Disk Size Data Disk Size Ram Operating System Purpose
Turing RK1 4 2TB NVMe - 16GB Talos Cluster Nodes
Turing Pi 2 1 - - - - Baseboard and KVM
CWWK AMD-7940HS 1 1TB NVMe 8TB HDD (2x) 32GB Proxmox NAS/Cluster Nodes

πŸ€– Automation

Renovate Bot makes sure the components are never outdated.

It creates PullRequests when Helm charts or Docker images have newer versions available and even keeps Flux and k3s up-to-date.

πŸ“ Secrets

Flux supports SOPS in particular AGE, you can encrypt your secrets locally with age and then flux will decrypt them when it applies the manifests. All my secrets are encrypted on my local machine and decrypted by Flux when it applies the manifests.

🌐 DNS

I'm using Cloudflare for external DNS and have a wildcard A record pointing to my traefik instance. Internally I'm using PiHole for DNS resolution, these are injected into the pods via the hosts configmap.

About

This is the Kubernetes config for my home cluster, I use Flux to sync this and the cluster itself.

Topics

Resources

Stars

Watchers

Forks

Contributors 4

  •  
  •  
  •  
  •