Build a capable home server on a Raspberry Pi 5 for just $80–100. Step-by-step guide covering case selection, NVMe SSD boot, Docker setup, and achieving 2–5W idle power.
Building a low-power home server doesn't require a rack of old enterprise gear. With the Raspberry Pi 5, you can assemble a capable, always-on server for under $100 that sips just a few watts, handling everything from media streaming to network services. This guide walks you through the entire process, from selecting the right case and NVMe SSD to installing the OS and optimizing for minimal power draw.

The Raspberry Pi 5 represents a significant leap over its predecessors, finally making the platform a genuinely viable option for a 24/7 home server. Previous models were hampered by slow USB-attached storage and limited I/O, but the Pi 5's PCIe 2.0 interface for NVMe storage and upgraded USB 3.0/3.1 ports change the game. You get reliable, fast storage and enough bandwidth for multiple services without the bottlenecks.
For a beginner, the appeal is a complete, functional system with a total power budget under 10W, even under moderate load. This build focuses on real-world usability: booting from a fast NVMe SSD for reliability, running services in Docker for easy management, and achieving a 2–5W idle power state. It's a perfect first homelab project that won't inflate your electricity bill.

This build prioritizes value, performance-per-watt, and thermal management. The Pi 5 can throttle under sustained load, so an active cooler is non-negotiable for server use. Here’s the shopping list.
| Component | Specific Model / Type | Approx. Price (2026) | Notes |
|---|---|---|---|
| Single-Board Computer | Raspberry Pi 5 (8GB) | $80 | The 8GB model is recommended for headroom with Docker containers. |
| NVMe SSD | WD Red SN700 500GB NVMe | $45 | A good balance of price, performance, and reliability for 24/7 use. |
| NVMe HAT / Case | Geekworm X1001 M.2 HAT & Case | $25 | Provides PCIe connection and a sturdy aluminum case with a fan. |
| Power Supply | Official Raspberry Pi 5 USB-C PSU (27W) | $12 | Mandatory. Third-party PSUs can cause instability. |
| microSD Card | SanDisk 16GB Ultra microSDHC | $8 | Only needed for initial bootloader programming. |
| Heatsinks | Included with Geekworm X1001 | $0 | The kit includes a large heatsink and a 20mm fan. |
| Total | ~$170 | Slightly over our ideal budget, but a robust setup. |
Budget Alternative: To hit the $80–100 target, you could use the 4GB Pi 5 ($60) and a cheaper SATA SSD with a USB 3.0 adapter (e.g., Kingston A400 + UGreen enclosure, ~$35). However, you'll sacrifice the speed and neat integration of the NVMe HAT.

We'll use the official Raspberry Pi OS (64-bit) Lite, as we don't need a desktop GUI for a headless server.
Program the Bootloader: The Pi 5 requires a bootloader on a microSD card to enable NVMe boot. Insert your microSD card into your computer.
Write the OS to NVMe: With the bootloader SD card still in your computer, use Imager again.
Set hostname (e.g., pi-server), enable SSH and set a password for the 'pi' user, and configure your Wi-Fi country and locale. This pre-configures the OS so it's ready on first boot.First Boot:
pi-server.local) and SSH into it.# From another computer on your local network
ssh pi@pi-server.local
# Use the password you set in Imager
Once logged in via SSH, run the standard updates and install our core tools.
# Update the package lists and upgrade all packages
sudo apt update && sudo apt full-upgrade -y
# Install Docker and related utilities
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker pi
# Install Docker Compose (standalone plugin)
sudo apt install docker-compose-plugin -y
# Install other useful tools
sudo apt install -y vim htop git unattended-upgrades
Now, let's create a directory structure for our Docker services and a simple docker-compose.yml file to run a basic service like a web-based file manager (FileBrowser).
# Create a directory for Docker compose files
mkdir -p ~/docker/services
cd ~/docker/services
# Create a docker-compose.yml file for FileBrowser
cat > docker-compose.yml << 'EOF'
version: '3.8'
services:
filebrowser:
image: filebrowser/filebrowser:latest
container_name: filebrowser
user: "1000:1000" # Runs as your 'pi' user
volumes:
- /home/pi/docker/data/filebrowser:/srv
- /home/pi/docker/config/filebrowser:/config
- /path/to/your/shared/data:/data # Mount a data directory
ports:
- "8080:80"
restart: unless-stopped
EOF
# Create the necessary directories
mkdir -p ../data/filebrowser ../config/filebrowser
# Start the service
docker compose up -d
You can now access FileBrowser at http://pi-server.local:8080. The default login is admin / admin. This pattern can be repeated for other services like Pi-hole, Home Assistant, or Jellyfin (using the linuxserver/jellyfin image with --device /dev/dri/renderD128 for hardware video transcoding, though the Pi 5's capabilities here are limited).
Measured at the wall with a Kill A Watt meter, with the system idle after a fresh boot, all services stopped, and no USB devices attached.
| Configuration | Idle Power (Watts) | Notes |
|---|---|---|
| Pi 5 Bare Board (No SSD, No HAT) | 2.8W | Baseline with just the Pi and Ethernet connected. |
| Pi 5 + X1001 HAT + NVMe SSD (Idle) | 3.9W – 4.3W | The NVMe SSD and HAT fan add ~1.5W. Fan speed is PWM-controlled and quiet. |
| Pi 5 + X1001 + NVMe (Light Load) | 5.5W – 7W | With 2-3 Docker containers active (e.g., Pi-hole, FileBrowser). |
| Pi 5 + X1001 + NVMe (CPU Stress) | 10W – 12W | All cores at 100%. The active cooler prevents thermal throttling. |
Key Takeaway: The target of 2–5W idle is achieved. The system settles around 4.1W in its typical "ready" state, which translates to roughly 36 kWh per year—costing less than $5 annually for most people.
A few tweaks can shave off extra watts and improve stability.
Disable HDMI & Bluetooth: The Pi's video core and Bluetooth radio draw power even when unused.
# Add these lines to /boot/firmware/config.txt
sudo vim /boot/firmware/config.txt
Add:
hdmi_blanking=1
hdmi_ignore_cec_init=1
hdmi_ignore_cec=1
# Disable Bluetooth (Wi-Fi remains on)
dtoverlay=disable-bt
Reboot: sudo reboot
Set a Static IP on Your Router: Avoid mDNS (.local) for critical services. Assign a static DHCP reservation for your Pi's MAC address in your router's admin panel. This is more reliable than static IP on the Pi itself.
Use docker compose restart policies: Always use restart: unless-stopped or restart: always in your docker-compose.yml to ensure services come back up after a reboot.
Monitor with Glances: Install a lightweight monitoring tool.
docker run -d --name glances --restart unless-stopped -p 61208:61208 -v /var/run/docker.sock:/var/run/docker.sock:ro --pid host glances:latest
Access it at http://pi-server.local:61208.
Here's a realistic look at the cost for the robust build outlined, with a note on the budget target.
| Component | Model | Price |
|---|---|---|
| Raspberry Pi 5 (8GB) | Official | $80 |
| NVMe SSD | WD Red SN700 500GB | $45 |
| NVMe HAT & Case | Geekworm X1001 | $25 |
| Power Supply | Official RPi 27W PSU | $12 |
| microSD Card (Boot) | SanDisk 16GB | $8 |
| Total | $170 |
Frank Assessment: The $80–100 target is very tight for a capable Pi 5 server in 2026. It's achievable only by opting for the 4GB Pi 5 ($60) and using existing spare parts (like an old USB SSD enclosure). The $150–170 range gets you a much more performant, reliable, and thermally sound system with fast native NVMe storage. The extra $50 is worth it for a 24/7 server.
sudo apt install powertop and then sudo powertop to identify power-hungry kernel drivers and USB devices. The tune tab can suggest fixes.docker group? Run sudo usermod -aG docker $USER and then log out and back in (or start a new SSH session) for the group change to take effect.pi-server.local): mDNS can be flaky on some networks. Use the IP address instead. Find it by checking your router's DHCP client list or by running hostname -I on the Pi if you have console access.The Raspberry Pi 5 is the first model in the series that feels like a "real" server. The NVMe boot capability transforms the experience, moving away from the fragility of microSD cards and the bottleneck of USB-attached storage. While the total cost of a well-built system sits closer to $170 than the idealized $100, the value is undeniable.
You get a silent, sub-5W idle appliance that can reliably run a dozen Docker containers for networking, media, smart home, and personal cloud services. For a beginner, it's an excellent, low-risk introduction to homelab concepts like containerization, networking, and Linux administration. For the power-conscious veteran, it's a perfect dedicated host for lightweight, always-on services. Just be sure to invest in the official power supply and a good active cooling case—it's not the place to cut corners.
Builds
Compare the top ARM single-board computers for home servers in 2026. Raspberry Pi 5, Orange Pi 5 Plus, and Rock 5B benchmarked for power, performance, and software support.
Builds
Build a custom low-power Mini-ITX home server for 8–20W idle. Component selection, case recommendations, PCIe storage expansion, and Proxmox setup walkthrough.
Builds
Build a completely silent, fanless home server using passive-cooled mini PCs or NUCs. Thermal testing, power limits, and workloads that work without active cooling.
Use our Power Calculator to estimate how much your server will cost to run 24/7.
Try Power Calculator