Introduction #
When I started to get into building my own homelab, I searched for the first selfhosted services to begin with. They should be easy to set up but also helpful, so I can benefit for the future from them.
After multiple years of falling into the rabbit hole of homelabbing, this is my summary and short introduction into the topic for others, that are just starting to get into it.
On the photo of my homelab you can see, it is addictive - but makes a lot of fun.
Why should I build a Homelab?
You need to love IT at least a little bit. If you dont, this will be more punishment then enrichment.
Then, the all-time answer: Big Tech is stealing your data, even if you say no and even if you pay for there services. So, why dont take that money and build it by yourself, have full control and benefit from the open source community?
Also, if you are looking for a career in IT, you will benefit a lot from building your own homelab (at least I did) - you will understand the basics of Linux, Networking, Docker and much more.
What even is a Homelab?
You can find a good definition on reddit in the r/homelab community:
r/homelab - Introduction
The Hardware #
First of all: buying your hardware second hand is always my suggestion. You can get good hardware on a small budget, there is no need to buy huge servers. We are not talking about industrial scale projects here, just a small homelab. But believe me when i say: once you are hooked, you will upgrade from time to time :)
Got an old Laptop laying around you dont use anymore? Or an old from friends, family or your employee? Great - this thing is more then enough to get started. Same as for laptops: enough to get started, good availibility (buying second hand, already having one laying around or getting them through family, friends, ..). My homelab started on a Raspberry Pi, which is still an good option. The Raspberry Pi 5 for example has enough power to get started and also has a very low energy consumption. You can get them on a small budget, but the prices rised in the past years. An Pi 4 is enough too, im still running one in my lab for some services - and its the only device I run 24/7. Small factor computers are awesome.Old Laptops
If you have none available: buy it second hand. There are a lot of cheap deals, even for less then 50€. You can always upgrade later, but they are a solid start to get a feeling about selfhosting.
Hint: get at least 4GB of DDR4 RAM, 8GB preffered. Also configure, that you can close the Laptop without going to sleep mode.
Old Computers
Raspberry Pi
Mini Computers
I run most of my services on second hand / used mini computers from eBay. There is a lot of supply available, old office computers with low energy consumption are often in sale from companys that upgrade their systems. They can have a lot of power without high energy consumption in comparision to a normal computer - also, you can mostly easily upgrade them (for RAM / Storage).
Watch on Ebay and other portals for Mini PCs like the HP Elitedesk or Intel Nuc N100 based systems. Also watch out for Geekom or Beelink, you can get them even new for a good price.
Mac Minis also work, the newer models with Apple Silicon architecture are more powerful (the newest models can even run small LLMs).
With a system like this you will have fun for a longer time than with old laptops, PCs or a Pi.
The OS #
Always choose Linux. I prefer distributions based on Debian, but you can take whatever you want - just choose Linux. There are plenty of guides on how to setup Linux on nearly every system.
Install it without a GUI, just plain terminal so you dont waste resources on the GUI and get a feeling for the command line.
After setting the system up, you basically just need Docker and you are good to go!
About Docker
Docker allows you tu run applications in containers. Containers are lightweight, standalone packages of software that include everything needed to run an application: code, runtime, system tools, system libraries, and settings. This ensures consistency across different environments in your homelab. You can:
- Host various services: Run web servers, databases, media servers, home automation platforms, or network monitoring tools in isolated containers.
- Simplify deployment and management: Applications can be deployed and updated easily without worrying about conflicts with other software or system dependencies.
- Efficient resource utilization: Containers share the host OS kernel, making them more lightweight than virtual machines and allowing more services to run on limited hardware.
- Experimentation: Quickly test new applications in isolated environments without affecting the host system.
If you start with low spec hardware like an old laptop and want to upgrade later, you can easily migrate your Docker applictions, even if you change the operating system!
All of my suggestions here can or must be run with Docker.
Hosting your own services #
These are my suggestions of services to start. Not hard to setup and a solid start for upcoming projects, also helping with everyday tasks and problems.
I wont explain the setup of the services, just a brief summary about them.
There are already a lot of existing guides for each of them, and I don’t have to repeat what other already did - even better than I could.
Just search “Setup Guide Name of service” for example.
Portainer - Managing your services #
Github - portainer/portainer
Portainer will be the management platform for Docker.
With Portainer, you have one Web-Application for all your environments and Docker containers.
Nice to know: In Portainer, the “docker-compose” files you mostly find at the setup guides for the services are named “Stack”.
A Stack is the docker-compose file!
Adguard / Pihole - Get rid of ads #
Github - AdguardTeam/AdGuardHome
Github - pi-hole/pi-hole
Now we start with the (second) first service: Adguard or Pihole. Use Portainer for the setup, to get a feeling for your new Docker Management Webapplication!
Both are DNS-Filters for your home network: blocking advertisements, sketchy websites or spam on every device connected to your network.
Got children? Add NSFW, gambling or sex related content filtering lists! Blocking certain social media providers is also possible.
Both Adguard and Pihole have a bunch of filtering lists already. If they dont meet your requirements there are a lot of lists available online: Github - hagezi/dns-blocklists.
Dashboard for your services #
Now we already have two services - and more are coming! Would a dashboard not be nice, to get an overview about your services? Here are 3 recommendations:
Heimdall
Github - linuxserver/Heimdall
Heimdall is very simple and delivers just a list of links as tiles. Add your services and their URL and enjoy your simple little dashboard.
Homepage
Github - gethomepage/homepage
Heimdall seems boring, and you want more? Homepage delivers a lot of integrations for selfhosted services, to not only have an overview about WHAT you have, but also about what the service is doing right now.
For example: want to see, how much URLs Adguard blocked in the last 24 hours? See that data with Homepage, without opening Adguard!
People love building fancy Homepages, get inspiration from Github - Share your homepage.
Homaar
Github - homarr-labs/homarr
More like Homepage then Heimdall, but with focus on the Arr stack. The “Arr stack” generally refers to a collection of applications designed for media management, particularly for automated downloading and organization of multimedia content.
This post does not focus on this topic, but Homaar deserves to be mentioned!
Bookstack - Your knowledgebase #
Github - BookstackApp/BookStack
Fancy dashboard done, already got 3 services running - configured a lot, maybe failed, researched solutions and got a lot of new knowledge.
This is where Bookstack joins: your personal knowledge-base.
Bockstack is build like a real bookshelf: Create a shelf (category), in that shelf you create books (topic) and in that book you add your pages (content).
- Set up Bookstack as usual with Portainer and create your first shelf: “Homelab”.
- Then, create a Book like “Setup & Configuration” and add pages for each service.
- Write down your configurations, solutions to problems you had and important links.
Fun fact: the idea for “torminal.com” started, when I documented everything about my homelab years ago.
Immich - Manage photos/videos #
Github - immich-app/immich
That one huge folder with thousands and thousands of photos and videos, backups from your camera and your mobile phone, that we will never clean up? Immich is the solution.
It’s like the sister of Google Photos without “Big Brother” scanning your private memories. Immich helps you finding and deleting duplicates, sorting by person, location or year and get your memories organized.
This is the part of your homelab, where you should think about a NAS (Network attached storage) and a Backup strategy - and thats how fast we want our small Homelab to grow.
Paperless NGX - Manage documents #
Github - paperless-ngx/paperless-ngx
Summarized, Paperless NGX is the Immich for your documents.
Same problem: The folders sitting in your shelf with all your documents for taxes, insurance or car papers.. but if we need a specific document, the search starts. And takes time. Sometimes.. a lot of it.
So, why not spending that time in scanning all your files? Buy a cheap (duplex!) scanner from eBay or use your smartphone with a scanner-app and start digitalizing.
Paperless scans the documents with OCR (Optical Character Recognition) to read the contents of the files - you can create rulesets to automatically sort the scanned files with this information.
Example: All documents with “invoice” and “company-xyz” from 2024 should go in the folder “taxes-2024”. Next time you need a document for your taxes fast, you will find it.
Bonus: The structure in the background is based just on folders, that you can access from the file explorer of your PC!
Secured Password Manager #
Github - dani-garcia/vaultwarden
Password management, but everything stays on your device: Vaultwarden!
Compatible with the Apps from Bitwarden, available for all popular operating systems, Vaultwarden gives you the control over your passwords back. Even an browser extension exists, so you can ditch the Chrome Passwort Manager.
More resources #
Dont like any of the ideas mentioned above? No problem! There are huge lists of services that you can host by yourself. Visit the following websites, search by category and choose whatever catches your interest:
Searching for “Top selfhosted services” on Youtube also gives you plenty of other ideas from a lot of good creators.
Summary #
My suggestion: just start with whatever comes to your mind. Get an understanding for Linux and Docker, from there you find so much possibilities for your Homelab.
Continuing your journey #
A homelab can be a rabbit hole, and you are about to fall into it.
How to fall deeper in the rabbit hole:
- Look up building your own NAS (Network attached Storage) to store your files on one device (your “Fileserver”), allowing you to access it from every device in the network (can be run on low spec hardware). Synology and Ugreen are also good “All-in-one” options, which are more beginner friendly.
- Create a backup strategy for your services and files (especially Immich / Paperless NGX / Vaultwarden)!
- Cry a little, when something does not work anymore and you spend hours finding the solution.
- Create VPN access to your network (Suggestion: Wireguard) so you can access your services from everywhere (and DONT make your services accessible without VPN. Believe me. Dont do this. You will get attacked at least from botnets).
- Gain knowledge about security in your network. Look up “ClamAV” and “fail2ban” for example.
- Bonus: write a comment, if you suggest other services for starters or write down your wishes for follow-up guides. Critics also welcome!