I was reading a homelab discussion about NUTs (Network UPS Tools) that left me scratching my head and wondering "…why? Is complexity for complexities sake part of homelabs? Isn’t this a huge overkill for one machine? Just…use a UPS? "
Then I got to thinking more broadly about homelabbing and I started to wonder if there weren’t maybe (at least) two different schools of thought.
Using home media as example -
- Store the original.
- Detect the client.
- Transcode when required.
- Monitor the GPU.
- Add reverse proxy et al
- Track bandwidth.
- Add user accounts
- Add failover.
- Graph the result.
- Dashboard.
Vs
- Store a common compatible file for your devices.
- Play it directly.
Which school of thought are you and why?
PS: not throwing shade. I get it; for some people, complexity, learning infrastructure, practicing skills for work etc is part of the why. For me, complexity as recreation is suspiciously like work after work.
Perhaps there’s an odd Venn diagram between homelabbing, interest in ownership / useful capability and infrastructure that could make for a fun discussion. For you, is homelabbing a means to an end or is it an end in itself?
EDIT: Feel free to consider “home-lab” and “self hosted” as synonyms for the purpose of this discussion (although I am aware they are somewhat different in scope).


I’m not sure if there’s a fundamental misunderstanding but I felt a need to clarify that NUT works with a UPS. It isn’t either or. Whether you’ve got a homelab or a single desktop PC, you need some piece of software which can see when the UPS goes “Oh shit, power is gone” and instruct the machine(s) to shut down cleanly. NUT is that software. If it wasn’t NUT then it’d be whatever software the UPS manufacturer either provides or recommends for your combination of UPS and OS.
To the example of how one provides media to other devices inside (and possibly outside) the local network, although I get the broader idea, it really becomes a matter of scope, scale and taste. If my goal were to provide access to family members outside my home, friends, possibly friends of friends (either by intent or as a result of account sharing) then I’ll probably want monitoring. I’ll want a dead simple app any of them can install and point to a memorable URL. I’ll want alerts if someone in Romania or Shanghai attempts to log in with a friend’s account… You get the gist. If it’s not something that matters outside my house and I’m not going to repeatedly need to setup VPNs and map network drives for people, I could just spin up a Samba share and add it to the handful of devices in my home network and let those devices decide what application opens whatever media.
In actuality I’m extremely small scale (serving only my home) and still prefer Jellyfin for its simplicity and transcoding. It’s simple enough to slap on cheap Android TV boxes and hand someone the remote. No real reason to watch it like a hawk. Nor to track bandwidth; I’ve got an excess for the house. The GPU is capable enough; an Arc A380 that’ll never have enough simultaneous transcodes to be a bottleneck.
To answer the “why?,” I am one of those people that enjoys learning things that often feel like (or factually are) work. Maybe it’s self flagellation and I just refuse to admit it. I am a Factorio addict. But it’s also because tackling those things usually means the other users have an easier time. Mamma don’t wanna learn to drive the network to her laptop or search the app store for a file thingamajig what can connect to that tango or salsa or whatever just to scroll through a bunch of video file icons with the text so small she has to break out the Walgreens readers. She wants a shiny interface that’s swipe-able on a phone or tablet or navigable with a remote control. Pretty movie posters and bold legible titles. And I haven’t touched my config in months for that matter. Just a little bit of work has propped up a really enjoyable, ongoing show/movie watching experience. Definitely worth.
Could be. In context, the respondent was discussing the use of a raspberry pi - between their UPS and their single Lenovo minipc - as a stand-alone home device. Why? Don’t know.
To my understanding, the sequence is (or should be)
Mains fails -> UPS supplies battery power -> UPS reports its battery state over USB -> software on the PC shuts the OS down.
Using a Pi as a dedicated NUT server makes sense when several machines need the same UPS…for one PC, it seems like an extra machine in the chain (for the sake of an extra machine in the chain).
That’s sort of what I meant: things get overbuilt. Maybe for fun.
I was actually working on an edit to further clarify but that context helps. You’d think for a single machine, just run NUT (or whatever) directly on said machine. The two big reasons, even in that case, for using NUT on a RPi or other low power machine are actually what my edit was going to address: Power Consumption and Wake on LAN. After shutting down any power hog server(s) a decent UPS can probably keep a Pi Zero and travel router running for half a day. Ideally long enough to send a WoL packet to the server(s) once the UPS says power is restored. That can be pretty important, even in a “single” (ignoring the Pi) machine setup, if you’re out of town and nobody else has access to manually power it back up.
I will admit NUT was one of the more convoluted things I ever set up, and one has to write their own scripts and such for it, but I find it worth the peace of mind knowing things shut down cleanly. Having them wake back up automatically is icing on the cake, even if my own setup is local only. There’s never a need, if I’m not home, to walk anyone over the phone through identifying which nondescript black rectangle needs its power button pushed.
I bet another reason is security. You might not trust the NUT software. It might be proprietary, and even if its open source, it might not be scrutinized enough to be safe.
Using separate hardware, lets you take in the power loss signal from the NUT and then convert it to a channel you might trust more, like an http request over wireguard. Alternatively you could use a VM with usb passthrough on the main PC…though usb passthrough still has risks.
I can dig it…but surely the simple option is to have the PC wake up on power restoration, right?
Set the BIOS to “restore last state after AC loss” and let the UPS do its basic job. If power returns before the battery dies, the PC never shuts down. If the battery does die, the PC loses AC while running, then powers back up when AC returns.
Does that not achieve the same outcome?
I get the idea of Pi + NUT + WoL setup (especially if you want a clean shutdown). It just seems…a lot for a single machine.
(He said, conspicuously hiding the shopping cart of solar panels and marine batteries)
What you’re describing works but probably not for me as you acknowledge. The “PC loses AC while running” part is what I actively try to avoid as part of the greater goal of minimizing risk of damage/data loss. It might be superstitious at this point, modern hardware and filesystems being a bit more resilient, but I feel better not risking it. Since I’m shutting down before the UPS battery dies, and power could restore before it does, there’s a real chance power will never be totally lost as far as the motherboard sees it. In that case a boot on AC restoral won’t get triggered. Otherwise I agree. It’s a lot of work. Or rather a lot of research, RTFM, and understanding before you can even do the a little bit of work to implement it.
The idea is to have the server safely shutdown BEFORE it loses power, so that BIOS setting wouldn’t mean anything. The server does not loose power while it it running, so it will never “restore last state after AC loss”. The idea is that you can run a low power device (the raspberry pi) for which you don’t care if power is cut abruptly and that can talk to both the UPS and the wake-on-lan of the server directly over ethernet. It being local means those WOL are much more likely to work than trying to send them from outside your network when you’re remote. It’s a lot simpler to set this up once than it is to recover a server with a corrupted file system due to power loss or lose access to your server for weeks because a thunderstorm knocked out power for 30min at the beginning of a long trip. That pi can also take care of other always on services like a pi-hole, home assistant, etc.
After the PC shuts down, the UPS runtime will increase by a lot. So the power might come back before the UPS turns off, so as far as the PC can see, the power was never lost.
Edit: Also I assumed you meant restore on after AC loss, and not the last state.