Skip to content
← All Posts
Essay

Building a 24-service homelab on a $400 NAS

A TerraMaster F2-424 running TrueNAS and Docker replaced about $190 a month of subscriptions. What runs on it, what it costs and what I learned.

Written in April 2026. The setup has grown since, and the current map is at duncansmith.tech/homelab.

A $400 NAS on a shelf runs 24 services that replaced about $190 a month in subscriptions.

Last year I added up what I paid for cloud tools as a single user: Notion, Otter.ai, Todoist, Bitwarden, Google Photos, a handful of automation tools, RSS readers and monitoring dashboards. Each held my data on someone else’s servers at someone else’s price. I decided to run my own.

Homelab architecture diagram

The hardware

I bought a TerraMaster F2-424, a compact two-bay NAS:

  • CPU: Intel N95, 4 cores

  • RAM: 16GB DDR5

  • Storage: one NVMe drive for apps and two hard drives for bulk storage

  • Power: about 15W idle and 35W under load, or $3 to $4 a month

It runs TrueNAS Scale, and every service is a Docker container defined in a Compose file.

What runs on it

  • Documents and knowledge: Paperless-ngx scans, tags and indexes every receipt, letter and manual. BookStack holds runbooks and reference material. Linkwarden archives bookmarks as full pages. FreshRSS handles feeds.

  • Automation: n8n runs more than 80 workflows, and ntfy sends push notifications for anything important.

  • AI and search: Qdrant stores vectors for semantic search, and AnythingLLM answers questions about uploaded documents with citations. The models run on a separate PC.

  • Media: Plex for film and TV. Immich for photos, with face detection and albums.

  • Infrastructure: Vaultwarden for passwords, Uptime Kuma for monitoring, Resilio for file sync, Actual Budget, Cloudflare Tunnels for outside access and AdGuard Home for DNS ad blocking.

What I learned

RAM is the limit. With 16GB, Immich alone can take 3GB while it processes photos. I stagger the heavy jobs: backups run at night, transcription jobs are capped and AnythingLLM stays off unless I’m using it.

The Compose file is the documentation. It records every port, volume, environment variable and dependency. When something breaks I read that file, and when I need to rebuild I run one command.

Automation compounds. My first n8n workflow saved five minutes a day. Each one after it was easier to build, because LLM calls, notification routing and error handling were already solved.

Owning it changes the risk. My documents aren’t training someone else’s model. A service shutting down or raising its price doesn’t take anything from me.

What it costs

What I was paying each month:

  • Notes and knowledge: $15

  • Transcription: $20

  • Password manager: $5

  • Photo storage: $10

  • Automation tools: $50

  • AI APIs: $40

  • Other SaaS: $50

That is about $190 a month, against about $4 of electricity. The hardware paid for itself in a little over two months.