Homelab Software Recap
Roughly a year ago I redid my entire home network and could then officially call it a homelab. Unfortunately the insane delays in acquiring Raspberry Pi's has put quite the delay in finishing this setup. So while I continue to sit and wait on available pieces - I want to recap all the software I've come to love and run on this network.
the ad blocker.
Pi-hole technically started in my network long before I built out a homelab. I started running it as my DHCP server in late 2017. This is an immediate benefit of becoming a network wide ad blocking instead of say running an ad blocker in your web browser.
Now every device on my network has to resolve DNS through my Pi-hole instance which will null route anything it deems is privacy invasive or an ad. This has become a requirement to using the Internet as without it I immediatly notice the jarring addition of advertisements injected everywhere.
Thankfully when I'm on the go I can pair some of this software listed below to have my Pi-hole server helping no matter where I'm at in the world.
OPNsense started on my network when I purchased a TLSense 8550U and for never using either pfSense or OPNsense before - I struggled. This is a piece of complex software that has an interesting history behind it.
You can move the clock back to 2004 and find the m0n0wall project which was a firewall distribution on top of FreeBSD. It ended up getting forked to become pfsense which was insanely popular. However, pfsense ownership switched hands and some odd license choices were used and most found an urge to return to the roots of what made m0n0wall popular so OPNsense was forked and born.
I use it for a variety of purposes:
- Firewall rules and configuration
- Wireguard setup for remote VPN when away
- DHCP server w/ static reservations
- Prometheus stats exporting
- VLANs for securing my wireless networks
- Utilizing the insecure UPnP for easier gaming
the defensive wifi monitoring
I configured and setup nzyme after hearing a Tampa local discuss it at a meetup. It was in its infancy at the time and was such a cool piece of software to log some immense details about my network.
It can detect devices are nearby and record time/dates so you can scarily build some logs of when those devices are near your house. They may belong to the UPS driver or a neighbor as their device networks out to my equipment. I blogged in detail of about how I set this up and it always becomes a great discussion point at technical meetups to show folks what your network can discern.
Version 2 of this software is in active development and its going quite fast as the author has left his job of founding Graylog and devoted all time to this.
the visualization of collected data
Grafana is slowly becoming my entry point to check in on all my various services and data. Once you connect a data service, which in my case is Prometheus, I can create a custom dashboard to show what I need to see at a glance. What really blows my mind with this software is how many different widget types there are.
You can create:
- Time series
- Bar char
- Stat / Text
- Gauge / Bar Gauge
- Pie Chart
- State timeline
- Status history
- Alert list
- Node graph
- XY Chart
This is where the confusion sets in - since if you start submitting your own data - what do you build? I'm currently trying to build out a weather dashboard from all the various information I have while also using the panels available from Grafana. Which has become a testing ground of like using a state timeline to show the difference between rain/no-rain throughout the week.
Once the remaining Raspberry Pi's show up, which will become data collectors, I'll have the pieces finalized and can push towards finalizing my Grafana dashboards.
the data collection entity
You can't talk about Grafana without Prometheus and I recently did in detail in an old blog post. Prometheus is the data collection workhorse that doesn't get much fame in this setup. Its UI isn't pretty and it doesn't do anything but orchestrate my data collection targets.
You setup targets which basically publish information to a webpage then you configure Prometheus to crawl that page at a frequency that you prefer. Right now I run queries every 60s which is an insane amount of collected data. I will gain an extra 86,400 data points every day from each configured target.
This is where Prometheus shines with its specific data format which takes advantage of the fact that this data is immutable once its obtained. This allows some interesting packing tricks to group and pack older data together. You can read about this technically on their website if curious about the storage technique.
So both Prometheus and Grafana run on a single Pi I have in this homelab. They work well together and are slowly being built out.
the switching/poe brains
UniFi OS is technically the software that runs on my UniFi Cloud Key Gen2 Plus, which I purchased instead of self-hosting the software on one of my own Pi's. While I initially hosted the software myself - the requirements it needed clashed with the software I had originally installed and became stressful to update.
So this hardware/software pair helps orchestra all the various Ubiquiti equipment I have, which is overkill for a home network no doubt. I've currently got:
In human terms this is
- A 16 port switch with 8 ports capable of doing power over Ethernet (PoE)
- A 8 port switch
- A wireless access point powered via PoE (2x)
So I can jump into the UniFi panel and config and review all my ports on my switch to label/filter them. I can create wifi networks that correlate to VLANs that my OPNsense software created. This allows me to put IOT devices and frankly other devices I don't trust on their own little network.
The interface is incredibly friendly and allows me to run rolling updates so I can slowly update my fleet of equipment.
the media center masterpiece
Plex is what Xbox Media Center would have become if it was invented 20 years later. This is an amazing media collection piece of software for all the metadata handling it does. Toss it a video file and it will automatically parse the title card, information and organize it into seasons.
Plex has also grown to help combat the absolute insanity of streaming services out there. You can search content in Plex and it offers to find that content in any of the services out there. Say I want to watch "See no Evil" - it tells me that I can buy it on a bunch of various services or watch it for free on Tubi.
That is a great feature on top of managing my personal media.
All these various pieces of software help become my homelab when paired together. So when you walk near my place or connect to my network - these are the wonderful projects making that experience possible.