Self-hosting means running your own services on your own hardware instead of paying someone else's cloud. It's private, it's a great way to learn, and for many things it costs almost nothing. Here's what's worth hosting at home — and what isn't.
What you need to start
The entry point is tiny:
- A Raspberry Pi 4/5 — the classic. ~$50–80, uses a few watts of power.
- An old laptop or desktop — perfectly good, and you probably already own one.
- A mini PC (N100-class) — cheap, quiet, low-power, surprisingly capable.
- Storage — a decent external or internal drive, ideally not your boot drive.
Install Linux (see the OS section), give the machine a static IP, and you're ready. Docker makes the next part dramatically easier — most self-hosted apps are one-command installs.
Easy, high-value wins
These are the projects people usually start with:
- Media server — Jellyfin or Plex. Stream your own movies and music to any device. Jellyfin is free and fully self-contained. This is the #1 reason people start self-hosting.
- Personal cloud — Nextcloud. Your own Dropbox/Google Drive. Files, photos, notes, contacts — accessible from your phone. Replace "sync to a stranger's server" with "sync to my closet".
- Ad-blocking at network level — AdGuard Home or Pi-hole. Block ads and trackers for every device on your network, from the router level, before they even load.
- Home dashboard — Home Assistant. Connect smart devices, sensors, and automations in one private dashboard. The gateway drug to full smart-home ownership.
Step it up
Once you're comfortable, add more:
- Password manager — Vaultwarden. Your passwords, self-hosted (a drop-in replacement for Bitwarden's server).
- Backup target. Back up your computers to the home server overnight. The server itself gets backed up off-site.
- Notes and docs — Obsidian sync, Bookstack, or Trilium. Your own knowledge base.
- Personal blog or site. Host it yourself — though a static site on GitHub Pages is often smarter.
- Git server — Gitea. Your own GitHub for personal projects.
Exposing it to the internet
Inside your house, services just work on the local network. The moment you want access from outside, you have options — in order of increasing effort:
- VPN — Tailscale or WireGuard. The safe, modern choice. You join a private network that reaches your home server from anywhere. No ports opened, no exposure. Recommended for everything.
- Cloudflare Tunnel. A free tunnel that connects your server to Cloudflare without opening any ports. Great for sharing specific apps publicly.
- Port forwarding + DDNS. The old-school way: open a port, use DDNS for your changing IP. Works, but exposes the server directly — only do this with strong security.
Rule of thumb: use a VPN (Tailscale) for private access to everything, and Cloudflare Tunnel if you specifically want something public. Avoid raw port forwarding on the open internet unless you're confident in your setup.
What you should NOT self-host
Honesty corner. Some things aren't worth it:
- Business-critical email — delivering email reliably from a home IP is a nightmare (spam filters hate residential IPs). Use a mail provider.
- Anything that must be up 24/7 at enterprise uptime — home internet and power aren't data centers.
- Backups you can't afford to lose — always keep an off-site copy (the 3-2-1 rule).
- Things you won't maintain — every self-hosted service needs updates. Unmaintained = unpatched = risk.
A starter checklist
1. Get hardware (Pi / old laptop / mini PC) 2. Install Linux + Docker 3. Give it a static local IP 4. Start with ONE service (Jellyfin is the classic) 5. Add Tailscale for secure remote access 6. Set up nightly backups to an external drive 7. Repeat updates regularly (and actually do them)
Self-hosting is a hobby that pays for itself in learning and privacy. Start with one thing, resist installing ten services in a weekend, and keep everything updated. Six months from now you'll have a private little cloud that's entirely yours.