I used to be one of those people running a rpi home server. I have a long history with running rpi, and I learned some things along the way:
- The disasterous effects of undervoltage on attached harddrives (goodbye data integrity, hello fsck on boot)
- The difficulty of running an OS from an SDcard (system upgrades take as long to write to disk as they do to download the packages)
- The oddities of not having a proper system clock when starting up (tls certs are “not yet valid” because we’re now 5 years into the past)
- The permanent contest between GPU and CPU memory allocation when you want to run something GPU intensive
After talking with a friend about my next rpi-related purchase, they commented that I should just get a laptop. I obviously said that this is not the same, and they said “yeah, it’s better”. Their point was that for approximately the same amount of money I invest in my rpi setup, I can get a refurbished T470 off the internet and run whatever I want on it. I agreed to try.
It’s been almost 2 years since that conversation, and I admit I was wrong, and a decent refurbished laptop is a great platform for a home server.
Here are some reasons why I now think laptops are superior to rpis:
- Trivially-stacking form factor
- Standard power requirements - they might not run on phone chargers, but they’re at very little risk of underdelivering current to their internal components / peripherals
- Real clock and battery to surive outages and restarts
- x86 cpu means that you’re not running into some edge cases where packages are not compiled properly / not available for ARM
- Multiple peripheral ports
- (relatively) beefy Bluetooth and Wifi stacks
- Embedded KVM if needed, hidden neatly away if not
- Proper internal hdd / ssd
- Active ventilation. At the very least, you’ll hear when it’s overheating
There are some drawbacks, obviously:
- Bigger, although for a single server this is not a biggie, there’s room for it
- Requires a PSU brick, although it usually comes with one
- Much less cool and DIY-ish, although at some point you’re having enough of custom-writing udev rules and just want things to work
- No native support for HDMI-CEC (controlling the laptop via the TV’s remote)
Nowdays, whenever I’m asked to “stick a rpi behind a tv” to create a “smart tv” anywhere, be it at friends’ homes or companies’ expos, I’m asking for an old (but still decent) laptop and using that instead of a tiny ARM munchkin.