---
title: "Home Server 101 — The Beginner's Guide to Self-Hosting"
aliases: [home-server-basics, self-hosting-101, self-hosting-beginners]
tags: [homelab, self-hosting, beginners, hardware, nas, networking, docker]
sources: [raw/home-server-101.pdf]
created: 2026-04-17
updated: 2026-04-17
---

## What Is Self-Hosting?

Self-hosting means running services on hardware you control instead of relying on third-party cloud providers. Your data stays on your network, you avoid subscription fees, and you decide what runs.

A "home server" is just a computer — old laptop, mini PC, used workstation — left running 24/7 to serve those applications.

## Why Self-Host?

- **Privacy** — files, photos, and passwords never leave your home
- **Cost** — one-time hardware + electricity beats recurring SaaS subscriptions at scale
- **Control** — no feature removals, no price hikes, no account bans
- **Learning** — hands-on Linux, networking, and Docker experience

Downsides: you become your own IT department. Backups, uptime, and security are your problem.

## Choosing Your First Hardware

Start cheap. A used mini PC (Intel NUC, Beelink, HP EliteDesk) with 8–16 GB RAM and a spare SSD is enough for most beginner use cases. New hardware is rarely necessary.

Key specs that matter:
- **RAM** — 8 GB minimum; 16 GB comfortable for multiple containers
- **Storage** — separate OS drive from data drive; HDDs for bulk storage, SSD for OS
- **TDP / power draw** — a server running 24/7 at 65 W costs ~$70/year in electricity; mini PCs win here
- **NIC** — gigabit Ethernet; Wi-Fi is unreliable for a server

See [[wiki/homelab/homelab-from-scratch-budget-build|Homelab From Scratch — Budget-First Design]] for a full hardware decision framework.

## Choosing an OS / Platform

| Option | Best For |
|--------|----------|
| **Ubuntu Server** | Simplest start; massive community; pure Docker |
| **Debian** | Stable, minimal, long support cycles |
| **Unraid** | NAS-first; easy mixed-drive storage pools; GUI |
| **TrueNAS SCALE** | ZFS-native; serious storage reliability |
| **Proxmox VE** | Run VMs + containers; flexibility ceiling is highest |

For a true beginner: Ubuntu Server + Docker Compose is the lowest-friction path. Proxmox is the power-user next step — see [[wiki/homelab/proxmox-install-setup-2025|Proxmox VE — Install & Setup from Scratch (2025)]].

## Essential First Services to Run

**Storage & files**
- [Nextcloud](https://nextcloud.com) — Google Drive/Photos replacement
- [Immich](https://immich.app) — Google Photos alternative, ML face recognition

**Media**
- [Jellyfin](https://jellyfin.org) — Plex alternative, fully open-source
- [Audiobookshelf](https://www.audiobookshelf.org) — audiobooks + podcasts

**Password & secrets**
- [Vaultwarden](https://github.com/dani-garcia/vaultwarden) — Bitwarden-compatible, 50 MB RAM

**Networking & remote access**
- [Nginx Proxy Manager](https://nginxproxymanager.com) — reverse proxy with Let's Encrypt SSL via GUI
- [Tailscale](https://tailscale.com) — zero-config WireGuard VPN; expose services to yourself securely

**Dashboards**
- [Homepage](https://gethomepage.dev) — single-pane dashboard linking all your services

## Docker Compose Workflow

Almost everything self-hosted runs as a Docker container. The pattern is the same for every service:

```bash
mkdir -p ~/services/vaultwarden
cd ~/services/vaultwarden
nano compose.yml      # paste the service's compose snippet
docker compose up -d  # start detached
docker compose logs -f # tail logs
```

Keep each service in its own folder. Use named volumes or bind-mounts under a single `/data` directory so backups are one `rsync` command.

## Networking Basics You Need to Know

- **Local IP** — your server needs a static LAN IP (set a DHCP reservation in your router)
- **Port forwarding** — exposes a service to the internet; only do this if you understand the security implications
- **Reverse proxy** — routes `nextcloud.yourdomain.com` → port 8080 on your server; handles HTTPS
- **Tailscale** — easiest remote access without opening ports: install on server + phone/laptop, done

Avoid exposing services directly to the internet without authentication and HTTPS.

## Backup Strategy (Non-Negotiable)

The 3-2-1 rule: **3** copies, **2** different media, **1** offsite.

Minimum for a home server:
1. Data on the server
2. External USB drive (weekly `rsync`)
3. Encrypted offsite — Backblaze B2 (~$6/TB/month) via [rclone](https://rclone.org)

Never trust RAID as a backup. RAID protects against drive failure, not accidental deletion or ransomware.

## Key Takeaways

- Start with cheap used hardware — a $100 mini PC runs most beginner workloads
- Ubuntu Server + Docker Compose is the lowest-friction first OS choice
- Tailscale solves remote access without opening firewall ports
- Vaultwarden, Immich, and Jellyfin are the highest-value first services to replace SaaS
- Set up offsite backups before you store anything you care about
- Proxmox is the natural upgrade path once you outgrow a single-OS setup
