Homelab Tour - July 2025
Check out my home technology setup full of open-source software
Over the past year I have been relearning the programming languages and computing concepts necessary to build my own "homelab" as people call it. A homelab is any sort of computer / server setup that uses physical machines that you own and generally runs self-hosted programs instead of using subscription cloud-based services for things like website hosting, media streaming, etc.
I set out with the goal of using exclusively free and open-source software (FOSS) to work towards completely ditching all of my subscriptions and accounts that I've accumulated over the past decade or so.
While you are never truly done with setting up your homelab, I've finally reached a point where I have it in a state that I would call "stable" so I wanted to share what I've got running and some basics about how I've set it up.
Hardware
Due to the habit in my family of keeping things longer than most people probably should I was able to assemble a decent, if outdated, set of desktops and workstations to start my homelab. I only purchased one workstation, the Lenovo M720q, and the rest were scavenged from various family basements and storage rooms.
- 2x Lenovo ThinkCentre - Core i5 (2.8gHz) / 4GB RAM / 512 GB SSD
- 1x Lenovo ThinkCentre - Core i5 (2.8gHZ) / 8GB RAM / 1TB SSD
- 1x Lenovo ThinkCentre M720q - Core i7 (3.2gHz) / 16GB RAM / 512 SSD
- 1x Lenovo ThinkCentre - Core i3 (2.2gHz) / 4GB RAM / 512 GB HDD
All of my servers run Debian 12 with the following packages installed:
- git
- wget
- bzip2
- curl
- ufw (universal firewall)
- build-essential (common dependencies package)
- net-tools (extra tools to monitor networks)
- vim (powerful text editor)
- duf (disk utility)
I use Tailscale to connect all of my devices into one network and so far (about 10 months in at this point) I would definitely recommend it. It takes very little advanced knowledge to setup, but certainly allows for anyone with networking experience to highly customize the configuration. Tailscale works perfectly for me since I want 95% of my servers to be only accessible to those on my VPN, just my family and close friends. Tailscale does have a "funnel" feature that allows for exposing your machines to the internet, but it is in beta and might not be best if you plan to have the majority of your servers on the public world wide web.
I have plans to implement a more customizable and non-proprietary VPN down the line but Tailscale has very little down time and has been great to slowly re-learn all the ins and outs of network protocols. The downsides of relying on a company's service is far outweighed by the benefits in this case I would argue – but it is always good to consider what you'll do if a 3rd party service gets enshittified.
I also have one VPS that I use to host my public website and blog, because I am not confident enough in my digital security skills (mainly my ability to stay up to date and on top of new threats) to have a machine on my local network with full access to the wider internet. I've been using OVH Cloud and compared to past experience with Namecheap, Digital Ocean, AWS (and probably a few others I've forgotten at this point) I have found it to be the best VPS provider. Bonus points because it isn't an American mega-corporation and they have hosting sites in Canada.
Self-Hosted Applications
These are the applications that I'm currently running in stable, production environments:
- Jellyfin: Movie and TV streaming site (website)
- AirSonic Advanced: Music streaming site (linuxserver.io)
- Rust Desk: Remote desktop server and client (documentation)
- Mumble Server: A fast and light-weight voice calling app (website)
- KitchenOwl: Manages recipes, grocery lists, and meal planning (github)
- DokuWiki: A minimal wiki for storing information (website)
- IT-Tools: A collection of highly useful small tools for developers (github)
- Several Web Servers: Using Apache2, Nginx, and Caddy
I have used all of the above for at minimum 5 months, most of them available to myself, my mother, and sister. None of my family members are particularly tech savvy but have found them quite easy to learn.
Of course, this blog itself is run using Ghost (website) but seeing as this is my first real public post with it I can't exactly say I'm familiar with it. I will say it seems very promising and the setup was very quick.
I have experimented with a lot of other applications during the past year, many of which were great but ended up just not being worth the extra time for something that wasn't really a necessary service for me. These are some of the ones that I enjoyed the most however:
- Habitica: Gamified task and habit tracker (documentation)
- HumHub: A simple social media or forum site (website)
- Firefly III: Comprehensive budget and spending manager (website)
- Metabase: Visualization and UI for database management (website)
Docker Containers
I am running the majority of these applications as Docker containers, almost all of which are using Docker Compose files. This is how I would recommend starting out because it is fairly easy to get things started without having to know how everything is working under the hood. Over time however, you will begin to learn how the docker container is managing the processes, networking, and other tasks for your applications and you can begin to explore how to host some of them locally without containers if that interests you.
Easy or simple setups doesn't always mean it is a bad setup. There are a lot of tools that make it easy to get started in self-hosting and will be a great avenue for more in-depth learning. If you're just setting up a casual server to play around with or begin detaching yourself from big-tech corporations, you don't need to start with an intense Kubernetes cluster or have multiple redundancies in your server backups. At the moment I still am manually backing up my servers on a weekly-ish basis because none of the data is so sensitive or important that I need to set up a more automated solution.
Keep Trying & Good Luck
The biggest takeaway from my experience so far has been to just keep trying. Does it suck to read pages and pages of reddit and stack overflow to find the answer to your question? Yes, and it won't get better. But you will find the answers one way or another so long as you keep at it.
Don't under-estimate yourself, keep up with your comments or documentation, and have fun with it.