Learn new technology using cloud infrastructure or provider is convenient. But, recently my bills increased and then I'm considering to build virtualization host for my simple homelab.
I was considering four options for the hardware:
- Old server, I can get 12 core and high memory capacity with relatively cheap price plus the IPMI capability. But, the power consumption make me think twice, the range is between 300W and up, which not ideal for operational cost.
- Raspberry Pi 4 boards, I thinking to get 5 to 10 raspberries with PXE boot for my playground would be nice. But, considering the overall price I might need more hardware to make it work, not only that more hardware means more work.
- Xeon-D server, specifically Supermicro SYS-E300-8D. It was the most ideal option for me. Not only the specs is great, the price and the power usage relatively low. But, the problem is, I might need to import it because I can't found it in any Indonesian marketplace. Since I don't understand much about the import process and cost, move on :(
- Intel NUC. Small form factor, low power consumption, lot of spec options, but lack of remote management (there are Intel NUC with vPro AMT, but can't find the type in Indonesia).
Finally, I decided to pick on Intel NUC, why?
- Small form factor
- Up to 32GB DDR4 RAM
- One NVMe + one SATA3 for the storage
- Thunderbolt 3, so I can convert it for another use case if needed, :D
- Low power consumption
- The 8th gen of NUC is come! My first NUC is NUC8i3BEH, using i3-8109U (2 core, 4 hyperthread) thats a nice improvement compared to NUC7
Let's move to the software. The NUC will be a virtualization host, I have several options for the hypervisor / virtualization platform:
- ESXi, this is actually the first option I considered. But, the free version come with read-only API, which force me to use the web client. Another option is to use vCenter, I can get the license by join VMUG, but vSphere + vCenter itself already eat lot of resources.
- KVM + libvirt, I have done it before and its quite nice and lightweight. Its also support several infra tools like packer for templating, ansible module, and even terraform provider. But, after I used it I considered to move on because of some issues on tools usage, and also operational overhead, lot of configurations here and there.
- OpenStack and Ovirt, another great options with nice features, this is actually one of the best options considering I already use cloud provider / infra before. I also have been use it before, but the problem I only have one NUC currently, might revisit it someday if I add more servers.
- Proxmox VE, nice features, relatively easy to configure, nice GUI, support KVM and also LXC, support for cluster.
Finally, I decided to go with Proxmox VE (for now). Easy installation, easy configuration, templating feature already in place, and free! I bootstrap my virtualization host with several base images for less than a hour!
Migrating my playground workload to the NUC, metrics infra, databases, message queue, and also kubernetes cluster too. Another thing is to make use of my old raspberry pi as private DNS server.