The main reason I have a Homelab is the simple fact I need it for my network and by that I mean I don’t like running consumer/prosumer routers. For this reason I virtualized my router/firewall using pfsense so I can easily create snapshots of the VM in the event that something where to happen. If a node needs to be rebooted due to maintenance I can easily migrate the guest VM to another node with very little packet drop of around less than 3 packets! I also have multiple OpenVPN clients to my VPN provider(AirVPN) running 24/7/365 to do some policy based routing.
My current homelab looks like this:
- Supermicro 64GB RAM, 500GB NVME and an Intel 10Gb SFP+ NIC.
- Supermicro C2758 32GB RAM and an Intel 10Gb SFP+ NIC.
- Intel Hades Caynon Intel i7 8809G 64GB RAM, 500GB NVME and a Thunderbolt 3 10Gb SFP+.
- Intel NUC Intel i7 8559 32GB RAM, 500GB NVME.
All four servers have Proxmox installed and are in a Cluster for failover and load balancing. The main point of my Homelab was to have my pfsense firewall be available 24/7 with the exception of upgrades to OS. If upgrades are needed on the host I can then migrate the VM to another node and the Network continues to work with very minimal packet loss.
The Switching isn’t really completed as I will try and work in a Collapsed Core model but right now I have an Ubiquiti Edgemax 16 port 10GB switch with 12x SFP+ ports and 4x Copper 10GB which handles all of my 10Gb connections. The Cisco 2960S Switch is the layer 3 device that handles all my VLAN’s and DHCP servers, this will be replaced in the future to something along the lines of Cisco Catalyst 2960X as I want to implement OSPF between pfsense and the Cisco switch instead of relying on static routes.
I recently started to get into Docker and have moved away from VM’s and LXC’s and into Containers as I felt managing a single VM and nice Docker Compose file to bring up my services instead of a bunch of VM’s and LXC’s with each application running made my life easier when updates come, now for updates all I have to do is stop the container delete the Docker image and start the container back up. My future goal is to start moving the Docker local paths into my Truenas NFS share in the event that something happens to the Docker OS.