S4E410 — What I Self-Host

October 16, 2026 · 11 min

Show notes

A man trades Netflix for twenty-eight self-hosted services on a tiny box, then gets dragged into a brutal argument over ports, compose files, backups, and the true cost of being your own IT department.

Sources

Read the transcript

Transcript

GARY: —so I already fixed it, I just don't know what I fixed. Hello, and welcome to HNR. I'm Gary.

MAEVE: Maeve.

OBI: Obi.

GRUNER: Gruner.

GARY: Okay. So. A man quit Netflix. That's the article. He got so mad at "recommended for you" he built his own streaming service, Jellyfin, on a little Intel N100 box, sixteen gigs of RAM.

MAEVE: He didn't get mad at recommendations. He got mad at paying western prices after leaving India. The recommendations were the excuse.

OBI: The article says both. He wanted control of when things change. So he runs twenty-eight services on that box.

GARY: Twenty-eight services. Effortlessly.

OBI: Effortlessly. And he also runs Uptime Kuma and Gotify.

GARY: Those are... nice extras.

OBI: They are services whose entire job is telling him another service has died. You do not buy a smoke detector for a house that is not on fire, Gary.

GARY: Fine. Things fail. Occasionally. Seven point five gigs of memory, though. Thirty to forty percent CPU. That's a machine barely breathing hard.

MAEVE: Barely breathing hard. That's what my last founder said in the ICU.

OBI: He keeps everything off the public internet, VPN only. No ports open. It's the most boring thing in the article and it's why it works.

MAEVE: He also refuses to self-host email, which is the one adult decision in the piece. Delivery is too consequential. He knows he'd be the outage.

GRUNER: Twenty-eight roommates. Sixteen gigabytes. Very crowded apartment, very quiet.

GARY: That's... weirdly beautiful.

OBI: It's a landlord with a spreadsheet, Gary.

GRUNER: Is same thing.

MAEVE: No.

GARY: It's the same thing.

MAEVE: It is not the same thing. One of them evicts you by email.

GARY: Lucasoato: "there are poor souls like me out there that actually love the opposite."

MAEVE: Loving the opposite, out loud, in this economy. Bravest comment on the site.

GARY: And mtlynch swings back: "a single binary strictly dominates any Docker Compose solution."

OBI: Correct. And in forty replies he'll be told he's wrong in five mutually exclusive ways.

GRUNER: Compose is dating diagram. Five containers, one relationship, zero marriage.

MAEVE: That's a polycule with a YAML problem.

GARY: No, no, the replies are good. unshavedyak says "some isolation is nice."

OBI: Isolation from what, Gary?

GARY: From... other services!

OBI: You've never isolated anything in your life. Halfpipe shared a database with the marketing site.

GARY: That was a cost decision.

OBI: It was a bankruptcy decision with a config file.

MAEVE: One dependency is a product. Five is a retention strategy. They can't leave, they're load-bearing.

GRUNER: Wilted-iris says: "It's the unified interface for me."

GARY: See, that's the dream, though. One yml file, everything in one place — I could run that. I'd be so good at that —

OBI: You'd be so good at a file.

GARY: I would! Okay, watch. I'm a Compose guy now. "I don't want one binary, I want five containers, because when one shits the bed, the other four are already angry, so it's simpler —"

MAEVE: Simpler.

GARY: — the anger is pre-distributed, Maeve. That's the whole point of microservices.

OBI: The whole point of microservices is that Gary gets five funerals instead of one.

GRUNER: Five small fires better than one big.

MAEVE: That's literally what he said.

GARY: It is what I said, and it's correct.

OBI: turtlebits says upgrades are "just editing an image tag." One tag, Gary. One line. And you'd still fuck it up.

GARY: I would absolutely fuck it up.

GRUNER: First honest thing all night.

GARY: eddythompson80: "docker isolation is nice just as a management boundary."

OBI: Sane. Keep reading, Gary. Read the part you're about to live.

GARY: "So you go to change the port an application is listening on, the docs say PORT env var so you set it, but it doesn't work."

MAEVE: He's describing a hostage situation and calling it configuration.

GARY: No, this proves my point! One port, infinite ways to set it. At Halfpipe we called that governance. The regulator shut us down and even that was just a config change —

OBI: Your regulator was a person, Gary. This is worse. He sets PORT. Nothing.

GARY: Because he hadn't found the real variable yet! That's diligence —

OBI: He searches the repo. A pull request from two weeks ago renamed PORT to ENDPOINT.

GARY: Renaming is normal. Healthy. Rebranding —

OBI: He sets ENDPOINT. Still nothing. Because ENDPOINT doesn't load from env vars — it collides with another ENDPOINT_ prefix on a different value.

GARY: Okay, but any system would —

OBI: So he makes a config.toml. And the empty config.toml nulls every defaulted value in the entire application.

GARY: That's — okay, that's a rough Tuesday —

OBI: So he runs foo config-defaults to regenerate it, and edits the one line back in by hand.

GARY: Which is fine! That's just editing!

OBI: And then the tool wants an encryption secret for ephemeral sessions. Auto-generated before. Now it can't be empty or it won't start.

GARY: So he sets the secret, it works, everyone's happy —

OBI: He never says it works, Gary. Read his last line.

GARY: "Then you're just wondering why the hell did I want to change the port?"

MAEVE: He spent an evening becoming the port's bitch and forgot the port.

GRUNER: Man fight with own house. House win.

GARY: No, no, that's the beauty of containers, the blast radius is — the port was probably conflicting, two apps, same port —

OBI: Two apps wanted the same port, so he reconfigures the universe.

GARY: That's flexibility with extra steps —

OBI: It's a séance, Gary. Five rituals to speak to a port, and the port never answered.

MAEVE: And he'll do it again next release.

GRUNER: Suka. Yes. Next release.

GARY: You don't know that.

MAEVE: Gary. He renamed a variable to escape a variable. He's not a user, he's a repeat customer.

OBI: Halfpipe had this exact bug, by the way. Except the config file was a term sheet.

GARY: That term sheet was load-bearing.

OBI: It was load-bearing the way a noose is load-bearing.

GRUNER: Is same thing.

MAEVE: No.

GARY: mtoner23: "Self hosting has never been easier and I imagine the average person has never been further from trying it."

MAEVE: So the product peaked the exact moment nobody wanted it. I've funded four of those.

GARY: Gigachad says it's "mostly a hobby like home brewing beer or woodworking."

OBI: Home brewing. Except when your beer fails, nobody's medical records are inside it.

GRUNER: Man brew beer. Man also brew outage.

GARY: seriocomic: "Cost has shifted from subscriptions to maintenance time."

MAEVE: He put a smiley on unpaid labor. Most disturbing sentence in the thread.

GARY: It's not unpaid, it's — sweat equity —

MAEVE: In what, Gary? What's the exit?

GARY: lifeisloving calls it "a part time job."

OBI: A part-time job with no pay, no title, and a pager for the family photos.

GRUNER: usefulcat: "28 is a lot of pets."

GARY: Okay, but they're wrong about the average person! The average person can't do this, which is exactly why the average person isn't the market, which is why — wait.

MAEVE: Say it again. Slower. Enjoy it.

GARY: I just made their argument while disagreeing with it, didn't I.

OBI: You've been a commenter this whole scene. You even have the handle. It's mtoner23, and it's sad.

MAEVE: Fine. Let's count it. Twenty-eight services, one operator. Twenty minutes a week per service — nine hours. Unpaid. Every week.

GARY: That can't be right.

MAEVE: It's right and it's shit. Nine hours of household labor priced at zero, forever, compounding.

OBI: Zero is the number she gave the Bauxlite engineers, too.

MAEVE: Different line item.

GRUNER: Field note. "Human buys machine to escape subscriptions. Machine gives him job. Humans call this winning."

GARY: No. It's not twenty-eight pets, it's twenty-eight services —

MAEVE: You feed them. They die if you stop.

GARY: Oh, fuck.

GRUNER: Twenty-eight small creatures. Wait for one man. Come home.

OBI: And he named them all, Gary. In a YAML file.

GARY: That's — that's a manifest —

OBI: It's a litter registry with a build step.

GRUNER: Is same thing.

MAEVE: No.

GARY: Okay, next fight. The author has a whole section on stuff he won't host. The *arr stack — Sonarr, Radarr, Lidarr. His impression: "a resource-intensive mess that's fundamentally prone to frequent breakage."

MAEVE: His impression. Not a measurement. He priced a product off vibes.

GARY: Disciplined refusal, Maeve. Your favorite.

MAEVE: It is my favorite. I stand by it.

OBI: Read the reply, Gary.

GARY: eleventen: "Sonarr and Radarr idle at 157MB and 159MB of memory and approximately no CPU." And Jellyfin — "330MB."

MAEVE: The whole stack on less memory than one Chrome tab.

GRUNER: Chrome tab is also angry. Fair fight.

GARY: And birdsongs: "My stack went down once in the past 4 years and it was my fault." Four years! BorisMelnik's been running his over five. So they're immortal. These programs literally cannot die —

OBI: They're not immortal, Gary. They're two anecdotes. What they kill is the author's fragile-and-heavy assumption. That's all they have to kill.

GARY: Fine. They kill the assumption. But the stack still sounds like a pain to set up —

MAEVE: It is. eleventen even says the UX is clumsy. He just checked the numbers first, like an adult.

GARY: And then eleventen tells the author to — I'm paraphrasing — point his AI assistant at a compose file and ask it to explain the whole setup.

GRUNER: Robot explains robot to man. We are in loop, chyort.

GARY: We are not in a loop. eleventen's robot is a different robot.

OBI: It's the same robot, Gary.

GARY: It's — okay, it's possibly the same robot. Doesn't matter. The author looked at the *arr stack, felt it was heavy, and never checked. eleventen checked. One five seven megabytes. The author's whole refusal section just lost a fight to a number.

MAEVE: The thread wins this one.

GARY: Say it again?

MAEVE: No.

GRUNER: She said it. We all heard.

OBI: One hundred and fifty-seven megabytes, Gary. Smallest number in the thread, and it beat him like a red-headed stepchild.

MAEVE: That's the most words you've wasted all night.

OBI: It was worth it.

GARY: Last fight. mrkaye97: "I'd need to back up to The Cloud for me to feel less concerned about losing everything, at which point: what's the point?"

MAEVE: He discovered the product is insurance and the insurance is a subscription. I'd fund that.

GARY: And Gigachad answers: "I use restic to create encrypted snapshots on external cloud storage."

OBI: So the self-hosted server backs itself up to the cloud. He escaped the landlord and hired the landlord back for the roof.

GRUNER: Man builds private island. Mails everything to mainland nightly.

MAEVE: It's not a backup strategy, it's a tribute. He pays the cloud so the cloud leaves his photos alone.

GARY: It's a hybrid strategy —

OBI: It's a paradox, Gary. Same shape as your TermSheet-as-a-Service deck.

GARY: That was diversification —

OBI: It was a subscription to your own bullshit, Gary.

GRUNER: jbs789 asks: family in pickle if server dies when man away.

MAEVE: That's the real SLA. His wife. Unpaid. On call for the photo server.

GARY: But that's why he drew the line at email! He won't self‑host it because he can't risk not sending a message. That's the whole episode, right? He's not pure, he’s —

MAEVE: He's selective, Gary. Say the verdict.

GARY: Fine. The author wins. Modest box, no public ports, refuses email, picks his fights. The commenters win the *arr correction and the maintenance math. And the seven point five gigs proves the machine was never the problem.

OBI: The operator was the problem. Is the problem. Will remain the problem.

GARY: That's the show. I'm Gary, I self‑host nothing, my companies host me —

MAEVE: Maeve. Churn is real.

OBI: Obi. Check your backups. Tonight.

GRUNER: Gruner. Report filed.

GRUNER: Twenty‑eight pets. Seven point five gigabytes. Owner does not fit.

MAEVE: No, he doesn't.

GARY: Goodnight, losers.

OBI: Goodnight.