DEV Community

loading...
Cover image for Top 10 software for your Homelab in 2021

Top 10 software for your Homelab in 2021

Aaron Berry
I'm a Software engineering working and studying in Sydney, Australia. I'm interested in DevOps, automation and backend web development.
・7 min read

You may have lots of reasons for what you run your lab but there is an always growing list of new things to try in your homelab or server. Check out this quick list of 10 apps that you can try out and see if you can get some new functionality for free through self-hosting.

Portainer

Portainer Web Ui

Docker is a powerful tool that can allow you to host and run apps easily on your servers. Now, docker's main interface is a command-line tool but with an application like Portainer you get a nice GUI interface to manage your host's docker client.

Portainer supports your running Docker environments, Docker Swarms, local or remote by interfacing either directly with the local docker.sock on your host or the remote docker endpoint. The UI can easily be used for either monitoring the status of containers, reading current logs or building and modifying docker container stacks (Dockerfile).

It's a well thought out interface, well supported with updates and very low maintenance. It tries to guide you where it can to use the more advanced features of docker to your advantage.

Plex Media Server

Plex Media Server Web Ui

This is one of the top-rated and downloaded media servers that you can run to get your own Amazon Prime or Netflix level features with all your own content.

Plex lets you bring all of your own content and it will automatically try to match your files to its database of movies and tv and give you reach features like chapter detection, automatic subtitle detection and stream to devices outside your network or syncing to your devices if you don't want your server to be accessible outside your network.

This application is regularly updated and supported by the Plex company and they are always looking to improve features in the application. Recently the company has been expanding its streaming services further to offer free media streaming through their cloud services.

There are other options available to you like Emby or Jelly fin so have a check out of all of them and their features and pick the one that gives you the features you want.

Proxmox

Proxmox Web Ui

This application is best installed on a bare-metal machine as it runs as an OS and will allow for more advanced virtualization features to be used. This OS is installed as a Debian spin with a custom Ubuntu Kernel. This base install has a tiny ram and CPU draw in comparison to other enterprise-level virtualization platforms like ESXi and HyperV so this is a solution suited for lower-powered systems as well. One thing to take note of is the if your looking to use Proxmox is that it is using KVM under the hood for virtualization converting vdmk or ova files to qcow2 can prove to be a chore if you're looking to migrate your existing virtual disks.

Proxmox gives you the perfect environment to quickly spin up and down either VM's or Linux containers for your applications to either try things out or iterate on your infrastructure quickly or run your infrastructure efficiently only when needed using Proxmox's easy to use the web interface to manage your new virtualized infrastructure.

Pi-Hole

Pi-Hole Web Ui

Advertising is EVERYWHERE on the internet these days and you can use extensions in your browsers to try and get around these pesky Ads. But what if you could do this for your whole network to have automatic Ad-Blocking for clients that may not have had ad-blocking capabilities initially.

The application can be installed as a container or on a small device as a Raspberry Pi would work perfectly. You get a nice GUI interface to administer the ad-blocking service and set up normal router capabilities like routes, static IP addresses and DHCP servers if need and you want to replace your router with Pi-Hole. Now with the blocking of any network traffic, you'll always have a time you need to whitelist a domain that just needs to be connected too even if it leads to some Ads due to the cat and mouse game between us and the Marketing companies. The GUI's of Pi-Hole makes it nice and easy to update and manage these filtering whitelist and blacklists either through domains or IP addresses.

Papertrail

Papertrail Web Ui

Log Management is important, aside from monitoring it will be the thing that provides you with the most information about your systems and what's running on them. There are plenty of options for this problem such as Graylog to ELK and they provide their own unique features and interfaces so consult which one works best for you.

The true power of Papertrail for me however was being able to search logs in real-time via the web browser. Much like ELK and similar software you may host yourself, you can also create Alerts on specific log events which can be pushed by email, Slack or other channels should those events occur or when aggregated. The Search bar is also pretty quick when searching back in the logs.

Graylog

Graylog Web Ui

Now if your running applications across multiple containers, multiple hosts or even multiple clouds you are gonna get overrun with how you access the logs of these applications to monitor they are running correctly or diagnose any issues you might come across.

Graylog makes it easy to use standard protocols to export your applications logs either through files and R-SYSLOG or through an automatic remote transport like docker and GELF messaging to export the logs. Once centralised you can set up metrics and dashboards from these imported logs to get some more visibility for your applications and infrastructure.

Graylog is recommended to be set up as soon as possible as the advantages gained from being able to quickly see all logs in one place makes debugging even complex issues a breeze.

Netdata

Netdata Web Ui

Netdata is server monitoring on steroids. Starting off it's a local install with a one-liner found on the Netdata site. The never-ending (seemingly) downward scroll presents graphical real-time breakdowns into systems, applications and everything running on the system. Each release provides a greater set of plugins and delving into more far-reaching information on applications.

You can run Netdata locally, and use a pattern of Prometheus to pull data from Netdata and push to influx DB and display the output in Grafana. If this sounds like hard work, recently netdata.cloud was launched and you can "claim" your Netdata installs and pull the data into a centralized Netdata Cloud instance. It's early days for the netdata.cloud interface however its slowly improving and is a user interface for data aggregation.

While many items on this list have "open source" alternatives Netdata stands out as a really useful service for both real-time system monitoring and if using Grafana. The fact that Netdata is so usable right out of the box too is a huge advantage of the Netdata application.

Ansible

Ansible solution diagram

Although it may have a high learning curve ansible is a fantastic tool for creating reusable playbooks for comment operations such as shell commands or file copies on your local and remote hosts. This makes complex operations nice and reproducible across multiple hosts allowing for lots of automation across your physical and virtual infrastructure.

Ansible joins the host of tools such as chef or puppet that allows for similar configuring functionality that ansible provides but over the past 5 years ansible has been embraced by the community for its flexibility to build and share configuration scripts for common software or configuration of hosts.

Terraform

Terraform solution diagram

Another tool similar to Ansible, Terraform provides you with the ability to write a definition for your virtual infrastructure and apply it to your hosts. If your using technology like docker or virtualization for your machine you can utilise terraform to create reusable modules of infrastructure that can be configured for their specific use cases.

An example of this would be to create a terraform module that deploys a generic virtual machine with passed in module parameters used to define the resources for that VM. Now in another terraform module can define an array of application machines all with their unique resource configurations for their specific applications. Now looped over our generic virtual machine module we can create identical infrastructure for each VM deployed the exact same way but configured uniquely for each application.

This can allow you to deploy and test identical infrastructure allow for higher change confidence when updating infrastructure.

Nginx

Nginx solution diagram

Now there are many uses you might have for a web server in your Homelab be it an actual webserver to a reverse proxy so that you can expose your services being run in your Homelab to the internet from a single port under subdomains.

You can easily learn the Nginx configuration language to deploy these configurations for Nginx and get some utility out of your current applications by securing them behind SSL or to just make it easier for your users to access through a more memorable URL to access your service on.

Nginx can easily be run via its binary installed via apt or with your applications in a lightweight docker container. The docker container deployment is particularly good for deploying application-specific configuration for routing with your applications through a docker-compose file.

Connect further

  • Read more articles over on my dev.to blog, or on my medium.
  • Feel free to send me a message on LinkedIn if you want to chat.
  • If you are interested in server components and hardware check out my store Server Labs Aus.

Discussion (4)

Collapse
andreidascalu profile image
Andrei Dascalu

Well, Portainer is sure nice but for home Docker Desktop is quite enough. It's a very usable UI for most common tasks around containers (starting, resources, images, layers, sizes and logs + direct access to shells where available), which includes exploring Dockerhub, though it doesn't provide as many details at a glance as Portainer's dashboard.

Collapse
aaronktberry profile image
Aaron Berry Author

For Portainer I always end up setting it up in my labs because of the easy setup and monitoring of remote docker socks so I can quickly see what's happening on the hosts without having to SSH.

Collapse
brandonwallace profile image
brandon_wallace

Great article! I learned of a few new applications by reading it. Ansible is super cool.

Collapse
aaronktberry profile image
Aaron Berry Author • Edited

It's super helpful for making tasks consistent on your hosts, especially if working with more than one physical or virtual host you might need to run the same command on.

Forem Open with the Forem app