Normally, the apps you use are connected to the cloud, a.k.a somebody else's server. Your notes stay on Notion's servers, your passwords stay on Apple's, and so on. That's why you can reach them from anywhere with just your account.
With self-hosting, instead of sending all that to someone else's server, you send it to a little box that lives inside your closet. That's the entire pitch, really.
For example, instead of Google Photos, you can run something like Immich. It backs up the photos and videos from your phone the same way the Google Photos app does, but it sends them to your own machine in your home. Basically, you'll be running your own little server for the apps you use.
Let me start with the three simple questions I always get asked.
Why would anyone do this?
It's a reasonable thing to ask. Why go through any of this to run apps that are already sitting there, free, in the cloud? People come to it for different reasons. Some care about privacy and aren't comfortable with their photos and notes being mined. Some are tired of paying a monthly fee for every little thing. I personally just like to tweak things and understand how they work. And once you've built something that quietly runs and costs nothing each month, it tends to stick.
There's also the plain practical bit: apps you host don't get worse overnight because a company changed its pricing or killed a feature. And you can run things nobody really sells you, like an ad blocker for every device in the house, or one dashboard that ties all your other apps together.
It isn't free, to be clear. You trade the monthly bill for a bit of your own time, the occasional evening spent figuring out why something broke, and the fact that your backups are now your job. For me that trade is easily worth it. For you it might come down to how much you enjoy the tinkering.
Is this going to be complicated?
There's definitely some tinkering, some debugging, and a bit of learning involved. But it's not that complicated, especially if you're already a little geeky. You don't need to know how to program. You do need to get comfortable with a few ideas: how a server works, a little networking, ports, DNS, that kind of thing.
And if you're already comfortable with AI tools, especially agents like Codex or Claude Code, this gets even easier, they can do a lot of the heavy lifting for you. One pro tip though: understand what's actually happening before you hand all the work off to them.
If those words sound like a foreign language right now, that's completely fine. That's the exact gap this guide is here to close.
So how do you actually get started?
Here's the path, and it's shorter than it looks. First I'll show you what people actually run, so you have something to aim at. Then you pick a cheap little server, get an operating system onto it, and learn the handful of commands you need to drive it. After that you install a real app and open it from your own phone. That's the win this guide is built to get you to.
The heavier topics, reaching your apps from outside the house, understanding Docker properly, doing backups right, all come after that, once the basics feel normal. No point learning remote access before you have anything running to reach.
One thing worth knowing early so you don't worry about it: an app on your server doesn't automatically get thrown onto the public internet. By default it only works inside your home. Opening it up to the outside world is a separate, deliberate step you take later. Starting home-only is the relaxed way to learn, and it keeps you out of trouble while you're still finding your feet.
Common questions
Do I have to leave the computer on all the time?
Is self-hosting cheaper than subscriptions?
Can I try it without buying anything?
Ready? Let's look at the stuff I actually run.