The hardware we have actually used is the Raspberry Pi (including the Pi 5), so this note starts there and then places it among the alternatives. Software ideas that run on it: Pi-hole DNS on a Raspberry Pi, Tailscale, VPNs and Always-On Pi Services, Remote Workstation Anywhere.
Which board for which job
| Class | Examples | Runs | Good for |
|---|---|---|---|
| Single-board computer (SBC) | Raspberry Pi 5, Pi 4, Pi Zero 2 W | Full Linux | Servers, gateways, DNS, media, prototypes |
| Compute module | Raspberry Pi Compute Module 5 | Full Linux on a module you mount on your own carrier board | Turning a prototype into an embedded product |
| Microcontroller board | Raspberry Pi Pico (RP2040) and Pico 2 (RP2350), Arduino, ESP32 / ESP32-S3 | One program, no OS, real-time | Sensors, actuators, battery devices, deterministic timing |
| Industrial / mini PC | Fanless x86 boxes, Intel NUC class | Full Linux or Windows | Heavier workloads, reliability, expansion |
| AI edge boards | NVIDIA Jetson, Pi AI accessories | Linux + accelerator | On-device vision and inference |
Rule of thumb: microcontroller when you need tiny power use and exact timing, SBC when you need an operating system, networking and containers.
Raspberry Pi 5 at a Glance
| Feature | Detail |
|---|---|
| CPU | Broadcom BCM2712, quad-core Arm Cortex-A76 at about 2.4 GHz (roughly 2 to 3 times the Pi 4) |
| RAM | LPDDR4X; several sizes (commonly 4, 8 and 16 GB); check the current lineup |
| I/O chip | RP1, a separate chip handling USB, Ethernet, GPIO and camera / display ports |
| Storage | microSD, or NVMe SSD through the PCIe connector with a HAT |
| PCIe | One PCIe 2.0 lane (Gen 3 can be enabled), exposed on a small ribbon connector |
| Ports | 2 x USB 3, 2 x USB 2, Gigabit Ethernet, 2 x micro-HDMI (up to 4K60), 2 x camera / display connectors |
| Extras | Real-time clock with battery connector, power button, fan header, 40-pin GPIO |
| Power | USB-C, 5 V / 5 A (27 W) supply recommended; weaker supplies limit USB power |
| Cooling | Gets hot under load; use the official Active Cooler or a good case |
Compared with the Pi 4 (Cortex-A72, no PCIe, no RTC) the Pi 5 can boot and run from NVMe and feels far faster for containers and databases. Older boards remain fine for DNS and VPN gateways.
Setting One Up
- Flash Raspberry Pi OS (or Ubuntu Server) with Raspberry Pi Imager; in its settings preset the hostname, user, Wi-Fi and SSH so the Pi boots headless
- Boot, find it on the network, and connect:
$ ssh sharif@raspberrypi.local
$ sudo apt update && sudo apt full-upgrade -y
$ sudo raspi-config # boot order, locale, interfaces (I2C, SPI, SSH)
- Give it a fixed address: a DHCP reservation on the router is the cleanest approach
- Harden it: key-only SSH, firewall, automatic updates (Server Hardening with SSH, UFW and Fail2ban)
- Move off the SD card if it will run 24/7 (see below)
Storage choices
| Option | Notes |
|---|---|
| microSD | Cheap and simple; wears out with constant writes; use a good brand (high endurance) |
| USB SSD | Much faster and more durable; works on every model with USB 3 |
| NVMe over PCIe (Pi 5) | Fastest; needs a HAT and a suitable supply |
| Read-only root / overlay filesystem | Protects the SD card on appliances that must survive power cuts |
An always-on Pi should also survive power cuts: a decent supply, a small UPS HAT or battery for critical roles, and a read-only or well-backed-up system (Remote Workstation Anywhere has an operating section on this).
GPIO and Add-On Hardware
The 40-pin header exposes GPIO, I2C, SPI, UART, 1-Wire and PWM.
- Logic is 3.3 V, not 5 V tolerant: connecting 5 V logic directly can damage the board. Use level shifters
- Each pin supplies only a few milliamps; drive motors, relays and strips through a transistor, driver or relay board with their own supply
- On the Pi 5 the old
RPi.GPIOlibrary does not work; use gpiozero (withlgpio) or therpi-lgpiocompatibility shim
from gpiozero import LED, Button
from signal import pause
led = LED(17)
button = Button(27)
button.when_pressed = led.toggle
pause()
HATs are boards that sit on the header: PoE power, UPS, NVMe, CAN bus, LoRa, AI accelerators, displays. Check each HAT for Pi 5 support.
Reading a CAN bus (vehicle or industrial)
A Pi can speak CAN with an SPI CAN HAT (for example MCP2515-based) or a USB-CAN adapter, then use the Linux SocketCAN tools. Details of buses and adapters: Sensors, Buses and Edge Hardware Reference.
$ sudo apt install can-utils
$ sudo ip link set can0 up type can bitrate 250000
$ candump can0 # watch frames
Common Pi Roles
| Role | Why a Pi suits it |
|---|---|
| Network DNS filter | Light, always on: Pi-hole DNS on a Raspberry Pi |
| VPN / Tailscale gateway | Reach a home network from anywhere: Tailscale, VPNs and Always-On Pi Services |
| Home lab server | Docker containers, small web apps (1. Docker) |
| Edge device | Read sensors and forward them (MQTT, HTTP) |
| Network tool | Packet capture, monitoring (Network Device Monitoring with NetPulse) |
| Learning platform | Cheap, disposable Linux for experiments (01. Foundation) |
An idea on the list: a passive network tap built from a Pi with two Ethernet interfaces bridged for inspection (only on networks you own or may test).
Buying Checklist
- [ ] Board and RAM size for the role (DNS needs very little; containers and databases want 4 GB or more)
- [ ] Power supply rated for the board (and its USB devices)
- [ ] Case with cooling for 24/7 use
- [ ] Storage: high-endurance microSD or an SSD
- [ ] Ethernet over Wi-Fi for any server role
- [ ] Spare SD card or an image backup of the working system