About Tom Lab

A modern homelab infrastructure built with cloud-native technologies

The Project

Tom Lab is a complete migration from Proxmox to a modern Kubernetes-based infrastructure. The goal was to build a homelab that uses cloud-native patterns while still supporting traditional virtual machines.

This blog documents the entire journey: the decisions, the challenges, the solutions, and the lessons learned along the way.

Hardware

Dell PowerEdge R430

  • 2x Intel Xeon E5-2630 v3
  • 128GB RAM
  • Hardware RAID Controller
  • Dual Gigabit NICs
  • iDRAC Enterprise

Network

  • Home Router (Port Forwarding)
  • Static IP: 192.168.1.100
  • MetalLB Pool: 192.168.1.200-220
  • Public IP: 93.8.28.60

Software Stack

Core

  • Talos Linux v1.6.4
  • Kubernetes v1.29.1
  • KubeVirt v1.1.2

Networking

  • MetalLB (LoadBalancer)
  • Traefik (Ingress)
  • Nginx Proxy Manager

Storage

  • Local Path Provisioner
  • Persistent Volumes

Custom Tools

Web Console

Custom administration console built with Go (backend) and React (frontend). Provides a clean interface for managing the cluster, pods, and virtual machines.

Go React TypeScript

Automation Scripts

Bash scripts that automate the entire installation process. Everything is reproducible and version controlled in Git.

Bash Kubernetes Talos

Key Decisions

Talos Linux

Chose Talos for its immutable, API-driven approach. No SSH means no configuration drift. Everything is managed via API and version controlled.

Local Path over Longhorn

For a single-node cluster, Local Path Provisioner is simpler and sufficient. Longhorn requires iSCSI which isn't available in Talos by default.

Custom Console over KubeSphere

KubeSphere installation failed due to outdated charts. Built a custom console that does exactly what we need, nothing more.

NPM for Reverse Proxy

Nginx Proxy Manager provides a user-friendly interface for managing domains and SSL certificates. Perfect for homelab use.

Project Goals

Resources

Documentation

Project

  • Git Repository: Private (for now)
  • Blog: blog.sortium.fr
  • Console: Local network only