I’ve been using my homelab since 2018, so it’s almost 8 years. I decided to use a bit of space in my parent’s home and a proper fibre FTTH connection to host it. Because of that, I need to treat it like a system I do NOT have physical access to on a daily basis. I need to have proper secure remote connections to it and the ability to reboot it without ssh access.

With physical bit solved, it was time to pick software. And there is a ton of it. And which are worth trying? Which one will cooperate with others? Which ones will be easy to maintain? Which one will give me control and preserve my data? Which ones are better to buy than self host?

Now, after that many years, I have my favourites. I often look at other people’s setups to see what they do, given their budgets and constraints, and I wanted to share my time-tested setup with you.

Guiding principles

  • optimize for operator’s time (aka my time)
  • remote access first – assume no physical access for months - like cloud (but private)
  • overprovision storage, CPU, RAM, but do it with old components
  • data must be protected for decades
  • high availability is not that important - 99% is OK
  • allow both quick experiments and long-running critical services - one can’t block the other.
  • use automation responsibly. Who automates/verifies automation? Sometimes having good practises and convention for static configuration makes more sense

Foundation

I started from Ubuntu and LXC initially. As my lab complexity grew with time, I moved to Proxmox.

Proxmox

My current hardware is old but very stable. I can easily forget about it for months if needed. It’s based on two old Dell R730 enterprise servers. They have lots of RAM and disk split into fast NVME for LXC/VMs and HDDs for storage. Both of these are RAID 1 using ZFS. As they use about 100 Watts each, I usually keep only the main one powered on. Power is offset by solar panels, so as long as I don’t use too much, it’s OK.

Backups

Here I use Proxmox Backup Server on HDDs and a remote proxmox backup server in a separate location that syncs the VM data daily. I also do periodic ZFS sync for some of the critical and large (multi TBs) datasets.

User Services

Nextcloud

Nextcloud is one of my most important services. It works on multiple machines and smartphones. To make the most of it, I connect it to Only Office service and ElasticSearch service

https://nextcloud.com

Outline

This is a good notes taking service. I initially used only Git repos, but Outline feels a let better. I can also quickly share some well-formated notes from my experiments with other people if needed.

https://www.getoutline.com

Matrix / ElementX

This serves as secure communication. Not easy to configure but works well. It’s currently my main communicator. You can contact me on it if you like to ask some questions!

https://matrix.org / https://element.io/en/app

Jitsi

It’s a video conferencing platform that is easy to use (but not that easy to configure and operate…). I run it since the Covid-era, as it is easy to share a link with someone you want to talk to. One operational thing I often do is to test a video conference on 3 different devices, especially smartphones (as 2 of them often go different route, and configuration starts breaking at 3)

https://jitsi.org

Infrastructure Services

OPNSense

This is my homelab network entrypoint - all VMs / Containers are behind this. It handles traffic filtering and logging. It also has built-in DNS, so I can keep my my network configuration in one place.

https://opnsense.org

HAProxy

This serves my load balancing need. Straightforward to add/remove services to it. I also use Let’s encrypt for certificates. And it’s very easy to have one HAProxy for “main” traffic and another one for “lab” traffic. ANd then expose what’s in lab and what’s in main

https://www.haproxy.com

Wireguard

Brilliant tiny software! You can quickly configure it. It has run for months in the background. Split-tunnel allows me to always have access to my internal homelab services as well as my usually high-speed internet access on my workstation. I also have OpenVPN, but it was so much harder to configure.

https://www.wireguard.com

Conclusion

The above services are the ones I rely on and have been using for years. These services I consider trusted and can highly recommend. I also run many other services for experiments, for monitoring, and sometimes even write something for myself too. I wrote bytecheck to quickly verify if my data is intact. Or QiVitals, which I develop to see statuses of operations that happen periodically and are scattered in various places and machines.

I hope you will find these recommendations useful.