I’ve been building Raspberry Pi projects for a few years now. But even with all the Single-Board Computers in my arsenal, I don’t have enough boards for all my DIY ideas. As such, I tend to keep different microSD cards for my essential projects, and often shift the ones that require more processing horsepower to my server nodes.

However, there are some projects that pair exceedingly well with my Raspberry Pi SBCs – to the point where I’d rather not run them on any other device. My all-in-one monitoring hub is one of them, and it’s how I’ve been using the Raspberry Pi 5 in my home lab for the last couple of months.

My Raspberry Pi keeps an eye on my home lab equipment

And barely consumes any power while doing so

If there’s one thing I’ve realized after building a powerful workstation, it’s that redundancy is borderline essential in mission-critical setups. Sure, I could self-host my monitoring server on my main Proxmox workstation and free up my Raspberry Pi, but doing so will add some reliability problems to the mix. I’m not above making mistakes when working with home lab and networking projects, and a minor error in the wrong config file would be enough to bring my entire server crashing down.

Considering that the very purpose of my monitoring hub is to notify me about failed services and excessive resource usage, I absolutely don’t want it to go down with the rest of my workstation nodes. An entirely separate node running these dashboard apps is a reliable option, and thanks to the Raspberry Pi’s low energy consumption, I wouldn’t have to worry about excessive electricity consumption.

I’ve got a couple of monitoring-oriented containers

As for the applications serving in my Raspberry Pi loadout, Pulse serves as the crux of my monitoring hub – at least for the Proxmox nodes. Since my primary workstation runs Proxmox, Pulse can track everything from the uptime of my node to the resource consumption of the individual virtual guests. Plus, it’s compatible with Proxmox Backup Server, and displays the latest snapshots saved to my PBS rig.

I’ve also got other virtualization platforms, general-purpose distros, and even a TrueNAS setup running in my home lab, and that’s where Beszel comes into play. Besides tracking the operational time of my rigs, it can also keep tabs on their resource consumption. Then there’s Uptime Kuma, which performs a similar task for my collection of non-Proxmox services.

Each of these utilities can send notifications via third-party integrations. Me? I self-host Gotify to stay on top of alerts from Pulse, Beszel, and Uptime Kuma. I’ve fine-tuned the notification rules and thresholds for each setup, so I won’t miss out on the essential alerts.

The SBC also monitors my networking stack

On top of housing Homepage

Besides my rigs and virtual machines, my Raspberry Pi is also responsible for keeping tabs on my local network. I’ve been using Pi.Alert for the longest time, and while it’s far from the most useful IDS utility out there, I use it every time I need to scan my network. I’ve also paired it with Gotify to receive notifications when a previously unknown device attempts to connect to my LAN. Afterward, I can check the network logs generated by Pi.Alert to confirm whether it was actually an intruder or just another VM I created using Ansible.

Finally, I use my Raspberry Pi to run Homepage, a dashboard tool that lets me showcase the full brunt of my FOSS tool fleet. The only caveat with Homepage is that it can take a while to customize the widgets and design elements of the YAML file whenever I add a new self-hosted service to my repertoire. But otherwise, Homepage’s sky-high customization makes it the best dashboard app for my home lab, and running it on my isolated Raspberry Pi ensures it will remain active 24/7.

I use a Raspberry Pi OS-based Docker setup

Even though I started off with UmbrelOS

If you’re wondering how I self-host all these monitoring and dashboard apps, I use simple Docker containers running on a Raspberry Pi OS installation. I’d initially contemplated using Podman, as I’d moved quite a few of my Docker containers to the FOSS runtime earlier this year. However, I wanted my mission-critical setup to remain as simple to troubleshoot as possible, which is also the reason why I’m using Raspberry Pi OS as the underlying distro instead of something more resource efficient like DietPI.

To be honest, I’d started off with UmbrelOS. Minus the extra crypto apps, it’s an easy-to-use containerization platform with cool aesthetics. Unfortunately, it doesn’t support Beszel or Pulse, and even though I could try deploying them manually, copying the necessary code to docker-compose.yml file and running docker compose up -d seemed like the most hassle-free way to self-host everything. And since I’m using the 8GB variant of the Raspberry Pi 5, I don’t need to worry about performance issues when running all the apps simultaneously, either.