Skip to content

guide

The Vault: A private cloud in a shoebox: your files, your hardware — Build Guide

A Raspberry Pi 5, an NVMe HAT and a terabyte of flash running Nextcloud or Samba. The subscription you cancel pays for the kit in a year.

· 10 min read

Devs At Home is a participant in the Amazon Services LLC Associates Program, an affiliate advertising program. We earn from qualifying purchases. This never affects what we recommend or what we say about it.

You build a network-attached storage box from a Raspberry Pi 5, an NVMe adapter board and a solid-state drive. It sits next to your router, serves files to every device in the house, and costs nothing per month once the hardware is paid for. The subscription you cancel — Dropbox, Google Drive, iCloud — recoups the outlay in about twelve months.

Key points

  • The Seeed Studio Raspberry Pi 5 Starter Kit includes the board, power supply, case and heatsink in one box.
  • The Geekworm X1001 PCIe to M.2 NVMe SSD HAT connects directly to the Pi 5's PCIe slot and provides full-speed storage.
  • Nextcloud gives you file sync, calendar and contacts; Samba turns the Pi into a plain network drive without the web interface.
  • An ethernet cable to the router is not optional — WiFi NAS throughput collapses the moment two devices try to read at once.
  • The Crucial P310 1TB SSD fits the M.2 2280 slot on the X1001 and draws less power than most spinning drives.
  • This is not a backup in itself — anything you store here needs a second copy elsewhere, or you have simply moved the risk.

What you are building and why it is worth a weekend

A home NAS used to mean a Synology box and four spinning disks. That works, but it draws twenty watts, hums, and costs more than a decent monitor. A Pi 5 with flash storage uses five watts, fits in a coat pocket, and boots in fifteen seconds.

You'll run either Nextcloud — which syncs files, handles calendars and contacts, and exposes everything through a web interface — or Samba, which makes the Pi appear as a plain network drive on macOS, Windows and Linux. Nextcloud is closer to Dropbox. Samba is closer to plugging in a USB stick, except it works from anywhere on your network.

The subscription you cancel pays for the kit in a year. After that, storage is free and you control the data.

The parts list: what each item in the kit cart does

Part Purpose Specification
Seeed Studio Raspberry Pi 5 Starter Kit The computer, case, power supply and heatsink 8GB RAM variant; 27W USB-C power supply included
Geekworm X1001 PCIe to M.2 NVMe SSD HAT Connects an M.2 drive to the Pi's PCIe slot Gen 2 x1 interface; supports M.2 2280 NVMe drives
Crucial P310 1TB SSD Storage 1TB M.2 2280 NVMe; sequential read up to 7,100 MB/s
Silicon Power 1TB Alternative SSD if the Crucial is out of stock 1TB M.2 2280 NVMe; performance varies by batch

The starter kit saves you hunting down a compatible power supply and a case that fits the Pi with the HAT on top. The Geekworm board bolts directly onto the GPIO header and exposes the M.2 slot above the Pi. You'll use standoffs to space the HAT, but they come with the board.

One terabyte is the sensible starting point. Smaller drives cost nearly as much per gigabyte; larger ones push the total high enough that you start wondering whether a dedicated NAS box makes more sense.

What you supply yourself, honestly

An ethernet cable to the router. WiFi throughput drops to about a fifth of wired once two devices read at the same time, and the Pi's WiFi antenna shares bandwidth with Bluetooth. Run a cable or live with random stalls.

A second copy of anything you would cry about. This build is not a backup. It is a file server. RAID is not a backup. Cloud sync is not a backup. The only backup is a separate physical copy on a different device, preferably in a different room. Assume the Pi catches fire tonight — if you would lose something, you have not backed it up.

A microSD card if you want the OS on removable media, but the Pi 5 can boot directly from NVMe if you update the bootloader first. That is faster and removes a failure point, but it means the drive holds both the system and your files. Pick your trade-off.

The build, in numbered phases sized to an evening each

Phase one: hardware assembly

Unbox the Pi and install the heatsink before you do anything else. The Pi 5 runs hot under load and thermal throttling cuts performance in half.

Attach the Geekworm X1001 to the GPIO header using the standoffs and screws provided. The board sits parallel to the Pi with about ten millimetres of clearance. Slot the M.2 drive into the connector at a shallow angle, press it flat, and secure it with the tiny screw at the far end. That screw is easy to drop. Do this over a table, not a carpet.

Check that the drive sits flush and does not rock. If it does, the standoff height is wrong or you have not pushed the M.2 connector home.

Phase two: bootloader and OS installation

The Pi 5 ships with a bootloader that expects a microSD card. You can leave it that way and run Raspberry Pi OS from the card, or update the bootloader to boot from NVMe. The latter is faster and simpler once it is done, but you need a microSD card for the update itself.

Write Raspberry Pi OS Lite to a microSD card using the Raspberry Pi Imager. Boot from the card, open a terminal, and run sudo rpi-eeprom-config --edit. Change BOOT_ORDER to 0xf416, save, and reboot. The Pi will now try NVMe before SD.

Write Raspberry Pi OS Lite to the NVMe drive using a USB-to-M.2 adapter, or write it to the card first and then use rpi-clone to copy the system to the NVMe. Remove the SD card and boot. If it works, you are running from flash.

Phase three: software installation

Update the system first. sudo apt update && sudo apt upgrade -y takes about ten minutes on a fresh install.

For Samba, install the package and create a shared folder: sudo apt install samba samba-common-bin, then edit /etc/samba/smb.conf to define a share. Add your user with sudo smbpasswd -a yourusername. Restart the service and the share appears on other devices as \\raspberrypi\sharename on Windows or smb://raspberrypi/sharename on macOS.

For Nextcloud, the snap package is the fastest route: sudo snap install nextcloud. It bundles the web server, database and PHP runtime. Create an admin account by visiting http://raspberrypi.local in a browser on the same network. Point the data directory at a folder on the NVMe drive during setup, not the default location on the SD card or system partition.

Nextcloud runs slower than Samba because every file operation goes through a database and a web stack. It is the trade-off you make for calendar sync and a web interface.

Where this build actually stalls, and how to get unstuck

The Pi does not see the NVMe drive. Check that the HAT is seated properly on the GPIO header and that the M.2 drive is pushed all the way into the slot. Run lsblk to list block devices. If the drive does not appear, power off and reseat everything. If it still does not appear, the drive or the HAT is faulty.

Samba shares do not appear on the network. Firewalls on the Pi block SMB by default. Run sudo ufw allow Samba if ufw is active, or disable the firewall entirely with sudo ufw disable for testing. On macOS, manually connect using Finder's Go menu and smb:// rather than waiting for the share to appear in the sidebar.

Nextcloud is slow. The Pi 5 has enough CPU, but the database writes are the bottleneck. Move the Nextcloud data directory to the NVMe drive if you have not already. Disable file scanning and versioning for folders that do not need them. Accept that Nextcloud on a Pi will never match a dedicated server — it works, but you will wait an extra second.

The Pi throttles under load. The heatsink is not making contact or the case restricts airflow. The Seeed Studio case has vents, but some third-party cases do not. Run vcgencmd measure_temp while copying files. If it climbs past seventy degrees Celsius, you need better cooling.

Safety, etiquette and the cleanup that keeps you allowed to do this again

Label the Pi. If someone else in the house unplugs it thinking it is an old phone charger, you will spend an evening debugging phantom network issues.

Do not run this open to the internet without knowing exactly what you are exposing. Nextcloud has had remote code execution bugs. Samba has had remote code execution bugs. Put this behind a VPN if you need access from outside, or do not expose it at all.

The Pi draws five watts flat out, but the power supply can deliver twenty-seven. Do not run other USB devices off the Pi unless you know their draw. A spinning hard disk will pull the voltage down and crash the system.

Dust kills Pis slowly. The heatsink fins collect it and thermal performance drops. Blow it out every few months or accept that the Pi will throttle earlier.

Ways to take it further once the base build works

Add a UPS. A battery pack designed for routers keeps the Pi running through short power cuts and gives it time to shut down cleanly during longer ones. Corrupt filesystems are the main cause of NAS failure on a Pi.

Set up off-site replication. rclone can sync a folder to another Pi at a friend's house, or to cloud storage as a backstop. The point of running your own hardware is control, not eliminating the cloud entirely.

Install Pi-hole or AdGuard Home for network-wide ad blocking. The Pi has spare CPU and you already have it plugged into the router.

Mount the share on boot on your development machine. macOS and Linux can mount Samba shares automatically using fstab or Automator. You'll stop thinking of it as a separate device and treat it as local storage.

Common questions

Can I use a USB drive instead of NVMe?

You can, but throughput drops by half and USB drives do not handle constant small writes well. They are fine for cold storage, not for a file server. NVMe over PCIe is faster and more reliable.

How loud is this, really?

Silent. The Pi 5 has no fan and the SSD has no moving parts. The only noise is coil whine from the power supply if you are unlucky, and that is rare.

Do I need the 8GB Pi or will 4GB work?

Samba runs fine on 4GB. Nextcloud uses more RAM because of the web server and database, but 4GB still works if you are not serving ten simultaneous users. The 8GB variant costs only slightly more and removes a bottleneck you might hit later.

What happens if the Pi fails?

Pull the NVMe drive, slot it into a USB adapter, and plug it into any other machine. Your files are readable immediately. The system partition is ext4, which macOS cannot read without third-party tools, but the data partition is whatever you formatted it as.

Can I run this off WiFi if the router is too far away?

No. The Pi 5's WiFi tops out at about forty megabytes per second under ideal conditions, and that is with nothing else on the network. Run a cable or move the Pi closer to the router. Powerline adapters work if running ethernet is impossible, but they are slower than a direct cable.

How much power does this use over a year?

About five watts continuous, which is roughly forty kilowatt-hours per year. At typical residential electricity rates, that is negligible — less than the standby draw of a cable box.

Is this faster than a USB hard drive plugged into the router?

Much. Router USB ports run at USB 2.0 speeds and share bandwidth with the router's main processor. The Pi's NVMe connection is dedicated and hits hundreds of megabytes per second. The difference is obvious when you copy large files.

What is the biggest drive this setup supports?

The X1001 HAT supports any M.2 2280 drive, so you can fit up to eight terabytes if you are willing to pay for it. The Pi's USB ports also work for external drives if you run out of space, but performance drops and you add cables.

Who this build is for, and who should skip it

Build this if you want a local file server, you are comfortable editing config files in a terminal, and you accept that setup takes a weekend. The result is cheap to run, silent, and entirely under your control.

Skip it if you need multi-gigabit throughput, RAID redundancy, or support when something breaks. A Synology box costs more up front but you'll have it working in an hour, and it will not punish you for skipping a config step. This build is for developers who would rather spend time than money, and who already know enough Linux to recover from a bad fstab entry.

One email a week

New reviews, teardowns and the occasional deal worth knowing about. No spam, unsubscribe any time.