This repo contains all of the scripts, definitions, and notes for my homelab. If it can be configured as code and it's not a secret, it's in this repo. My goal is to have as much of my configuration in source control and available for future travelers who would like to use it.
- Bee Link Mini PC running Talos Linux (Kubernetes): Hosts apps, websites, and a media server. This is configured in
./cluster. - Raspberry Pis: I have 3 that run the following
- Home Assistant OS
- OpenWebRX+ radio receiver
- Raspbian Linux play environment
Access to the apps and services across the homelab is managed by Tailscale. For the Raspberry Pis, I run Tailscale as a daemon. In the Kubernetes cluster, I run the Tailscale operator in concert with Traefik to enable TLS. The Traefik+Tailscale model with the reverse proxy also reduces the amount of compute needed to access all of the endpoints.
For sites that I want to have publically accessible with a pretty hostname, I use Cloudflare Tunnels.
┌─────────────────────────────────────────────────────────────────────────────┐
│ Talos Linux K8s Cluster │
│ Bee Machine (10.0.0.67) │
│ Talos v1.11.5 • Kubernetes v1.34.2 │
└─────────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────────┐
│ System Components │
├─────────────────────────────────────────────────────────────────────────────┤
│ • Flux CD - GitOps continuous delivery │
│ • Local Path Provisioner - Dynamic PV provisioning │
│ • Tailscale Operator - Secure external access │
│ • Generic Device Plugin - TUN device access for Tailscale │
└─────────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────────┐
│ Applications & Services │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ Personal Projects │
│ ├─ Field Theories - Personal blog (Astro) │
│ │ └─ Cloudflared - Cloudflare Tunnel │
│ └─ Field Theories BS Sync - BlueSky integration (Rust) │
│ │
│ Media & File Management │
│ ├─ Jellyfin - Media server │
│ │ └─ FileBrowser - Web-based file manager │
│ ├─ CopyParty - File sharing server │
│ └─ Fave - Bookmark manager │
│ │
│ Infrastructure & Utilities │
│ ├─ PostgreSQL - Shared database server │
│ ├─ NTFY - Push notification service │
│ ├─ Uptime Kuma - Uptime monitoring │
│ └─ Umami - Web analytics │
│ │
│ Monitoring Stack │
│ ├─ Grafana - Dashboards & visualization │
│ ├─ Prometheus - Metrics collection │
│ ├─ Loki - Log aggregation │
│ ├─ Promtail - Log shipping │
│ └─ Kube State Metrics - Kubernetes metrics │
│ │
│ Development & Gaming │
│ ├─ Workbench │
│ │ ├─ Debian - Development container │
│ │ └─ Jupyter Lab - Interactive notebooks │
│ └─ Minecraft Server - Game server (scaled on demand) │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────────┐
│ Separate Infrastructure │
├─────────────────────────────────────────────────────────────────────────────┤
│ Home Assistant (10.0.0.195) - Raspberry Pi 4 B │
└─────────────────────────────────────────────────────────────────────────────┘
Legend: StatefulSets use persistent storage • Tailscale provides secure ingress
This is a Talos Linux cluster where I run most of my applications. The configuration for this cluster is in the cluster/ directory, organized into:
-
cluster/apps/- User-facing applications -
cluster/system/- Core infrastructure components -
cluster/infrastructure/- Shared backing services -
Artemis: An agentic app I wrote for finding job postings that match my résumé.
-
Copy Party: A neato file server.
-
Field Theories: My personal blog built in Astro.
-
Field Theories BlueSky Sync: A lightweight Rust application for posting new blog posts to BlueSky and syncing back responses as comments on them. (STILL IN PROGRESS)
-
Flux: A popular, lightweight CI operator for auto-updating the cluster based on Git config.
-
Jellyfin: For media management
-
Minecraft Server: It's Minecraft! I scale this up and down because it's resource intensive-ish
-
Monitoring: Grafana+Prometheus+Loki+Promtail monitoring setup
-
NTFY: Self hosted push notifications
-
Postgres: I use this Postgres server to back my apps on the homelab, run development databases, and
-
Umami: Analytics platform
-
Uptime Kuma: An uptime monitoring application
-
Workbench: A Debian instance and Jupyter Lab with a shared drive for personal data analysis projects
This runs on a dedicated Raspberry Pi 4 B.