This is the setup I've been running for about 18 months. It's not perfect, it's not pretty, but it works. Twelve Docker containers on a Synology NAS at home, plus one tiny VPS in Frankfurt. Zero paid subscriptions. Monthly cost: about $7 for VPS + B2 backup. Replacement cost if hardware died: maybe $2,000 for the NAS + drives.
If you're curious about what self-hosting in 2026 actually looks like in practice — not the marketing, not the aspirational, just the day-to-day — here's my honest stack.
The hardware
- Synology DS920+ (4-bay, 4GB RAM, upgraded to 8GB)
- 4 × 8TB Seagate Ironwolf in SHR (similar to RAID-5). Usable ~22TB.
- UPS: APC Back-UPS 600VA. Cables NAS + router + switch.
- Switch: Netgear GS308 (8-port gigabit).
- Router: ASUS RT-AX86U (already had this).
- VPS: Hetzner CPX21 (3 vCPU, 4GB RAM, €4.35/month).
Total upfront: ~$1,800 (NAS + drives + UPS). Total monthly: ~$5-7.
The philosophy
Three principles:
- Data on the NAS, not on cloud services I don't control.
- Backup to a different cloud region (B2 encrypted), so I can recover from ransomware, fire, or theft.
- Don't pay subscriptions when an open-source alternative works.
Most of my services satisfy all three. Some (like ChatGPT Plus) I still pay for, because there's no open equivalent yet.
Container list (12 active)
1. Nextcloud — file sync + calendar + contacts
version: '3'
services:
nextcloud:
image: nextcloud:latest
restart: unless-stopped
ports:
- "8080:80"
volumes:
- ./data:/var/www/html
depends_on:
- db
db:
image: postgres:15
environment:
POSTGRES_DB: nextcloud
POSTGRES_PASSWORD: ********
This replaces Dropbox + Google Calendar + Google Contacts. Sync works on iOS, Mac, Windows, Linux.
Pain point: Upgrades occasionally break. I pin the image to specific versions and only upgrade every 3 months.
2. Immich — photo library
version: '3'
services:
immich-server:
image: ghcr.io/immich-app/immich-server:release
restart: unless-stopped
ports:
- "2283:2283"
volumes:
- /volume1/photos:/usr/src/app/upload
This replaces Google Photos. AI face/object recognition is on par with Google's, and the timeline UI is gorgeous.
Pain point: ML/AI hardware acceleration is fiddly on Synology (Intel iGPU works, but setup is non-trivial). Without it, indexing is slow.
3. FreshRSS — RSS reader
Self-hosted feed reader, replaces Inoreader/Feedly.
Pain point: Almost none. Runs on PHP + SQLite, dead simple.
4. Jellyfin — media streaming
Replaces Plex and Emby. Free, open source, no telemetry.
version: '3'
services:
jellyfin:
image: jellyfin/jellyfin:latest
restart: unless-stopped
ports:
- "8096:8096"
volumes:
- ./config:/config
- /volume1/media:/media
Pain point: Hardware transcoding needs Intel QuickSync, which works on my DS920+ but CPU is borderline. Sometimes a 4K stream stalls. Most content is fine.
5. Vaultwarden — password manager
Bitwarden-compatible API + storage, but open source. Clients work exactly like Bitwarden (since the API is identical).
Pain point: Initial password migration from 1Password was painful. After that, smooth sailing.
6. Calibre-Web — ebook library
Replaces Kindle cloud (for personal-use books).
Pain point: PDF handling could be better. Reads will be EPUB.
7. Paperless-ngx — document management
OCR + tag + archive scanned documents. Replaces my Evernote notes folder.
Pain point: Initial OCR setup needs a decent model. I run it on CPU but it's slow (~30 sec/page). Acceptable for occasional scans.
8. Homarr — dashboard
A nice homepage that shows the status of all my containers.
Pain point: None, it's tiny.
9. Uptime Kuma — monitoring
Self-hosted status page. Pings all my services every 5 min, alerts me if anything's down.
Pain point: None. Just works.
10. Pi-hole — DNS ad blocker
DNS-level ad/tracker blocking for my whole network.
version: '3'
services:
pihole:
image: pihole/pihole:latest
restart: unless-stopped
ports:
- "53:53/tcp"
- "53:53/udp"
- "8081:80/tcp"
environment:
WEBPASSWORD: ********
Pain point: Router DNS needs manual config. Once set, devices use Pi-hole automatically.
11. Traefik — reverse proxy + automatic HTTPS
Front-ends all my services with HTTPS via Let's Encrypt. Single domain (*.home.example.com) covers everything.
Pain point: Setting up DNS-01 challenge for wildcard certs needs careful DNS provider config. Once done, automatic.
12. Caddy — web server with HTTPS
Companion to Traefik for some services.
On the VPS (1 container stack)
Mailcow — mail server
Self-hosted email with web UI + spam filtering.
Pain point: Email is hard. Deliverability, IP reputation, DKIM/SPF/DMARC, blacklists. I spent 2 weekends setting it up and monitor quarterly.
WireGuard — VPN
Site-to-site between my laptop (when traveling) and home.
version: '3'
services:
wireguard:
image: linuxserver/wireguard:latest
restart: unless-stopped
ports:
- "51820:51820/udp"
cap_add:
- NET_ADMIN
volumes:
- ./config:/config
When traveling, I tunnel through the VPS to access my NAS. Performance is great (~50 Mbps with the VPS in Frankfurt and my NAS in Japan).
Restic + cron — automatic backups
#!/bin/bash
restic -r b2:my-backups/nas backup /volume1/data
restic -r b2:my-backups/nas forget --keep-daily 30 --keep-weekly 12 --keep-monthly 24
Encrypted, deduplicated backups to Backblaze B2. About $7/month for 1.5TB of unique data.
What I don't self-host (and pay for instead)
- ChatGPT Plus: $20/month. No equivalent open-source model for general reasoning yet.
- Backblaze B2 backup: $7/month. Too cheap to self-replicate.
- Domain: $12/year. Unavoidable.
- Adobe Creative Cloud: $60/month. No FOSS alternative for video editing.
- Apple One: $30/month. iCloud + Apple Music + TV+ — Apple ecosystem tax.
Total unavoidable subscriptions: ~$120/month.
What I no longer pay for
Used to pay / now self-hosted:
- Dropbox Plus ($10/mo → $0): Nextcloud
- Google Photos ($10/mo → $0): Immich
- iCloud Drive ($3/mo → $0): Nextcloud
- 1Password ($5/mo → $0): Vaultwarden
- Evernote ($8/mo → $0): Paperless + Joplin
- Plex Pass ($5/mo → $0): Jellyfin
- Kindle Cloud (free anyway): Calibre-Web
- Inoreader Pro ($7/mo → $0): FreshRSS
- NordVPN ($4/mo → $0): WireGuard
- IFTTT ($2/mo → $0): n8n (work in progress)
- Todoist Pro ($5/mo → $0): Vikunja (still testing)
Saved: ~$60/month → $720/year
Plus the feeling of owning my data, which is harder to price.
Maintenance reality
I budget 2 hours/month. Real usage:
- Updates: 30 min, second Sunday of every month
- Backup verification: 15 min/month (verify backup integrity)
- Quarterly: 1 hour for restore tests + password rotation
- Annually: full backup + restore dry-run + NAS firmware update
The rest is reactive. Maybe 1-2 issues a quarter, usually easy fixes.
What I'd do differently
Looking back:
- Start with less. I initially deployed 20+ containers, half of which I don't use. Trimmed to 12 after 6 months.
- Use Traefik for everything, including Jellyfin (no port mappings).
- Skip the GPU/Plex media transcoding optimization rabbit hole — direct play works for 95% of content.
- Buy 2 NAS drives from different batches. Drive failures are correlated when drives come from the same batch.
Common questions I get
"What if your NAS dies?"
Restore from B2 backup onto a new NAS. The process is documented and tested annually. Takes ~12 hours for 1.5TB of data.
"What about power outages?"
UPS bridges short outages. For longer ones, everything comes back when power returns. NAS has ECC RAM (some models), so even abrupt power-off is usually safe.
"What about ransomware?"
I don't expose my NAS to the internet directly. All access goes through VPN. If ransomware got on a device that has Nextcloud sync, it could encrypt my Nextcloud data, but the B2 backup at a separate cloud provider is unaffected. Restore from backup.
"What about family members?"
Wife and parents use Nextcloud + Immich via iOS apps. They don't even know it's self-hosted. The UI is familiar.
"Is it actually cheaper?"
Break-even is ~3 years on the NAS hardware. After that, it's pure savings. Plus data ownership.
Honest downsides
Self-hosting isn't all upside. Real downsides:
- Time: ongoing maintenance, even if minimal
- Risk: more failure modes than cloud (drive, UPS, network)
- Family acceptance: when something breaks, nobody else can fix it
- Initial setup: steep learning curve if you're new to Linux/Docker
Should you self-host?
Self-host if:
- You want data ownership
- You're comfortable with Linux basics
- You have backup discipline
- You have stable internet at home
- You enjoy tinkering
Don't self-host if:
- You want zero-touch reliability
- You're not willing to learn Docker basics
- Your home internet is unreliable
- You travel constantly without stable home access
My favorite thing about this stack
I can delete an account on a SaaS service and never lose access. I can hand a hard drive to my family and they have everything. No vendor lock-in. No "we updated our terms" emails.
The cost savings are nice, but the real benefit is being able to say "no" to any company that wants my data or money.
What I'd add in 2026
- n8n for workflow automation (replacing IFTTT)
- Paperless-ngx improvements (better OCR model)
- Mealie for recipes (haven't started yet)
- Maybe a second NAS for off-site replication instead of B2 (5-year TCO wins at scale)
What I'd remove
- Homarr: nice but unnecessary, could be removed
- Pi-hole: I'm considering replacing with AdGuard Home (better UI)
- Caddy: actually no longer needed since I migrated everything to Traefik
Cost summary (year 1 → year 3+)
- Year 1: NAS hardware $1,800 + VPS $60 + B2 backup $84 = $1,944
- Year 2: VPS $60 + B2 backup $84 = $144
- Year 3+: same as year 2 = $144/year
Cloud equivalent for the same services: ~$60/month = $720/year.
So break-even happens at year 3 (cumulative: $2,088 spent vs $2,160 in cloud). Every year after is savings.
This math ignores the value of data ownership, but even pure financially, it's a wash after 3 years and then positive.
Final thought
Self-hosting in 2026 is not for everyone. But if you have the time, patience, and a willingness to learn, the payoff — both financially and in peace of mind — is real.
Start with 2-3 services. Build backup discipline. Add more as you get comfortable. Within a year, you'll have a stack that works for you and yours.
If I had to start over from scratch, would I do it again? Yes, without hesitation.
Top comments (0)