My home lab runs 30+ self-hosted services on a Synology NAS. Here’s everything, why it exists, and how it all fits together.
The Hardware
Synology DS920+ - 4-bay NAS with:
- 20TB storage (4x 5TB drives in SHR)
- 20GB RAM (upgraded from 4GB)
- Docker natively supported
- Low power consumption (~30W)
The Philosophy
I self-host because:
- I own my data - Photos, documents, media libraries
- No monthly fees - One-time hardware cost vs. endless subscriptions
- Privacy - No cloud company analyzing my family photos
- Learning - Best way to understand infrastructure
- Fun - It’s just deeply satisfying
The Stack
Media Management
The crown jewel. Fully automated media library:
- Plex - Streams to every device in the house
- Overseerr - Family requests movies/shows via nice UI
- Radarr/Sonarr - Automatically fetch requested content
- Transmission (behind VPN) - Download client
- Tautulli - Analytics on what everyone’s watching
The Flow:
- Wife requests movie in Overseerr
- Radarr finds it, sends to Transmission
- Transmission downloads (through VPN)
- Radarr moves file to Plex library
- Plex notifies her it’s ready
- Total time: Usually < 30 minutes
Zero manual intervention.
Photos & Documents
- PhotoPrism - Self-hosted Google Photos (face recognition, auto-tagging)
- Paperless-ngx - OCR scans documents, makes everything searchable
- Calibre-Web - eBook library server
Productivity
- Mealie - Recipe management (amazing for meal planning)
- HomeBox - Home inventory (what do I own? where is it?)
Infrastructure
- Portainer - Docker container management UI
- Watchtower - Auto-updates containers
- Cloudflare DDNS - Keeps external domain pointed at home IP
- AdGuard Home - Network-wide ad blocking
Access & Security
Internal: Everything accessible via http://10.0.0.14:PORT or http://servicename.elpnas.local
External: Cloudflare handles DNS + SSL for *.elpnas.com subdomains:
https://plex.elpnas.comhttps://photos.elpnas.comhttps://dash.elpnas.com
Services requiring auth have their own login. Some are behind Cloudflare Access for extra security.
SSH: Port 2222, key-based auth only, fail2ban running
Cost Breakdown
- NAS: $550 (one-time, 2021)
- RAM upgrade: $120 (one-time)
- Hard drives: ~$400 (spread over 3 years)
- Electricity: ~$3/month
- Domain: $12/year
- Cloudflare: Free tier
Total first-year cost: ~$1100 Ongoing cost: ~$50/year
Compare to:
- Plex Pass: $120/year
- Google One (2TB): $100/year
- Dropbox: $120/year
- Netflix/etc: $180/year
The NAS paid for itself in ~2 years.
Lessons Learned
What went wrong:
- Initial setup took 3 weekends (worth it)
- Transmission VPN broke twice (network config is hard)
- Ran out of disk space once (needed better monitoring)
What went right:
- Family actually uses it (key success metric)
- Rock solid for 18+ months
- I understand my own infrastructure
Things I’d do differently:
- Start with more RAM from day 1
- Document everything immediately (not months later)
- Set up monitoring before hitting problems
Resources
All managed as Docker containers. Config files stored in /volume1/docker/.
Some container counts:
- Media: 10 containers
- Productivity: 5 containers
- Monitoring: 4 containers
- Network: 3 containers
- Automation: 8 containers
Most use docker-compose, some via Portainer stacks.
This setup isn’t for everyone. But if you value owning your data and love tinkering with infrastructure, I can’t recommend it enough.
Questions? I’m always happy to talk home labs.