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.
Automation Scripts
Bash scripts that automate the entire installation process. Everything is reproducible and version controlled in Git.
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
- ✅ Infrastructure as Code - Everything in Git
- ✅ Immutable Infrastructure - No manual changes
- ✅ Unified Platform - Containers and VMs together
- ✅ Modern Stack - Cloud-native patterns
- ✅ Learning Experience - Deep dive into Kubernetes
- ✅ Documentation - Share knowledge and lessons
Resources
Project
- Git Repository: Private (for now)
- Blog: blog.sortium.fr
- Console: Local network only