Skip to content

Home Lab, Open-Source Tools

A Raspberry Pi network monitor: parts list and first boot

A Raspberry Pi network monitor needs five things: a Pi 5 (4 GB for a light stack, 8 GB if a database-backed tool like LibreNMS or Zabbix will live on it), active cooling, storage that tolerates writes all day (an NVMe SSD on a PCIe board, or at least a high-endurance microSD card), the official 27 W USB-C supply, and a case with airflow. Then a first boot that updates the bootloader and moves the system onto the NVMe drive. This piece is the hardware and that first boot. What to run on it, and how to point it at your router and switches, is in the weekend Raspberry Pi monitoring build.

What the box has to do

Three questions settle the parts.

What will it run? Uptime Kuma plus Prometheus, node_exporter and Grafana fit in 4 GB with room to spare. LibreNMS or Zabbix brings a web app and a SQL database, and 8 GB stops you thinking about memory.

How much will it write? Every poll ends up on disk: time-series blocks, database pages, logs. That is small, scattered writes every minute, all year, the pattern that wears out ordinary SD cards.

Where will it live? A shelf in a closet next to a router gets warm, and a Pi 5 under steady load needs a fan to stay out of thermal throttling.

The spec table

Need What to look for Why
Board Pi 5, 4 GB for a light stack, 8 GB for a database-backed NMS The web app, the database and the poller share the RAM
Cooling The official Active Cooler, or a case cooler on the fan header Sustained polling load throttles a bare Pi 5
Storage NVMe SSD on a PCIe board; otherwise a high-endurance microSD Constant small writes; an SSD has the endurance rating to match
PCIe board M.2 key M, takes 2280 drives, fits around your cooler The Pi 5's PCIe lane is its fastest path to storage
Power The official 27 W supply (5.1 V, 5 A) A 3 A supply caps the USB ports at 600 mA and leaves less margin for the SSD
Case Room for the NVMe board, airflow, a reachable card slot A closed box on a warm shelf cooks a Pi
Clock Optional rechargeable RTC battery on the J5 connector Correct time at boot, before NTP answers

Affiliate links: we may earn a commission. We also earn from qualifying purchases on eBay.

rack list

  • EcoFlowPortable power stations that keep a small rack or a closet running through longer outages than a desktop UPS covers.Try EcoFlow

Parts list

There are three sensible ways to build it. The kit gets you running in one box: board, case, cooler, supply and a card. Check whether its case has room for an NVMe board before you plan to add one later. The cased NVMe route is the bare 8 GB board in the Pironman 5, which carries its own tower cooler and M.2 slot, with the Samsung drive in it and the official supply. The open-shelf route is the bare board with the official Active Cooler, the Geekworm X1001 on top and the same drive.

How these were chosen: from the makers' specifications and from published reviews, not from hands-on testing of our own.

A few notes on the parts. The 990 PRO is a PCIe 4.0 drive and the Pi gives it one Gen 2 lane, so most of its speed goes unused. It is the pick for endurance: Samsung rates the 1 TB model for 600 TB written over a five-year warranty. If your stack writes 20 GB a day, that is 600,000 / 20 = 30,000 days, about 82 years. A smaller, slower NVMe drive is fine too; the rating is what to read.

Geekworm says the X1001 draws its power through the PCIe ribbon, good for about 5 W continuous, and adds a separate 5 V header for hungrier drives. Samsung's datasheet gives the 990 PRO 1 TB an average active draw of up to 5.4 W, measured on a desktop at full PCIe 4.0 speed; on a single Gen 2 lane it works far less hard. If the drive drops off the bus under heavy writes, that extra header is the fix.

If you stay on microSD, use a card built for constant writes, such as a high-endurance card. Makers rate these in hours of continuous video recording rather than terabytes written, which tells you the job they are built for. The card that comes in a kit is there to get you booted.

Choosing the operating system

Raspberry Pi OS Lite (64-bit) is the default for good reasons: it is Debian underneath, it carries the Pi's own firmware tools (rpi-eeprom-update, vcgencmd, raspi-config), and the Pi documentation assumes it. The 64-bit image matters because most container images you will want are built for arm64. Ubuntu Server also publishes images for the Pi 5, which makes sense if every other machine you run is Ubuntu. Whichever you pick, skip the desktop: a monitor has no use for one.

First boot, step by step

You need a microSD card for the first boot even if the system ends up on NVMe, because the bootloader update and the boot order are set from a running system. A USB adapter for M.2 drives makes the rest easy.

  1. On your desktop, open Raspberry Pi Imager (from raspberrypi.com), choose Raspberry Pi 5 and Raspberry Pi OS Lite (64-bit), and write it to the card. In the customisation settings, set a hostname, a user and your SSH public key, and leave Wi-Fi off: the monitor is wired.
  2. Put the NVMe drive in the USB adapter and write the same image to it, with the same settings. Then open the small FAT partition that appears on your desktop and add dtparam=pciex1 as a new last line of config.txt. That line turns on the PCIe connector for boards that are not HAT+ devices.
  3. Assemble: cooler first, its fan lead in the four-pin fan header, then the NVMe board and drive (or the Pironman's board, following its manual). Card in, Ethernet in, power last.
  4. Boot from the card, find the Pi's address in your router's DHCP leases, give it a reservation, and log in over SSH. Update the system and the bootloader:
sudo apt update && sudo apt full-upgrade -y
sudo rpi-eeprom-update -a
sudo reboot
  1. Add the same dtparam=pciex1 line to /boot/firmware/config.txt on the card, reboot, and check that the drive is visible:
ls -l /dev/nvme*
lsblk

You should see nvme0n1 with two partitions. If you see nothing, reseat the ribbon cable, contacts facing the right way, before anything else.

  1. Set the boot order so the Pi tries NVMe first:
sudo rpi-eeprom-config --edit
BOOT_ORDER=0xf416
PCIE_PROBE=1

BOOT_ORDER is read right to left: 6 is NVMe, 1 the SD card, 4 USB, and f means start the list again. PCIE_PROBE=1 is needed to boot from a board that is not a HAT+ device; leave it out only if your board's documentation says it is one. Save, then sudo reboot with the card still in, so the bootloader applies the change.

  1. The Pi should now come up from the drive. SSH will warn that the host key changed: the drive is a separate install with its own keys, so clear the old entry with ssh-keygen -R and the hostname, then log in and check:
findmnt /
sudo apt update && sudo apt full-upgrade -y

findmnt should show /dev/nvme0n1p2 as the source of /. Shut down, take the card out and keep it in a drawer: with this boot order, putting it back is how you recover if the drive ever fails.

If you have no M.2 adapter, the usual alternative is to boot from the card and clone the running system onto the drive with a copy tool. It works, but the adapter earns its place anyway: it is also how you read the drive on another machine on the day the Pi will not boot.

Two optional settings while you are in config.txt. PCIe Gen 3 (dtparam=pciex1_gen=3) roughly doubles the lane's speed, but the Pi 5 is not certified for it and the Pi documentation warns it may be unstable; a monitoring box gains nothing from it, so I leave it at Gen 2. And if you fitted the rechargeable RTC battery, charging is off by default; dtparam=rtc_bbat_vchg=3000000 turns it on.

What to install, and watching the Pi itself

The software side, from Uptime Kuma to LibreNMS and SNMP on the router, is the weekend build linked at the top, and the open-source tools comparison helps if you are still choosing. If your devices sit behind a firewall, the SNMP port rules for 161 and 162 are worth setting up before the first poll.

Then watch the hardware you just built. Three checks earn a place on the Pi's own dashboard:

vcgencmd get_throttled
vcgencmd pmic_read_adc EXT5V_V
sudo smartctl -a /dev/nvme0

The first should say throttled=0x0. The second reads the 5 V input at the board; a value sagging well below 5 V under load points at the supply or its cable. The third (from the smartmontools package) gives the drive's temperature, Percentage Used, Available Spare and Data Units Written, where each unit is 512,000 bytes. Read Data Units Written a week apart and you have your real daily write rate to hold against the drive's rating.

On a card instead of NVMe, the kernel's counters do the same job; field 7 is sectors written since boot, in 512-byte units:

awk '{ printf "%.1f GB written since boot\n", $7 * 512 / 1e9 }' /sys/block/mmcblk0/stat

Put the Pi on the same UPS as the router and switch, and let it be the NUT primary; sizing that UPS covers the arithmetic.

When to spend more

Stay on the Pi until one of three things happens: you need container images that only exist for x86, you want virtual machines, or the database outgrows the RAM. The Pi 5 tops out at 16 GB, and Proxmox does not support it officially. At that point a small x86 box with an NVMe slot is the next step, and the Pi becomes the second opinion that watches it.

The short version: 8 GB board, a real cooler, NVMe with a published endurance rating, the 27 W supply, boot order 0xf416, and a spare card in the drawer.

used gear

Used gear on eBay: used mini PCs · used Dell micro PCs

next: PoE budget calculator for the numbers, the Rack list for the gear