Overview

I always think it’s a great idea for every dead serious software developer to personally own a DIY data center, not from cloud provider BS, but a bare metal data center that you can see every solder joins from its mainboard, feel the weights of its CPUs, feel the difficulties of making components work together, etc. Those feelings will make you ascended to higher dimensions.

Joking aside, but it’s cool to:

  • Experience how your applications get delivered from A to Z.
  • Know in-depth how the infrastructures that support the applications actually work and get deployed.

Especially in these days, where this industry diverses into multiple jobs, roles and positions, most developers just code passively, merge PRs and wait for features appear to different development environments with bare minimum knowledge of how things work outside their application boundaries.

Then I plan to build a DIY data center.

Shopping spree

First, this is the hardwares after the long period of searching and dealing

NameTypePrice (VND)QuantityTotalNote
HUANANZHI X99-F8D PlusMain3,200,00013,200,000
CPU Intel Xeon E5-2696v4CPU4,500,00029,000,000
RAM SAMSUNG 32GB DDR4 2133 MHZ ECCRAM1,600,00046,400,000
RAM SAMSUNG 32GB DDR4 2133 MHZ ECCRAM1,600,00046,400,000
SSD PCIe NVMe M.2 2280 2TBStorage3,650,00013,650,000
SSD Kioxia (TOSHIBA) Exceria Plus M.2 PCIe Gen3 x4 BiCS FLASH 1TBStorage1From old laptop
SSD Samsung 850 EVO Plus PCIe NVMe V-NAND 250GBStorage1From old laptop
GIGABYTE UD850GM 80 Plus GoldselleUPS3,990,00013,990,000
VGA Gigabyte RTX 2060 6G GDDR6GPU2,863,85012,863,850
COOLER MASTER ID-Cooling SE-60Cooler718,0001718,000
COOLER MASTER ID-Cooling SE 226 XT BLACKCooler725,0001725,000
Antec NX290Case750,0001750,000
SUM37,696,85037,696,850

The OS layer

After finish assembling hardware components, I install the proxmox and make this hypervisor type 1 server

hypervisor-type-1

This is how it’s look like

proxmox-view

Data center health check (proxmox integrates with influxdb and grafana)

proxmox-view

Data center architecture

higher-level-architecture

For the gateway of the data center system, I choose pfsense , in short, it is a firewall / virtual router that help the data center to connect with outside internet.

As we can see in the architecture diagram, I split the system’s network into 2 separated zone: the standalone app zone and the shooting ground kubernetes cluster zone:

  • The standalone app zone: this zone is for simple apps that help me everyday like pastebin, image hosting app, etc. I use docker compose installed on top of proxmox’s LXC container to run the apps (all are free docker opensource image).
  • The Shooting ground k8s cluster zone: This is for me to gain knowledge and practice about kubernetes and enterprise delivery pipeline.

How I install k8s cluster

There are a lot of codies in the market talk about how useful k3s is and how it’s superior to minikube. But to me, both are non-serious toys, comparing them just like talk about how mature the 6-year-old kid is comparing to 5-year-old kid.

I use talos linux , first I download its iso and upload to proxmox. Then I create 4 VMs with talos linux iso and join them together into a cluster (1 master and 3 slaves)

  • k8s master k8s-master k8s-master
  • k8s slaves k8s-slave k8s-slave

This setup is the closest to the industry production-graded k8s cluster.

Conclusion

Building this DIY data center has been one of the most rewarding side projects I’ve ever worked on. From researching hardware compatibility, assembling every component, configuring the BIOS, installing a Type-1 hypervisor, designing network topology, deploying Kubernetes, and finally hosting my own applications, every step help me to broaden my horizons.

If you’re serious about understanding distributed systems, infrastructure, or cloud-native technologies, I’d recommend building a home lab at least once. It doesn’t need to be expensive, and it doesn’t need enterprise hardware. Start small, break things often, rebuild them, and gradually evolve your setup; you’ll gain something that’s difficult to obtain from tutorials alone: intuition.

And in software engineering, intuition is often what separates someone who merely uses technology from someone who truly understands it.