Skip to main content
  1. Posts/

Compact Home Server Blueprint: Real r/selfhosted Setups That Actually Work

·5 mins

The Community Spark #

Over the past month r/selfhosted has lit up with posts titled “My compact home server setup” and “Tiny box, big services”. Newcomers ask, “Can I run Nextcloud, Plex, and a Pi‑hole on a single 4U chassis without blowing my budget?” Veterans answer with real‑world bill‑of‑materials, wiring diagrams, and performance tweaks. The thread’s up‑vote count (over 2 k) shows a clear appetite for a concise, reproducible guide that bridges hobbyist enthusiasm with production‑grade reliability.

Synthesized Community Perspectives #

ConsensusDebate
Mini‑ITX or NUC‑class hardware is the sweet spot for power‑efficiency and noise.Raspberry Pi vs. x86 – Pi is cheap but struggles with transcoding; x86 wins for media.
TrueNAS Scale and Proxmox VE dominate as OS choices for ZFS storage + VM orchestration.Docker‑only vs. VM‑centric setups – Docker fans cite simplicity, VM proponents stress isolation.
Power budgeting: 60‑80 W idle is acceptable; 150 W peak is a deal‑breaker for most.Noise tolerance – some accept 40 dB fans; others insist on silent operation with passive cooling.
Backup strategy: Remote B2 bucket + local USB‑HDD mirror.RAID level – RAID‑Z1 vs. RAID‑Z2 vs. simple mirroring; trade‑off between cost and redundancy.

These threads give us the lived experience needed to craft a guide that works for a budget‑conscious family, a media‑centric power user, and a privacy‑first hobbyist.

Deep‑Dive Actionable Guide #

1. Choose the Right Chassis & Power #

PersonaRecommended BoxPSUApprox. Cost
Budget familyFractal Design Node 304 (Mini‑ITX, 3‑bay)300 W 80+ Bronze$80
Media power userSilverStone CS381 (4‑U, 8‑bay)500 W 80+ Gold$150
Privacy hobbyistUbiquiti UniFi Dream Machine Pro (integrated)Built‑in 100 W$300 (incl. OS)

All three boxes fit under 10 L, can sit on a bookshelf, and draw ≤ 70 W idle when using a low‑profile 80+ PSU.

2. Assemble the Core Hardware #

# Example for Node 304
CPU   = Intel i5‑12400 (6 cores, 65 W TDP)
RAM   = 32 GB DDR4‑3200 ECC (if motherboard supports ECC)
SSD   = 1 TB Samsung 970 EVO Plus (OS + VM storage)
HDDs  = 2×4 TB WD Red (ZFS mirror)
NIC   = Intel i225‑V (2 Gbps) – add a second NIC for VM isolation

Tip: Mount the SSD on the motherboard’s M.2 slot, keep HDDs in a RAID‑Z1 pool for resilience without excessive parity overhead.

3. Install the OS Layer #

Option A – TrueNAS Scale (ZFS + Kubernetes)

# Download ISO, create bootable USB
curl -L -o TrueNAS-Scale.iso https://download.truenas.com/scale/TrueNAS-Scale.iso
# Boot, follow installer, select ZFS mirror for data drives
  • Enable Kubernetes in Services → Apps.
  • Deploy Nextcloud and Plex via the built‑in Helm charts.
  • Add a Pi‑hole container from the Community Apps catalog.

Option B – Proxmox VE (VM‑first)

# Install Proxmox
wget https://enterprise.proxmox.com/iso/pve-enterprise-8.2.iso
# Follow the guided installer, allocate ZFS on SSD for VM images
  • Create three VMs: nextcloud, plex, pihole.
  • Use VirtIO drivers for near‑native disk I/O.
  • Snapshots enable quick rollbacks before major upgrades.

Both OSes support ZFS deduplication (use sparingly) and SMART monitoring out‑of‑the‑box.

4. Network & Security Hardening #

# Enable firewall on TrueNAS
firewall add rule src=any dst=192.168.1.10 port=443 action=allow
# Disable root SSH login on Proxmox
sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
systemctl restart sshd
  • Put the server behind a Ubiquiti EdgeRouter with a VLAN for IoT devices.
  • Install fail2ban and certbot for automatic Let’s Encrypt certs.

5. Backup & Disaster Recovery #

  1. Local Mirror – schedule zfs send/receive to a USB‑3.0 HDD nightly.
  2. Off‑site – use rclone to sync the ZFS snapshot to a Backblaze B2 bucket weekly.
rclone sync /mnt/pool b2:mybackupbucket --progress
  1. Test restoration quarterly; keep a documented recovery checklist in the repo.

Pros & Cons Comparative Table #

FeatureTrueNAS ScaleProxmox VE
Ease of StorageBuilt‑in ZFS UI, automatic snapshotsRequires manual ZFS setup or LVM
App EcosystemHelm‑based catalog, one‑click installsVM marketplace, more flexible OS choices
Resource OverheadLower (containers share kernel)Higher (full VMs)
Learning CurveModerate (Linux + Kubernetes basics)Steeper (VM networking, guest OS)
Community SupportStrong on r/selfhosted, official forumsLarge, but scattered across Proxmox and Reddit

The Verdict / Expert Advice #

  • For families or small offices wanting a plug‑and‑play experience, TrueNAS Scale on a Node 304 gives you ZFS reliability and a one‑click app store with < 10 W idle power.
  • For media enthusiasts who need hardware transcoding, the SilverStone + Proxmox combo lets you assign a GPU pass‑through to the Plex VM while keeping other services isolated.
  • For privacy‑first tinkers who love full control, the Ubiquiti Dream Machine Pro running Proxmox with encrypted VM disks offers a single‑box firewall + server, albeit at a higher price point.

Pick the chassis that matches your noise tolerance, then let the OS choice follow your comfort with containers vs. VMs.

Frequently Asked Questions #

1. Can I run all three services (Nextcloud, Plex, Pi‑hole) on a single 8 GB RAM box?
Yes, but expect limited concurrent Plex transcodes. Allocate at least 2 GB to Plex, 1 GB to Nextcloud, and 256 MB to Pi‑hole; keep 2 GB for the host OS.

2. Is ZFS worth the extra CPU usage on a low‑power CPU like the i5‑12400?
Absolutely for data integrity; the i5’s 6 cores handle ZFS checksumming without noticeable latency, especially when you enable ashift=12 for 4 K drives.

3. How do I keep the server silent in a bedroom environment?
Use a Noctua NF‑A12x15 PWM fan on the CPU, set a custom fan curve to 30 °C–40 °C, and add a silicone vibration dampener under the chassis. Passive cooling is only feasible with fanless NUCs, which limit storage options.

4. What’s the best way to monitor power consumption?
Add a TP-Link Kasa Smart Plug with energy monitoring and integrate it into Home Assistant; you can chart daily watts and set alerts when usage spikes above a defined threshold.