Skip to main content
  1. Blogs/

What is a Homelab and why you should consider having one?

·1442 words·7 mins·
homelab docker
Nipun Haldar
Author
Nipun Haldar
Table of Contents

Homelab is the name given to the server(s) that reside locally in your home that you can use for various functions such as virtualization, testing, NAS, media server etc. This server can be a raspberry pi, an old pc/laptop or any other computer.

The homelab architecture
#

The server
#

For my homelab server I use an Asrock Deskmeet x300, it is a mini ITX barebone unit. It is a great fit for a homelab due to its compact size. The specs are:

  • CPU: Ryzen 7 5700G

  • RAM: 128GB

  • Storage:

    • Internal - 500GB + 4TB
    • External - 4TB + 1TB
    • Network Attached Storage - 1TB

homelab pc

Storage
#

Storage is an important part of any homelab. For me, I am using it as a media server, photos and drive. So I have a lot of storage for this data as well as for backups.

Architecture
#

This is a high level architecture of my homelab.

Hypervisor
#

I run Proxmox VE as the hypervisor on my server. It’s a powerful, open-source virtualization platform that allows me to:

  • Create and manage VMs and LXC containers
  • Take full and incremental backups
  • Snapshot and roll back
  • Monitor resource usage easily via a web UI

Proxmox gives me the flexibility to experiment and isolate services.

Services Running
#

All of the services that I am running are through Docker on Debian VMs. This enables easy onboarding and testing of these services and does not leave residue after uninstallation.

Utilities
#

Nginx Proxy Manager
#

🔗nginxproxymanager.com

When starting out you can access your homelab resources with the ip and port combination but it gets very difficult to remember all the ips and ports to your service. Moreover, some services require you to run over SSL. Nginx Proxy Manager provides an easy to use GUI for nginx to be used as reverse proxy and handles SSL as well.

nginx proxy manager

Adguard
#

🔗adguard.com

We use adblock on your browsers but that’s it, there is not option to block ads from other resources like on a smart TV or OS level telemetry. This is where a DNS based adblock like Adguard comes into play. It serves two purposes. Firstly, It blocks DNS queries to the Ad services essentially blocking the ad providing a network wide adblock. And second, it provides internal DNS records to my local resources. You just have to change the DHCP settings on your router to use adguard as the DNS server.

adguard

Vaultwarden
#

🔗GitHub

Creating a strong password for every site and then remembering it is not humanly possible. That is where password managers come in, but they are not free or very limited in their free tier. Vaultwarden is an alternative implementation of the Bitwarden Client API, written in Rust and compatible with the official bitwarden clients.

vaultwarden

It-tools
#

🔗GitHub | Website

Want to convert markdown to HTML, hash a piece of text, convert hex to rgb, prettify JSON etc? This is collection of all these tools and many more in a single application. No need to go to different sites or download multiple tools. I have a self hosted version of this here.

it-tools

Speedtest tracker
#

🔗GitHub

It is simply a internet speedtest on a schedule. It can also send notifications when the speed is lower than a certain threshold.

speedtest

OpenMedia vault
#

🔗www.openmediavault.org

Managing storage and backups in a homelab is a very crucial part. I have Open Media Vault (OMV) running in a VM that is used to centrally manage all the storage. OMV exposes network shares which can be mounted by other VMs and systems on my network. As all storage is now centralised I can easy backup this to the external hard drive using a software called borg backup. OMV also exposes the 1TB external hard drive as a samba share to be used time machine backup for my mac.

open media vault

Code Server
#

🔗GitHub

Write code from anywhere on VS Code from your browser. No need to install dependencies on your device. You can install this on a separate VM and get full access like you would in SSH.

code server

Home Assistant
#

🔗home-assistant.io

Are you using smart devices in your house but are having to manage them though different apps. Home Assistant is an opensource home automation tool. It is very powerful can be integrated with a variety of a smart devices to create automations around it. I mainly use it to turn on/off lights on a schedule and monitor the cameras outside my house. But it can do far more than this.

home assistant

Uptime Kuma
#

🔗GitHub

Homelab services do not provide high uptime as the cloud counterparts, its not a huge problem as it caters only to you and a few other and not thousands or millions of people. But what is important is that you should be able to know when a service is down. This is what Uptime Kuma does, it regularly pings your services and notifies you if any of them goes down.

uptime kuma

As this is also hosted in my homelab and prone to downtime, so in addition I also use UptimeRobot. These are both very similar but uptimerobot is a service on cloud so it gives better uptime. You can see my current uptime here.

Portainer
#

🔗www.portainer.io

So now you have all these services running through docker but what if you need to restart a service or check for logs? You have to go to the homelab server and run docker commands to do so. Not anymore, use portainer for a GUI to quickly manage all the docker containers you are running.

portainer

Twingate
#

🔗www.twingate.com

Now we are running all these services on our homelab in our local network and all works fine when we are at home. But what happens if you are not. You can either port forward your services and make them public (security nightmare!! and not even possible for some ISPs) or you can use a VPN (low security risks but still not a feasible way for all ISPs). Twingate can be used no matter what is your use case. It is a VPN which can be setup with zero configuration.

twingate

Productivity
#

Nextcloud
#

🔗nextcloud.com

Nextcloud is a very well built google workspace alternative. It has all the features of google workspaces like drive, meet, calendar, mail inbox any much more. You can save a lot of money by self hosting nextcloud instead of paying for google drive.

nextcloud

Immich
#

🔗immich.app

Most of us are either paying for icloud or google photos to backup photos. Not anymore, self host immich to fully replace any cloud photos backup. Unlike other alternative it has a very nice and easy to use UI too.

immich

Gitea
#

🔗about.gitea.com

We all have used github, but you need to remove all your secrets from the commits before pushing. A local github alternative might be useful incase you just need to keep all your files as is with secrets also. I use gitea as my local git server, all the git features work as expected and it has a nice UI to view your code.

gitea

Homarr
#

🔗homarr.dev

Keeping track of all these services becomes a hassle when you have a quite a few like me. Homarr provides a pretty dashboard where you can add all your services and look at them at a quick glance. It also provices API integration with these services to show widgets.

homarr

Ollama
#

🔗ollama.com | openwebui.com

LLMs like ChatGPT are very popular these days. It can be useful in many tasks but what about privacy. And due to high demand chatgpt is down sometimes too. You can host your local LLM to use as your personal private chatbot.

ollama

Entertainment
#

Jellyfin
#

🔗jellyfin.org

Jellyfin is a media server. It organises all your downloaded media with the correct metadata and provides a web UI for playback.

jellyfin

*arr Stack
#

🔗Wiki

Paying for multiple OTT subscriptions. Save money by hosting the *arr stack. I host sonarr, radarr and prowlarr in my homelab. You’ll also need to host a download client with these like qBittorrent.

You’ll still need to manually add the shows and movies which can be a hassle. To fully automate this you can use listrr.pro to create lists of movies and shows using filters. You can use my custom lists as a starting point: Movies and Shows.

Related

Budget-Friendly AI Image Generation using just your CPU
·811 words·4 mins
docker image generation cpu fastsdcpu upscayl ai stable diffusion
Why I Switched from Ubuntu to Debian as my server distro
·774 words·4 mins
linux debian ubuntu versus homelab
A Beginner’s Guide to Blocking Ads on Every Device with AdGuard Home
·711 words·4 mins
adblock adguard home docker dns