Getting Started with Self-Hosting: A Beginner's Roadmap
Everything you need to know to start self-hosting services at home, from choosing hardware to running your first container.
Self-hosting means running services on hardware you control instead of relying on someone else’s cloud. It gives you ownership of your data, eliminates subscription fees, and teaches you real infrastructure skills.
This guide walks you through the entire process — from picking hardware to deploying your first service.
Why self-host?
There are plenty of good reasons to run your own services:
- Privacy — your data stays on your network
- Cost savings — one-time hardware cost vs. recurring SaaS fees
- Learning — hands-on experience with Linux, networking, and containers
- Customization — full control over every configuration
Choosing your hardware
You don’t need a rack server to get started. Here are solid budget options:
Mini PCs
A mini PC like the Beelink S12 Pro or Intel NUC is the sweet spot for most beginners. Low power draw (~15W), silent, and enough horsepower for a dozen containers.
| Option | RAM | Storage | Power | Price Range |
|---|---|---|---|---|
| Beelink S12 Pro | 16GB | 500GB SSD | ~15W | around $150-180 when I set this up |
| Used Dell Optiplex | 16GB | 256GB SSD | ~35W | around $80-120 used |
| Raspberry Pi 5 | 8GB | microSD/NVMe | ~5W | around $80-100 |
Old laptops and desktops
Any machine from the last 8 years with 8GB+ RAM can be a solid homelab starter. The built-in battery on a laptop even gives you a free UPS.
Installing the OS
For beginners, we recommend Ubuntu Server 24.04 LTS or Debian 12. Both have massive community support and straightforward installation.
# Download Ubuntu Server
wget https://releases.ubuntu.com/24.04/ubuntu-24.04-live-server-amd64.iso
# Flash to USB with balenaEtcher or dd
sudo dd if=ubuntu-24.04-live-server-amd64.iso of=/dev/sdX bs=4M status=progress
During installation:
- Choose minimal server installation
- Enable SSH server
- Set a strong password
- Let it configure networking via DHCP (you can set a static IP later)
Installing Docker
Docker is the foundation of most homelab setups. It lets you run services in isolated containers.
# Install Docker using the convenience script
curl -fsSL https://get.docker.com | sh
# Add your user to the docker group
sudo usermod -aG docker $USER
# Log out and back in, then verify
docker run hello-world
Your first service: Uptime Kuma
Uptime Kuma is a self-hosted monitoring tool. It’s a great first project because it’s useful immediately and simple to set up.
# Create a directory for your services
mkdir -p ~/docker/uptime-kuma
# Run Uptime Kuma
docker run -d \
--name uptime-kuma \
--restart unless-stopped \
-p 3001:3001 \
-v ~/docker/uptime-kuma:/app/data \
louislam/uptime-kuma:1
Open http://your-server-ip:3001 in a browser and you’ll see the setup wizard. Add a few monitors for websites you care about, and you’ve got a working self-hosted service.
Next steps
Once you have Docker running and your first service deployed, the world opens up:
- Organize your containers — the Docker Compose basics guide covers how to structure your services so they’re maintainable long-term
- Manage containers visually — Portainer gives you a web UI for managing Docker without memorizing CLI commands
- Reverse proxy — use Nginx Proxy Manager to access services by name instead of port number, with automatic HTTPS
- DNS — run Technitium DNS for internal hostnames and ad blocking, or Pi-hole if ad blocking is your main goal
- Media — set up Jellyfin for your own streaming server
- Password manager — Vaultwarden is a self-hosted Bitwarden-compatible server that replaces a $10/year cloud subscription
- Dashboard — Homarr puts all your services on one page so you stop bookmarking IP addresses
- Backups — automate your backup strategy before you go further; include it in your backup strategy from the start
- Remote access — Tailscale lets you reach your homelab from anywhere without opening ports
- Keep containers updated — Watchtower handles image updates automatically so you’re not manually pulling new versions every week
- Wildcard SSL — once you have multiple services, a wildcard certificate covers all your subdomains with a single Let’s Encrypt cert
- Network segmentation — if you’re adding IoT devices or untrusted services, homelab VLAN setup covers how to segment your network without enterprise gear
- Security — the homelab security basics guide covers what actually matters: no exposed ports, SSH keys, strong passwords, keeping containers updated. Worth reading before your stack grows
- Media server choice — if you’re undecided between Plex and Jellyfin, the comparison lays out the real differences. Short answer for most homelabs: Jellyfin
Not sure which apps to start with? Start with Jellyfin, Immich, Vaultwarden, Paperless-ngx, and Uptime Kuma — those five cover the highest-value categories and can all be running by the end of a weekend.
If you’re considering a hypervisor layer, the Proxmox install guide and Proxmox vs. plain Docker article explain the tradeoffs. For hardware, the under-$300 homelab build guide is the most direct starting point — specific hardware picks with current pricing.
See everything Aaron runs on the /stack/ page — it’s a living reference of the actual services powering this site.
The best homelab is the one you actually build. Start small, learn as you go, and expand when you hit a real need. Welcome aboard.