Thanos Blog

Personal Home Lab

January 2023 Active
Proxmox VE Kubernetes (k3s) ArgoCD Networking Linux Ansible

Overview

My personal home lab is a playground for learning and experimentation. Running on dedicated hardware, it hosts everything from self-hosted services to complex Kubernetes deployments, all managed through infrastructure-as-code principles.

Infrastructure

Hardware

  • Hypervisor Host: Custom-built server running Proxmox VE
  • Network: Managed switch with VLAN support, dedicated router VM
  • Storage: ZFS pool for data integrity and snapshots

Virtualization Layer

The lab runs on Proxmox VE, providing:

  • Virtual machines for various workloads
  • LXC containers for lightweight services
  • Centralized backup management
  • High-availability clustering support

Network Architecture

One of the most interesting aspects is the network design:

Internet
    │
    ▼
┌─────────────┐
│  Router VM  │ ◄── OPNsense firewall
└─────────────┘
    │
    ├── VLAN 10: Management
    ├── VLAN 20: Production
    ├── VLAN 30: Development
    └── VLAN 40: IoT (isolated)
  • Router VM running OPNsense handles all inter-VLAN routing and firewall rules
  • Strict network segmentation between environments
  • VPN access for remote management

Kubernetes Cluster

A k3s cluster runs my production workloads:

Cluster Components

  • 3 control-plane nodes for high availability
  • MetalLB for bare-metal load balancing
  • Longhorn for distributed persistent storage
  • Cert-Manager for automatic TLS certificates

GitOps with ArgoCD

All deployments are managed through GitOps:

  • Application manifests stored in Git
  • ArgoCD monitors for changes and syncs automatically
  • Helm charts and Kustomize for configuration management
  • Automatic rollbacks on failed deployments

Self-Hosted Services

The lab hosts various services:

Service Purpose
Grafana + Prometheus Monitoring and alerting
Pi-hole Network-wide ad blocking
Gitea Private Git repositories
Nextcloud File sync and sharing
Home Assistant Home automation hub
Jellyfin Media streaming

Infrastructure as Code

Everything is automated:

  • Ansible playbooks for VM provisioning and configuration
  • Terraform for Proxmox resource management
  • Helm charts for Kubernetes applications
  • GitHub Actions for CI/CD pipelines

Lessons Learned

Running a home lab has taught me:

  • The importance of proper network segmentation
  • How to debug complex distributed systems
  • Backup strategies and disaster recovery
  • The value of documentation and automation

Current Projects

  • Implementing Talos Linux for immutable Kubernetes nodes
  • Exploring Cilium for eBPF-based networking
  • Building a log aggregation stack with Loki

This lab is an ongoing project that evolves as I explore new technologies!