Skip to content

eyulf/homelab

Repository files navigation

Alex's Homelab

GitHub Super-Linter

My Homelab utilizes Infrastructure as Code and GitOps methodologies to automate provisioning, operating, and updating self-hosted services. I have also been documenting the progress of this on my blog as part of my homelab refresh.

Using my quick and dirty rebuild script, I can destroy and completely rebuild the Kubernetes Cluster with all defined apps deployed within approximately 30 minutes time.

📖  Overview

The major components of the homelab configuration are split out into sub-directories. For more details, see the README of the following directories.

  • ansible roles for server configuration.
  • kubernetes configuration deployed using ArgoCD.
  • pki script to pre-generate PKI certificates for Kubernetes.
  • terraform configuration for provisioning VMs.

SOPS and age are currently used to encrypt secrets that are stored in git.

⚙️  Hardware

I've also documented this on my personal site, but the hardware used consists of the following.

  • 1x Mikrotik CRS109-8G-1S-2HnD-IN Router

  • 1x CyberPower UPS PR750ELCD

  • 3x ThinkCentre M900 Tiny (USFF)

    • Intel Core i5-6500T 2.50GHz CPU
    • 32GB DDR4 RAM
    • 1TB SSD
  • 1x Custom NAS

    • U-NAS NSC-810A Server Chassis
    • Seasonic SS-350M1U Mini 1U PSU
    • Supermicro X10SLM-F Motherboard
    • Intel Core i3-4170 3.7Ghz CPU
    • 16GB ECC DDR3 RAM
    • 6x 3TB WD Red HDD (RAID-Z3)
    • 120GB SSD (OS)

🤖  Automation

  • Renovate - Periodically scans the repository and opens pull requests when it detects updates for various "package managers", including Ansible, Kubernetes, Helm, and Terraform.

💻  Tasks

I'm using Task to execute tasks defined in Taskfiles that have been created throughout the repository.

🔧  Tech stack

My homelab uses the following software, this list is non-exhaustive.

Logo Name Description
Ansible Server configuration
Debian Base OS for all servers
Docker Container runtime
Helm Package manager for Kubernetes
Kubernetes Container orchestration
KVM Virtual Machine Hypervisor
libvirt Toolkit to manage KVM
MetalLB Load Balancer for bare metal Kubernetes clusters
Renovate Detects and corrects out-of-date dependencies
Sealed Secrets Encrypted Kubernetes secrets that are safe to store in git
sops Encrypted secrets in Git
Terraform VM provisioning

🤝  Thanks

The inspiration to make this public has come from the people that have shared their homelab/kubernetes configurations at awesome-home-kubernetes.