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).
It’s a hobby, and most of the reason why is because it’s fun to get it all set up and working exactly the way you want.
I think of it like this:
Why would anyone spend all the time and money to build a hot rod when they could just drive a sensible Toyota Corolla?
I’m more of the school of thought that sez “Get a sensible Toyota Corolla, maintain it until the heat death of the universe”. :)
My 1988 Corolla lasted until 2022.
For me, a more accurate analogy would be, why do I spend all of my time and money fixing up a 40 year old Jeep when I could take an Uber?
When you have nextcloud, immich, vaultwarden and navidrome, this is real data that you’re talking about on services that I use several times a day. I had an overnight blackout that took me a few hours to recover from. No data lost and have a 3-2-1 backup system but that takes time and energy to fully recover from.
After that, bought the cheapest UPS I could find, installed NUTS and not had issues since. Most blackouts seem to happen overnight and all have been less than 5 minutes.
Buying a UPS that would last for 12 hours minimum (happens just after I go to sleep and I realise in the morning or happens at work and not back home until then) is much more expensive and difficult than installing CUPS to have it switch off. Then I can wake up, turn the machine back on, wait a few minutes and everything will be back up. I can run tests but if I need to go to work I can leave that to later and what works I can use.
I think that as you move towards replacing cloud services with self-hosted ones you take on the responsibility of providing the same reliability as the cloud services.
Just installing a UPS will let you ride through 99% of all power failures because most of them are only a few seconds long. My UPS says that my entire HomeLab, including Internet modems runs at about 100W, and it will last for the better part of an hour.
The question then becomes about longer outages, that run the UPS dry. There are two issues.
The first issue is system shutdowns, if they just crash when the battery ends, then you run the risk of data corruption and disk buffers that haven’t flushed. But in truth, this is probably a minor possibility. Your servers were up, but the rest of your house was already down. No feed from the cameras, no events in HomeAssistant, no WiFi, no nothing. This means virtually no activity on your servers for an extended period of time.
This doesn’t eliminate the possibility of corruption, but it makes it less likely.
The second issue is getting the servers back up and running when the power returns. This can be a bit more complicated, what if the power is up and down a bit before the UPS has some charge built up?
Maybe your best just leaving them off for a bit until things have stabilized and the UPS has a charge.
NUTs deals with both of these issues in an automated fashion. It can shut your services down in a controlled manner so that they don’t crash when the battery dies. It can bring your servers back on line when the power is restored and stable.
For me, my main concern is for when the power failure goes past he battery life when I’m on vacation. I won’t be able to go and push power buttons on the server. NUTs can get a bit tricky if you are looking for 100% hands-free operation. I can deal with anything when I’m home, but away in problematic.
I’ve decided to leave NUTs out of the mix for now. All of my servers are configured to turn on when power is restored, and all of the services are configured to start up automatically when the server boots. I’m content to let the UPS drain dry, crash the mostly idle servers when that happens, and then reboot when power is restored.
There’s a risk, but I think I understand it.
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.
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.
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 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)
I can dig it…but surely the simple option is to have the PC wake up on power restoration, right?
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.
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.
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.
It’s fun. I installed Jellyfin because I’m not always at home and I don’t always have good connections available, so downloading a 4k movie from my NAS is not an option.
Also it infuriates me when THINGS don’t do what I want them to. They’re things and they should adapt to me, not the other way around.
- homelab and self hosting arent always “exactly” the sane thing. lab implies testing and experimentation. its purpose is to learn. but i think you are really asking about self hosing so…
first, ypu seemed to focus on media streaming in your post. to adress tgat one point, i have an entire family watching on phones and tvs (mostly tvs). i have jellyseer setup so they can even request.
BUT… that’s only one part. i have a minipc running opnsense. i have another on running proxmox. on that proxmox,
- jellyfin, with radarr, sonarr, jellyseer, and gluetun
- home assisstant os
- unifi os to manage my network.
- soon i sm adding unifi cameras with protect so i can get off blink.
- an app called glanceapp which is a feed dashboard (not the monitor app glance) https://github.com/glanceapp/glance
- next cloud to replace m365 or google
- netbird to vpn in
- pteradactyl to host game servers
i also have a ugreen box running truenas
today on this community, i learned about searxng , which i will setup very soon
always “exactly” the sane thing
Freudian slip? :)
ypu seemed to focus on media streaming in your post.
Only as an exemplar.
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? "
I think it’s like anything else people do. Some are quite satisfied at a moderately basic level. Others tho, implement K8 clusters, etc, a complexity level I have no interest in. Take golf for example. I used to play quite regularly. I had a raggedy old bag and some beginner level clubs I bought third hand. My buddy had every golf gadget you could possibly imagine. Thousands of dollars to whack a ball around a course and into a hole, on an amateur level. I’m thinking, ‘Dude, this isn’t the Masters Tournament at the Augusta National. We’re just whacking balls into holes and having a few beers on the weekend’ . But, every time we got together, he just had to show me his new gadget that cost him hundreds of dollars and added even more complexity to the game.
I’m the former, but most of that I’m not doing by hand. jellyfin transcodes when it wants, I’m not dealing with that. resources are monitored, a simple setup, so that if something happens I can look back why it happened. I also want alerts if something is predictably going to break down soon. with the latter school of thought, you wouldn’t know if a disk was throwing smart errors for half a year before completely breaking down. but I don’t have failover, I don’t have the hardware and don’t want the power bill for that. but I have reverse proxy because then every web thing is configured the same predictable way, plus I trust it more to handle the standards well. so most things I do, I do it because I think it to be valuable to me, not just for the sake of doing it.
homelabbing is the means to an end to me.
My homelab has been running for 20 years, during which I’ve gone through something like a dozen desktop and laptop PCs. Copying a terabyte of media to each of those computers seems like a terrible waste. My TVs, either through Raspberry Pi or their own software, can also play all of that media.
The homelab also runs a few 24/7 services that do stuff overnight (most notably sensor data logging), pihole, routing, media management. It’s lower power than the desktop/gaminng computer, and it’s not practical to have those 24/7 services on a laptop that leaves the house periodically.
So, homelab to minimize the amount of storage replication, minimize power consumption, and provide always-on processing.
Of course, having that platform, it’s also an opportunity to play. Implement services that totally wouldn’t be practical in and of themselves, but setup makes a fun diversion for an afternoon or a weekend. Remote access for the rare occasion when I’m traveling. Monitoring the otherwise invisible, headless computers. (like NUT to keep track of 3 different UPSes)
As a follow up, I’m curious to hear from lurkers here or those who are thinking about self-hosting (but haven’t started yet); which approach appeals (using the “media at home” example in OP) and why? We’re all pretty much damned souls here but it might be interesting to hear from someone just starting out.
I couldn’t find a common compatible format for me and 15 friends :( I also got tired of getting 20 requests to download more movies and episodes every week.
Some people plan out their self hosting. I did not.
I started with a free tier VPS i had no idea what to do with. I think i eventually ran irssi on it but i didn’t know how to use irssi so it was just a trial project that didn’t go anywhere.
Then, my mom wanted to record jeopardy and VHS tapes were getting annoying, so we made her a kodi system that could record it off the air.
Ads were getting annoying, so we made a pihole.
It was annoying having files scattered on all the computers and Google drive, so we made a nextcloud.
Et cetera.
Eventually i ended up with a handful of raspberry pis all doing something, spread sheets and network diagrams trying to keep track, and all plugged into various UPSes, and trying to figure out how to use NUT so they could all safely shut down automatically when the UPS is going down.
So no, i did not plan from day one to be struggling with the complexity of NUT, or any of my complicated bullshit self-hosting bullshit. But kind of like the process of evolution through natural selection, the complexity built up through of series of decisions which call made sense at the time for solving some kind of problem.




