Last year, I decided to buy a second-hand mini PC, and I couldn't be happier with that choice!
Why? Because it opened the door to the world of self-hosting. Initially, my goal was simply to organize my photo library, which had been tucked away on my hard disk drive. However, I ended up running over 35 services in Docker containers!
[Here's a preview of all the services I currently run on my server.]

While I run a plethora of services, there are a couple of services that are top-tier for me, namely:
Adguard: For Adblocking and custom DNS
Immich: The Google Photos alternative
Jellyfin: For all the Linux ISOs 🙂
Outline Wiki: For internal notes, documentation and wikis
These are some of the services I use frequently, while others quietly work behind the scenes, acting as the unsung heroes that keep everything running smoothly.
To Begin
In this multi-part series, I will cover how I configured each of these services, along with the best practices I used to make them publicly or remotely accessible and secure.
You can find all the details in the series:




