Raspberry Pi 5 Home Cloud — 4 TB NVMe, always on

Projects Tracker · Pi 5 home cloud · track 5 of 5 ← 5G Systems

A compact, low-power home server: private cloud storage, remote SSH, video streaming, MacBook backups, Linux and C++ development, and moderate real-time processing — all from a board that draws about as much power as a phone charger. This note is the full plan, from which parts to buy to what the finished system is and is not good at.

In one line. A Raspberry Pi 5 (8 GB) with a 4 TB M.2 2280 NVMe SSD on a PCIe NVMe HAT, reached over Tailscale, costs €635–712 to build at August 2026 German prices and about €1–1.50 a month to run. Two thirds of that is the SSD. The drive is far faster than the network it is served over — and that is fine.

Contents
  1. What this system is
  2. The hardware
  3. The same SSD and the MacBook
  4. Network performance — the real bottleneck
  5. Remote access and file sharing
  6. Storage layout and booting
  7. Video streaming
  8. Development on the Pi
  9. Real-time processing
  10. Power and running cost
  11. Software stack
  12. Security model
  13. Backups
  14. Budget
  15. The final configuration
  16. What it is good at, and what it is not
  17. Upgrade paths
  18. The whole architecture

What this system is

The Pi 5 becomes a small always-on home server. One board, one SSD, one network cable, and a VPN that makes the whole thing reachable from anywhere without opening a single port to the public internet.

Storage and access

  • Private home cloud
  • Network file storage
  • MacBook backups
  • SSH / SFTP from inside or outside the home
  • SMB file sharing
  • Tailscale remote access

Compute and services

  • Jellyfin media streaming
  • Docker containers
  • Git repositories
  • Python / C / C++ development
  • Moderate DSP and real-time processing
  • Small web services and databases
Figure 1: The basic architecture. Everything reaches the Pi through Tailscale or the LAN; the SSD hangs off the PCIe bus, not USB.

The hardware

Core parts

ComponentRecommendationNotes
ComputerRaspberry Pi 5, 8 GB RAMExcellent balance for server use.
Storage4 TB M.2 2280 NVMe SSDMain OS + data storage.
NVMe adapterGeekPi N04 M.2 NVMe HAT or equivalentMust support M.2 2280 NVMe.
Power supplyOfficial Raspberry Pi 27 W USB-C PSURecommended for Pi 5 + peripherals.
CoolingRaspberry Pi 5 Active CoolerStrongly recommended for 24/7 use.
NetworkGigabit EthernetPreferred over Wi-Fi for NAS use.
CasePi 5 case compatible with a top-mounted NVMe HATVerify physical clearance.
Table 1: The core build. The active cooler and the official PSU are the two items not worth economising on for a machine that runs 24/7.

Optional extras

Which NVMe SSD fits

The SSD type that matters is:

M.2 2280 NVMe
PCIe
M-Key

The number 2280 is the physical size, not a model name:

2280
││
│└── 80 mm long
└── 22 mm wide

The GeekPi N04 in this plan supports M.2 2230, 2242, 2260 and 2280. For a 4 TB SSD, 2280 is the format to buy — the choice at that capacity is far wider.

Do not buy an M.2 SATA-only SSD. It is the same physical connector family but a different protocol; a HAT that supports NVMe only will not see it at all. Check the listing says NVMe / PCIe, not just "M.2".

How the NVMe connects

The Pi 5 exposes a PCIe interface. The HAT is the physical adapter between the M.2 socket and that connector — nothing more clever than that, which is why it is reliable.

Figure 2: The PCIe path, which is the preferred permanent installation for a Raspberry Pi NAS.

PCIe HAT vs USB enclosure

MethodApprox. Pi-side performanceBest use
PCIe NVMe HAT~400–500 MB/sPermanent NAS / server
USB 3 NVMe enclosure~350–450 MB/sPortable / removable SSD
Table 2: The two ways to attach the SSD to the Pi. The performance difference is small; the difference in convenience is not.

For a permanent home server, use the PCIe NVMe HAT. It is a cleaner installation, it frees the USB ports, it is a direct PCIe connection, it is well suited to 24/7 operation, and the Pi can boot Raspberry Pi OS directly from it (§6.2).

Use a USB enclosure instead only if you expect to disconnect the SSD often and move it between computers.


The same SSD and the MacBook

Direct connection over USB4

The same 4 TB NVMe SSD works with a MacBook Pro — but the GeekPi HAT cannot be used as a Mac adapter. For a direct connection you need an enclosure:

Figure 3: Direct-to-Mac path. A 40 Gbps USB4 / Thunderbolt enclosure turns the bare SSD into a very fast external drive.
ConnectionTypical real-world speed
USB 5 Gbps~400–500 MB/s
USB 10 Gbps~800–1,050 MB/s
USB4 / Thunderbolt~2,500–3,500 MB/s
Table 3: Typical real-world direct-to-Mac throughput by interface. The MacBook Pro M2 Pro supports the bottom row.

Why the SSD should stay on the Pi

For a home cloud, do not physically move the SSD back and forth. Keep it permanently attached to the Pi and reach it over the network:

MacBook Pro
     │
     │ Ethernet / Wi-Fi / Tailscale
     ▼
Raspberry Pi 5
     │
     ▼
4 TB NVMe

Any of these protocols will do it: SMB, SFTP, SSH, rsync, SCP, WebDAV, Jellyfin, Nextcloud, Syncthing.


Network performance — the real bottleneck

The Pi 5's Ethernet is Gigabit. That caps everything:

$$ 1 \text{Gbit/s} \approx 125 \text{MB/s}, \qquad \text{practical} \approx 100\text{–}115 \text{MB/s} $$

So when the Mac reads the SSD over the LAN:

NVMe SSD capability        ~400–500 MB/s on Pi
Gigabit Ethernet limit     ~100–115 MB/s

The network, not the SSD, is the bottleneck — by a factor of about four. Buying a faster SSD does not change this number; only a faster network does (§17).

Figure 4: Every link in the chain, on a logarithmic scale. Note how far apart the ends are: a Thunderbolt-attached SSD is roughly 25× the gigabit LAN that would otherwise serve it.

Even so, 100 MB/s is more than enough for large document storage, photo libraries, backups, 1080p streaming, most 4K streaming, programming files, Git repositories, and remote development.


Remote access and file sharing

Tailscale from outside the home

The safest simple solution is Tailscale: an encrypted mesh that makes the Pi reachable as if it were on the local network, without exposing port 22 to the public internet.

ssh user@raspberrypi          # by hostname
ssh user@100.x.x.x            # by Tailscale IP

scp file.zip user@raspberrypi:/storage/
rsync -av ~/Documents/ user@raspberrypi:/storage/Documents/

SMB to macOS Finder

On the home network, Samba/SMB is the convenient option. Share /storage, then in Finder:

Finder → Go → Connect to Server
smb://raspberrypi.local/storage

The Pi storage then appears in Finder like any other network drive.


Storage layout and booting

Suggested layout

/storage
├── Documents
├── Photos
├── Videos
├── Music
├── Projects
├── Backups
├── Git
├── Docker
└── Shared

Raspberry Pi OS itself can live on the same NVMe drive:

4 TB NVMe
│
├── Raspberry Pi OS
│
├── /home
│
└── /storage
    ├── Documents
    ├── Photos
    ├── Videos
    ├── Projects
    └── Backups

Booting from NVMe

The Pi 5 can boot from NVMe once configured, so the microSD card is not needed for daily use. Either put the OS and the data on one filesystem, or split it:

4 TB NVMe
├── OS partition
└── Data partition

Video streaming

Jellyfin is the recommended media server: it reads files straight off the NVMe and serves them to the LAN or, through Tailscale, to anywhere.

Figure 5: The streaming path. Direct play is the fast route — the Pi moves bytes and does no conversion at all.

Direct play

Direct play is the ideal case: the Pi reads the existing file and sends it to the client without converting it. This works very well for 1080p, 4K, 4K60 (given the bitrate and network capacity), H.264, and HEVC/H.265 where the client supports it.

Transcoding — the limit

Real-time high-end transcoding is far heavier, and the Pi 5 is not the right machine for:

A stronger mini-PC or desktop is the answer for those.

Upload speed for remote viewing

Watching from outside the home, the limit is usually the home internet upload speed, not the Pi:

Video bitrate:   30 Mbps
Required upload: comfortably above 30 Mbps

A high-quality 4K stream can need tens of Mbps. The SSD is far faster than any of this.


Development on the Pi

C and C++ tooling

The Pi 5 is a very capable Linux C/C++ machine. The usual tools are all there:

gcc   g++   clang   cmake   make   ninja   gdb   git
#include <iostream>

int main()
{
    std::cout << "Hello from Raspberry Pi 5\n";
    return 0;
}
g++ -O3 main.cpp -o app     # -O2 / -O3 enable compiler optimization
./app

The code compiles to native 64-bit ARM instructions — nothing is emulated.

What the CPU is good for

The Pi 5 uses a quad-core 64-bit ARM Cortex-A76-class CPU.

Excellent for

Linux server programs · networking applications · APIs · automation · C/C++ learning · moderate DSP · sensor processing · multithreaded services · embedded software · moderate OpenCV workloads · control applications · SDR control software

The MacBook stays much faster for

Huge C++ builds · large simulations · heavy AI workloads · professional 4K/8K video encoding · large numerical workloads

What the NVMe actually speeds up

The SSD does not make CPU arithmetic faster. It improves everything that touches the filesystem: compilation, file loading, linking, large datasets, Docker images, databases, logging, video access, project indexing, package installation, swap behaviour, and general responsiveness.

C++ computation          File / data access
      │                        │
      ▼                        ▼
   Pi 5 CPU                4 TB NVMe

Real-time processing

The Pi 5 can do fast real-time work — but "real-time" depends entirely on the workload and the latency requirement.

What it handles well

Sensor processing, robotics control, audio DSP, network packet processing, moderate SDR workloads, telemetry, automation, and low-latency C++ applications. Standard audio rates are comfortable for well-optimised C++:

48 kHz    96 kHz    192 kHz

Very high-bandwidth RF processing is where it stops. These need stronger hardware, or FPGA/GPU acceleration:

Linux is not hard real-time

Stock Raspberry Pi OS is not a hard real-time operating system. It gives no strict timing guarantee. For stronger guarantees: a PREEMPT_RT kernel, CPU affinity, CPU isolation, real-time scheduling policies, locked memory, no dynamic allocation during processing, preallocated buffers, thread priority control, interrupt affinity, and lock-free queues where appropriate.

In practice this means a real-time C++ path should avoid new, delete, malloc and free inside its critical processing loop — allocate once, up front, and reuse.


Power and running cost

Actual power draw

A Pi 5 server with NVMe and active cooling is very efficient:

StateTypical draw
Idle / light server use~4–6 W
Moderate load~6–10 W
Heavy load~8–12+ W
Table 4: Typical operating range. The 27 W supply is a ceiling, not a consumption figure — the system draws what it needs.

Annual electricity

At an average of 5 W running continuously:

$$ 5\ \text{W} \times 24\ \text{h} \times 365\ \text{days} = 43.8\ \text{kWh/year} \tag{1} $$
Equation 1: Annual energy for a 5 W always-on server.
Figure 6: Yearly running cost against electricity price, for a 5 W average draw. Across any realistic European tariff the whole machine costs about one to one and a half euros a month.
Electricity priceApprox. yearly costPer month
€0.30/kWh€13.14€1.10
€0.35/kWh€15.33€1.28
€0.40/kWh€17.52€1.46
Table 5: The same figures as a table, at the three prices most likely to apply.

Cooling

Active cooling is strongly recommended for a 24/7 server. The Raspberry Pi 5 Active Cooler gives lower CPU temperature, less thermal throttling, more stable sustained C++ performance, better Docker behaviour, and a longer comfortable duty cycle. The NVMe SSD also benefits from a small thermal pad or heatsink, especially during long writes.


Software stack

Raspberry Pi OS / Debian
│
├── OpenSSH
├── Samba
├── Tailscale
├── Docker
├── Jellyfin
├── Git
├── rsync
└── optional services

Optional private-cloud applications: Nextcloud, Syncthing, File Browser, Immich, Jellyfin, Gitea, PostgreSQL, Home Assistant.


Security model

Figure 7: The preferred access path: nothing is exposed to the public internet, and Tailscale is the only door.

Do not expose these directly to the public internet: SSH port 22, SMB port 445, database ports, or admin dashboards. Every one of them is scanned continuously.

Also: SSH keys instead of passwords, root SSH login disabled, security updates installed, unused services firewalled, strong local passwords, and important files backed up.


Backups

RAID is not backup

RAID is not backup. It protects against a drive dying, not against deletion, corruption, ransomware, or the whole machine being lost. Even with several drives, a separate backup still matters.

Primary 4 TB NVMe
       │
       ├── local backup SSD/HDD
       │
       └── encrypted off-site/cloud backup

Important files should exist in at least two independent places.

Backing up the MacBook

rsync -av --progress ~/Documents/ user@raspberrypi:/storage/Backups/MacBook/Documents/

Or mount the SMB share and copy through Finder. A future setup could dedicate a share to Time Machine.


Budget

These are real German retail prices, checked on 24 August 2026 against Geizhals, heise Preisvergleich and billiger.de — not the rough ranges this note originally carried. Availability is good on every line; the figures are the cheapest listed offer, before shipping. The HAT row prices a Pimoroni NVMe Base rather than the GeekPi N04 named in §2.1 — the German comparison sites carry it, it takes the same 2280 drives, and the note's own wording is "or equivalent". Any 2280-capable M-Key HAT lands in the same €15–25 band.

This build costs roughly €300 more than it would have two years ago, and the reason is memory. Both the board and the drive are priced by the memory market, and both are at a high. The Raspberry Pi 5 price ladder makes it plain: 2 GB €68.90 · 4 GB €137.45 · 8 GB €184.90 · 16 GB €304.89 — an extra 4 GB of RAM costs more than the entire rest of the system. NAND has moved the same way, which is why a 4 TB SSD is now the single biggest line by a wide margin. If the build can wait, it is worth waiting.

PartAug 2026 (DE)Cheapest listing
4 TB M.2 2280 NVMe SSD€394–465Dell OEM €393.88 · Lexar NM790 €449 · WD_BLACK SN850X €464.76
Raspberry Pi 5, 8 GB€184.9035 offers; cheapest BerryBase
Case (Argon NEO 5)€17.80–19.90Aluminium, with fan
PCIe M.2 HAT€16.50Pimoroni NVMe Base (2230–2280)
Official 27 W USB-C PSU€12.40–15.00Rasppishop / Semaf
Active Cooler€4.90–6.00Official Raspberry Pi part
Cat 6 Ethernet cable≈ €5Any length
Expected total€635–712typical build ≈ €695
Table 6: Build cost at August 2026 German retail. The SSD alone is roughly two thirds of the total, and the SSD plus the board are about 91% of it — every other part together is just over €60.
Figure 8: Where the money goes, at typical August 2026 prices. The drive is the build — the four small parts together cost less than the difference between two SSD models.

Cutting the cost

Three levers, in order of how much they save and how little they cost you:

A 4 GB + 2 TB build lands at €456 — about a third off — and gives up nothing that matters for a home cloud.

Do not pay a premium for an ultra-fast PCIe 4.0 gaming SSD. The Pi cannot use its multi-gigabyte-per-second capability — the PCIe link and then the network cap it long before the drive does (§4). The prices above make the point: the WD_BLACK SN850X, a gaming drive, costs €71 more than the Dell OEM drive and would perform identically here. Spend the difference on capacity or a backup drive.

Running cost is unchanged, and it is still trivial. The build price moved; the electricity did not. At 5 W average the machine costs about €13–18 a year (§10.2) — so even at €695 the hardware is ~40× the annual running cost. This is a machine whose cost is almost entirely up front.

The final configuration

Raspberry Pi 5 — 8 GB
        │
        ├── Official 27 W USB-C PSU
        │
        ├── Active Cooler
        │
        ├── Gigabit Ethernet
        │
        └── GeekPi N04 2280 NVMe HAT
                 │
                 └── 4 TB M.2 2280 NVMe SSD
Raspberry Pi OS 64-bit
OpenSSH · Samba · Tailscale · Docker · Jellyfin · Git · rsync

What it is good at, and what it is not

excellent

24/7 private cloud · low electricity consumption · SSH server · SFTP server · Mac ↔ Pi file sharing · backups · direct-play video streaming · Linux learning · C/C++ development · Docker · small databases · web services · home automation · moderate real-time processing · moderate DSP

not suitable

Heavy 4K video transcoding · professional CPU-heavy rendering · large AI models · full high-bandwidth 5G PHY · extreme SDR bandwidth · strict microsecond-level hard real-time processing without system tuning


Upgrade paths

Faster networking

Add a supported 2.5 GbE USB adapter. Practical throughput lands around:

~250–280 MB/s

depending on the adapter, the switch, and system configuration. This is the upgrade that actually moves the bottleneck identified in §4.

More storage

A USB SSD, a USB HDD, a multi-drive enclosure, or a second NAS.

Backup

A second external drive that is disconnected or kept in another place.

Stronger compute

If the workload grows to heavy 5G processing, AI acceleration, multiple 4K transcodes, or large simulations, the answer is a different machine — a mini-PC, a desktop workstation, an NVIDIA Jetson, or an FPGA/SDR platform — while keeping the Pi as the low-power storage and control server.


The whole architecture

Figure 9: The complete system: one always-on board, one 4 TB drive, three service paths, reachable from inside the house over the LAN and from anywhere over Tailscale.

The bottom line. For a low-power personal home cloud this is a strong setup: Pi 5 8 GB + active cooling + official 27 W PSU + GeekPi N04 2280 NVMe HAT + 4 TB NVMe SSD + Gigabit Ethernet + Tailscale. It gives roughly 4 TB of local high-speed storage, secure remote SSH, Mac network storage, remote file access, video streaming, Linux/C++ development, Docker, moderate real-time and DSP capability, and very low 24/7 electricity consumption.

For direct high-speed access to the same NVMe from the MacBook, a separate USB4 / Thunderbolt 40 Gbps enclosure can be used — but for normal home-cloud use, keep the SSD permanently installed in the Pi and reach it over the network (§3.2).

Projects Tracker · Pi 5 home cloud · track 5 of 5 ← 5G Systems