TL;DR Summary
Self-hosting is addictive and can become a time sink. This guide covers the services worth self-hosting (Plex/Jellyfin, AdGuard Home, Nextcloud, SearXNG, Paperless-NGX), which ones to skip (email, VPNs for most people), and how to build a sustainable homelab that enhances your life without consuming all your free time. Start small, automate backups, and only host what you actually use.
The Self-Hosting Trap
I know homelabbers who spend more time maintaining their infrastructure than using it. Don’t be that person.
Self-hosting should:
- ✓ Save you money over time
- ✓ Give you more control
- ✓ Reduce dependency on third parties
- ✓ Actually work reliably
It should NOT:
- ✗ Be a second full-time job
- ✗ Lose your data because you forgot to check it
- ✗ Cause more problems than it solves
Services Worth Self-Hosting
1. Media Server: Jellyfin (or Plex)
Why: One Netflix/Hulu/Disney+ subscription = family access to your entire library.
Setup:
docker run -d \
--name jellyfin \
-p 8096:8096 \
-p 8920:8920 \
-v /path/to/media:/media \
-v /path/to/config:/config \
jellyfin/jellyfin:latest
Hardware needs: 4TB+ storage, transcoding needs CPU/GPU power.
My config:
- Jellyfin on Outpost (192.168.1.145)
- Accessed via VPN when outside home
- Family uses it daily
2. DNS Filtering: AdGuard Home
Why: Block ads and trackers network-wide. No per-device configuration needed.
Setup:
docker run -d \
--name adguard \
-p 53:53/tcp \
-p 53:53/udp \
-p 3000:3000/tcp \
-v adguard_work:/opt/adguardhome/work \
-v adguard_conf:/opt/adguardhome/conf \
adguard/adguardhome
Setup DNS on router:
- Primary: 192.168.1.145
- Secondary: Your router (fallback)
Blocklists I use:
- AdGuard DNS filter
- EasyList
- EasyPrivacy
- Hooray, I’m bored (custom)
3. Search Engine: SearXNG
Why: Private search without Google tracking every query.
Setup:
docker run -d \
--name searxng \
-p 8080:8080 \
-v /path/to/settings:/etc/searxng \
-e SEARXNG_BASE_URL=https://search.yourdomain.com/ \
searxng/searxng:latest
Features:
- Aggregates Google, Bing, DuckDuckGo, etc.
- No logging, no tracking
- Open source
- Multiple search categories
4. Document Management: Paperless-NGX
Why: Digitize and searchable PDFs of everything. Receipts, documents, manuals.
Setup:
docker run -d \
--name paperless \
-p 8000:8000 \
-v /path/to/data:/data \
-v /path/to/consume:/consume \
ghcr.io/paperless-ngx/paperless-ngx:latest
Workflow:
- Drop PDF in consume folder (or scan with mobile app)
- Paperless OCR processes it
- Full-text search forever
- Tag and organize
5. File Sync: Nextcloud
Why: Dropbox/Google Drive replacement with full control.
Setup:
docker run -d \
--name nextcloud \
-p 8080:80 \
-v nextcloud_data:/var/www/html \
-v /path/to/files:/data \
--link mysql:db \
nextcloud:latest
Alternatives:
- Syncthing (simpler, no cloud aspect)
- FileRun (lighter weight)
- Truenas Scale (if you want full NAS OS)
Services to Skip (Until You Are Ready)
Hard: SPF, DKIM, DMARC, spam filtering, deliverability. One misconfiguration and mail bounces.
Time cost: 10+ hours initial setup, ongoing maintenance.
Verdict: Use Proton Mail or Tuta. It’s not worth it for most people.
VPN
Hard: Keeping secure, port forwarding, bandwidth limits.
Time cost: 5+ hours setup, ongoing security updates.
Verdict: Use Mullvad or Proton VPN. Self-hosted VPN is rarely more private.
Password Manager
Hard: Sync across devices, breach monitoring, recovery options.
Time cost: 3+ hours setup.
Verdict: Use Bitwarden. Self-hosted Bitwarden_rs is good but adds complexity.
The Sustainable Stack
This is what I run 24/7 that just works:
| Service | Purpose | Uptime |
|---|---|---|
| AdGuard Home | DNS, ad blocking | 99.9% |
| Jellyfin | Media server | 99.9% |
| SearXNG | Private search | 99.9% |
| Paperless-NGX | Documents | 99.9% |
| Nextcloud | File sync | 99.9% |
| Home Assistant | Smart home | 99.9% |
All on Docker, automated backups daily.
Backup Strategy
Self-hosted without backups is just data loss waiting to happen.
# My backup script (runs daily via cron)
#!/bin/bash
BACKUP_DIR=/path/to/backups
DATE=$(date +%Y%m%d)
# Docker volumes
docker run --rm -v docker_data:/data -v :/backup alpine tar czf /backup/docker_$DATE.tar.gz /data
# Config files
tar czf /configs_$DATE.tar.gz /home/jefferson/*.yaml /home/jefferson/*.toml
# Upload to异地 storage (B2, Wasabi, etc.)
rclone sync remote:backups/$DATE --exclude *.tmp
Key Takeaways
- Self-host what you actually use daily
- Don’t self-host email unless you have specific needs
- Automate everything including backups
- Start with one service, stabilize, then add
- The goal is to enhance your life, not create a maintenance burden
FAQ
Q: What services are worth self-hosting for beginners?
A: Start with Jellyfin/Plex (media server), AdGuard Home (DNS filtering), and Nextcloud (file sync). These have the best effort-to-reward ratio. Jellyfin replaces multiple paid streaming services. AdGuard improves privacy for every device. Nextcloud replaces cloud storage subscriptions.
Q: What services should beginners avoid self-hosting?
A: Email — your emails get flagged as spam without proper SPF/DKIM/DMARC setup and dedicated IPs. VPNs for most people — self-hosted VPN just shifts where your traffic exits, it does not add privacy. Use a commercial VPN or Tor instead. Complex databases — unless you actually need them, the maintenance overhead is not worth it.
Q: How much does self-hosting cost in electricity?
A: A typical homelab NUC draws 15-30W at idle, 50-80W under load. At $0.10/kWh, that is $1-2/month at idle, $3-5/month under moderate use. Compare this to $10-20/month for equivalent cloud services. The hardware cost is the bigger investment — a used NUC runs $150-300.
Q: How do I back up a self-hosted homelab?
A: At minimum: 3-2-1 backup rule (3 copies, 2 different media types, 1 offsite). Use rsync to a external drive weekly, and something like Restic or Borg to an offsite location (another VPS, Backblaze B2, or S3-compatible storage). For critical data, test restores quarterly.
Q: Can I run a homelab in an apartment without technical skills?
A: Yes, but start small. A single Raspberry Pi or old laptop running Docker Compose is enough to learn. Start with one service (Next →cloud or Jellyfin), learn how it works, then expand. Do not buy a rack server and expect to configure it all at once.