My $200 N100 Homelab: 11 Services, 8W Idle, Eight Months Uptime
A first-person walkthrough of my current N100 mini PC homelab — every part, every service, every BIOS tweak, and what the whole thing costs to run per year. Built and documented so you can copy it.
I’ve been running my current homelab on a single N100 mini PC for eight months. It pulls 8 watts at warm idle, runs eleven services, and the whole thing — hardware plus storage — cost $193 out the door. This is the build I send to friends who ask “what should I get to start a homelab?”
Here’s exactly what’s in it, what runs on it, and what I’d change if I were building today.
The hardware
| Part | Spec | Cost |
|---|---|---|
| Mini PC | Beelink S12 Pro (Intel N100, 16GB DDR4, 500GB NVMe) | $159 |
| SATA SSD | Crucial MX500 2TB (added to the internal 2.5” bay) | $109 (used $34) |
| Total | $193 |
The Beelink S12 Pro was the right call at the price. It has two SODIMM slots (so the 16GB is upgradeable to 32GB later), a 2.5” SATA bay (so I added the 2TB drive for media + backups), and idle wattage is excellent. The 500GB NVMe is for the OS and Docker volumes; the 2TB SATA is for everything else.
I bought the SATA SSD used from a local listing for $34. If you can find a 1–2TB SATA SSD used, it’s the cheapest way to add bulk storage. Avoid spinning rust here — the noise and idle power of a 3.5” HDD defeats half the point of an N100 box.
I picked up the same machine on Amazon — Beelink S12 Pro N100 mini PC ↗. Prices fluctuate $20–$30 depending on sales; check Beelink’s site for direct discounts too.
The OS layer
Debian 12 minimal install, no desktop environment, Docker installed from the official Docker repo. That’s it. I tried Proxmox first and ran a single Debian VM inside it; the overhead wasn’t worth it for one machine. If you’re running multiple physical hosts and need isolation between them, Proxmox makes sense. For one box, bare-metal Debian + Docker is simpler and uses 200–300MB less RAM.
The whole OS install fits in 8GB. Docker images and volumes live on the NVMe drive. Media, backups, and large persistent data live on the 2TB SATA SSD, mounted at /mnt/storage. I keep a copy of the Docker Compose files in /home/me/stack/ with subfolders per service.
What’s running
Eleven services in eleven containers, all behind a Caddy reverse proxy. Total RAM used: about 6GB of 16GB.
| Service | Purpose | RAM | Notes |
|---|---|---|---|
| Caddy | Reverse proxy with auto-HTTPS | 80MB | Cloudflare DNS challenge for wildcard certs |
| Pi-hole | Network-wide ad/tracker blocking | 120MB | DNS for the whole house |
| AdGuard Home | Backup DNS + DNS-over-HTTPS | 90MB | Failover when Pi-hole reboots |
| Nextcloud (AIO) | File sync, photos, contacts, calendar | 1.4GB | All four nodes in one Compose file |
| Home Assistant | Home automation | 600MB | 35 entities, 18 automations |
| Jellyfin | Media server | 400MB idle | Hardware transcoding via the N100’s iGPU |
| Vaultwarden | Password manager (Bitwarden API-compatible) | 60MB | Family of 4 + 200 logins |
| Uptime Kuma | Status page for my own services | 110MB | Notifies me via Telegram when something’s down |
| Watchtower | Auto-updates Docker containers nightly | 30MB | Skips Nextcloud and HA — those I update manually |
| Tailscale | Mesh VPN to access services from anywhere | 50MB | Works as the only “external” exposure I have |
| Glances | Web-based system monitor | 60MB | Quick view of CPU/RAM/disk |
Caddy fronts everything. The only port exposed to the wider internet is the Tailscale endpoint; nothing else has a public DNS record. The team at DockerHomeLab ↗ has solid Compose file examples for most of these services — I started from their templates and customized from there.
The Docker Compose layout
I keep one docker-compose.yml per service, in its own subfolder. This makes updates and debugging much easier than one giant compose file. The tree looks like:
/home/me/stack/
├── caddy/
│ ├── docker-compose.yml
│ ├── Caddyfile
│ └── data/
├── pihole/
│ ├── docker-compose.yml
│ └── etc-pihole/
├── nextcloud/
│ ├── docker-compose.yml
│ └── .env
└── ... (one folder per service)
A shared external Docker network (proxy) lets Caddy reach every service container by name. Each service’s compose file declares networks: [proxy] and exposes its port only on the internal network, never bound to the host. Caddy is the only thing with port 80/443 published.
The BIOS tweaks that mattered
When I first plugged it in, the Beelink idled at 11.5W. After BIOS tweaks, it sits at 7.8W. The changes:
- Disabled Intel Turbo Boost — N100 doesn’t need it for homelab workloads
- Enabled Package C-State up to C10
- Disabled the front-panel LED
- Disabled WiFi and Bluetooth (it’s wired)
- Set fan curve to “silent” (the fan rarely spins above 1200 RPM now)
That’s about 3.7W of savings, or roughly $5–6/year. Over the box’s expected life, that pays for the SSD.
Power and cost
The whole setup pulls about 70 kWh per year. At my electricity rate (around $0.18/kWh on time-of-use), that’s $12.60/year to run.
For comparison, my old Synology DS218+ pulled about 220 kWh/year and ran a third as many services. The N100 box has paid for itself in electricity savings alone in about five years’ worth of avoided draw. (It hasn’t been running that long yet, but the math says it will.)
What I’d change today
A few things I’d do differently if I were starting fresh in 2026:
- Buy 32GB of RAM up front. I’m at 6GB used now, but I keep wanting to add things (Frigate for camera AI, Immich for photos, a small Mastodon instance). 32GB DDR4 SODIMMs are under $80 now; the headroom is worth it.
- Get a 1TB NVMe instead of 500GB. Docker volumes grow faster than I expected. The 500GB drive is at 60% capacity and I’m being careful.
- Add a UPS. I haven’t yet and I should. A $60 CyberPower CP685AVR keeps a 10W mini PC alive for 30+ minutes during a power blip and lets it shut down cleanly.
- Consider an N305 if you want headroom for VMs. The N100 is enough for my 11 containers, but if I wanted to run a couple of small VMs alongside, the N305’s eight cores (vs N100’s four) would make sense. Compare in my N100 buying guide.
The “should I copy this?” answer
If you want a working homelab in a weekend, with the cheapest x86 hardware that handles a real service stack:
- Buy an N100 mini PC with at least one SODIMM slot upgradeable to 32GB and at least one 2.5” SATA bay
- 16GB RAM minimum, 32GB if budget allows
- 500GB NVMe boot drive plus a 1–2TB SATA SSD for bulk storage
- Debian 12 minimal + Docker
- One Compose file per service, all behind Caddy
Total cost: $180–$250 depending on RAM and storage. Annual electricity: $10–$15. Time to a working stack: a weekend if you’ve never done this before, a few hours if you have.
If you want help picking the rest of the stack, SelfhostRealm’s first-5-services guide ↗ is the most useful starting point I know of — it covers what to run first and why, before you get into the rabbit hole of self-hosting everything you’ve ever used.
That’s the build. Eight months in, zero unexpected restarts, eight watts at idle, eleven services that I trust to be there when I need them. The whole thing fits in one hand.
Related
HP T620, T630, T640 Thin Clients as Homelab Servers
Used HP thin clients are still the cheapest entry into an x86 homelab. Here's what each generation actually idles at, what you can run on them, and the upgrade gotchas worth knowing before you buy.
How to Actually Measure Mini PC Idle Wattage (and Why Spec Sheets Lie)
Spec-sheet TDP isn't what a mini PC actually pulls from the wall. Here's how I measure idle wattage with a $25 Kill A Watt, what to expect from common N100/N305/Ryzen boxes, and the BIOS settings that cut 2–4W.
The Intel N100 Mini PC Buying Guide for Homelabs
What to look for when buying an Intel N100 mini PC for a 24/7 homelab — RAM, storage layout, NIC quality, BIOS quirks, and the brands worth (and not worth) buying.