Homelab

In the IT industry, it is not uncommon to operate a home lab. The motives may differ here: some like to host their content themselves, some others strive for certifications and would like to provide the necessary infrastructure. I myself have been running Homelabs for over 10 years - an overview:

Years Function Type Operating system CPU RAM
2008-2010 Hypervisor HP ProLiant DL380 G3 ESX 3.5 2x Intel Xeon @ 3.2 Ghz 6 GB
Gateway Pentium Pro CRUX Linux Intel Pentium Pro @ 200 Mhz 96 MB
Webserver IBM ThinkCentre S50 Debian Lenny Intel Pentium 4 @ 2.8 Ghz 512 MB
NAS DIY Debian Sarge AMD Athlon 64 X2 4200+ @ 2.2 Ghz 2 GB
Firewall IBM NetVista 8364-EXX IPCop 1.4, 1.9 Intel Pentium MMX @ 266 Mhz 256 MB
Firewall IBM ThinkCentre S50 Intel Celeron D @ 2.4 Ghz 512 MB
2010-2011 Hypervisor HP ProLiant DL140 G1 ESXi 3.5 2x Intel Xeon @ 2.4 Ghz 4 GB
NAS QNAP TS-509 Pro Linux Intel Celeron @ 1.6 Ghz 1 GB
Gateway ALIX.3C3 Debian Squeeze AMD Geode LX800 @ 500 Mhz 256 MB
Firewall ALIX.2D13 IPCop 2.x AMD Geode LX800 @ 500 Mhz 256 MB
2011-2012 Hypervisor DIY ESXi 4.1 Phenom X6 1090T @ 3.2 Ghz 16 GB
NAS DIY Debian Lenny AMD Athlon 64 X2 4200+ @ 2.2 Ghz 2 GB
2012 Hypervisor HP ProLiant MicroServer G7 N36L ESXi 5.0 AMD N36L @ 1.3 Ghz 8 GB
NAS HP ProLiant MicroServer G7 N36L CentOS 6 AMD N36L @ 1.3 Ghz 2 GB
2013-2014 Hypervisor HP ProLiant MicroServer G7 N40L ESXi 5.1/5.5 AMD N40L @ 1.5 Ghz 16 GB
Web server Raspberry Pi B Debian Wheezy BCM2835 @ 700 Mhz 512 MB
2014-2016 Hypervisor / Nested NAS DIY ESXi 6.0, CentOS Intel Xeon E3-1230 @ 3.2 Ghz 32 GB
Webserver Raspberry Pi 2 B CentOS 7 BCM2836 @ 900 Mhz 1 GB
2016-2017 Hypervisor DIY vSAN-Cluster ESXi 6.x 2x Intel i3-4360T @ 3.2 Ghz 64 GB
Firewall APU.1D4 IPFire 2.x AMD G T40E @ 1 Ghz 4 GB
2017-2019 Hypervisor DIY vSAN All Flash-Cluster ESXi 6.5 2x Intel Xeon D-1518 @ 2.2 Ghz 196 GB
NAS HP ProLiant MicroServer G8 CentOS 7.x Intel Xeon E3-1220Lv2 16 GB
Note

For more information and pictures, see hardware history.

2020 I have radically reduced my Homelab - it consists only of the following components:

  • a vServer at Hetzner
  • einem HP ProLiant Microserver G8-NAS mit 12 TB
  • a Backup-DAS with 12 TB
  • a FRITZ!Box
  • numerous Raspberry Pis for experiments
  • several ESP32 microcontrollers
  • an APC Smart-UPS 750 UPS to prevent data loss due to power failures
  • various Shelly Plug S for controlling and measuring power consumption

Less is more

Compared to the last Homelab update of 2017, my current setup is significantly more minimalistic - some might argue that it doesn't even live up to the term "Homelab" anymore. The reason for this is that my professional background has changed. While I used to be heavily involved with hardware and VMware-related topics, I now work in the Infrastructure as Code environment, where hardware and hypervisors are of secondary interest.

Beyond that, I also clearly ran out of error analysis for hardware problems. Checking RAM bars, replacing SSDs worn out faster by VSAN and restoring orphaned VMs - all this is not much fun when you have already worked at least 8 hours. The administrative burden was not commensurate with the cost and benefit; and since I no longer serve such issues full-time anyway - why should I do it privately?

Instead of multiple hypervisors and two dozen VMs, I now simply run containers per application. Since the number of hand-picked and required services is manageable, this also reduces the administrative overhead. Hypervisors and dedicated Linux patch management are no longer needed. Required applications are run on the 24/7 running NAS and a Raspberry Pi. Configuration of hosts and applications is done with Ansible.

Various Raspberry Pis serve as playgrounds for tinkering projects - for example, I built two small Kubernetes clusters to familiarize myself with the topic. A discarded Pi 2 serves as a playback device on the TV. A Pi 4 with 8 GB serves as ESXi hypervisor for further testing purposes.

After my IPFire homebrew router died after not even 4 years - probably due to continuous operation - I decided not to buy a successor. This eliminates another layer of complexity in the network - but also a DMZ and VPN access. Without further ado, I configured the latter on the FRITZ!Box. A DMZ is no longer needed, as I no longer host any productive services myself. Things that need to be available are run on a vServer at Hetzner. Past experience has shown that hardware and Internet always fail when you are currently relying on a self-hosted service and are not at home. The switch with 10 Gbit uplinks purchased earlier for VSAN has been replaced with a simple (unmanaged) silent Gbit switch.

Homelab 2022

NAS & DAS

I have a HP ProLiant MicroServer Gen8 serving as my central data grave with the following key data:

  • Intel Xeon E3-1220Lv2 processor (4×2.3 GHz, 3M cache, 17W TDP)
  • 16 GB** ECC DDR3 RAM
  • 250 GB Samsung EVO 850 SSD for services and containers
  • 3×6 TB SATA hard disks (Seagate Ironwolf) in RAID-5 array.

Data exchange between clients is done via Samba, transfers of encrypted data are possible thanks to the AES-NI capable CPU with the maximum of the 1G network of about 125 MB/s.

For containers and some applications, an SSD was retrofitted via the DVD SATA port. Since HP unnecessarily limits the MicroServer's firmware, the boot loader has to be swapped out on an SD card, since booting from the SSD is not possible. CentOS 7 is used as the operating system. The data is backed up weekly via a DAS (Lian-Li EX-503) with 12 TB in a RAID-5 array. An offsite backup via an external hard disk is done sporadically.

Container

One container is run per application (the only exception is Icinga2 monitoring) - on the NAS running Docker CE, on a Raspberry Pi running Podman:

Pi-hole - disabling advertising and tracking. Eclipse Mosquitto - microcontroller communication via MQTT. joke_api - flat jokes and movie quotes as a service for a homebrew voice assistant Node-RED - Home automation InfluxDB - time series database Grafana - visualization of InfluxDB data

Arduino, ESP32, etc.

Some time ago, I started looking into Arduino and ESP32 microcontrollers. One of the first exercises included reading various sensors, such as temperature or humidity sensors. In combination with MQTT and Node-RED, a thermal overview of the apartment can be created quickly. In combination with a time series database, like InfluxDB, developments and trends can be observed.

Node-RED Intent-Handler

With Rhasspy I found a software that can be used to create an extensible offline language assistant. This can be extended independently by functions and commands - without the need for a cloud service. This is where Node-RED comes into play again - it serves as a central point of contact and executes recognized commands.

Note

There is an article series and a talk (📽️) on building the voice assistant.

Outlook

There is always potential for optimization. For example, the NAS is starting to age on the hardware side - but as long as there is no defect yet, I don't want to replace it. As a successor device, I could imagine an Intel Xeon D custom build with a more modern operating system. The individual containers could be managed with Kubernetes instead of docker-compose, even though this adds another layer of complexity.

Translations: