All work

A Raspberry Pi that runs the house

One Raspberry Pi 3B+ driving a 3D printer, filtering DNS, terminating a VPN and reporting into a dashboard I wrote so that all of it lives behind a single page.

When
Ongoing
Hardware
Raspberry Pi 3B+, Anycubic Kobra Neo
Stack
Klipper, Mainsail, Moonraker, AdGuard Home
Extras
PiVPN, OpenVPN, PiHub dashboard

The problem

Every one of these services is easy on its own and annoying together. Each has its own web interface, its own port, its own idea of how it should be restarted, and its own way of failing quietly. Running them on one small board with limited memory sharpens the question of what is actually worth running.

Printer control

The Anycubic Kobra Neo runs on Klipper, with Moonraker as the API layer and Mainsail as the interface. Moving the motion planning off the printer board and onto the Pi is the point of Klipper, and it means print configuration lives in a text file I can version rather than in a menu on a small screen.

DNS and VPN

AdGuard Home handles DNS for the whole house, which filters advertising and tracking for every device without installing anything on any of them. PiVPN and OpenVPN give me a way back into the network from outside, which matters mostly because the printer is here and I am not always.

Alerts

I wrote a small alerting application so the Pi tells me when something needs attention instead of waiting for me to notice. A print that failed, a service that did not come back, a disk filling up. Anything unattended has to be able to raise its hand.

PiHub

PiHub is my own dashboard, and it exists because four interfaces on four ports is not a system, it is four things in the same room. It pulls the state of everything into one page so that checking on the lab is one look rather than four tabs.

What I took from it

  • Constrained hardware is an excellent editor. It removes anything you cannot justify.
  • Anything that runs unattended needs to be able to tell you it is unhappy, or you will find out at the worst possible moment.
  • The integration layer is usually the part nobody builds, and usually the part that makes the rest usable.