Skip to content

t-eckert/homelab

Repository files navigation

Homelab

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.

Hardware

  • 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

Read more...

Networking

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

What I'm Running

Cluster

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

Home Assistant

This runs on a dedicated Raspberry Pi 4 B.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors