Building one utility server to run the whole lab
What happens when storage, media, secure remote access, DNS, observability, and private cloud services are designed as one system instead of a pile of apps?
READ FIELD NOTE ↓Dispatches from the workbench
Practical notes on software, infrastructure, design, and building technology you can actually own.
What happens when storage, media, secure remote access, DNS, observability, and private cloud services are designed as one system instead of a pile of apps?
READ FIELD NOTE ↓A practical pattern for giving internal dashboards trusted HTTPS without making them usable from the public internet.
READ FIELD NOTE ↓The subscription tool is not always the safe choice. Sometimes a focused application is simpler, cheaper, and far easier to own.
READ FIELD NOTE ↓There is a point where a home lab stops being a collection of experiments and becomes infrastructure. The difference is not the number of services. It is whether those services share a deliberate operating model.
The Utility1 build started with a simple goal: one Linux server for files, downloads, media, and private cloud storage. It grew into something better—a platform with pooled storage, consistent permissions, trusted ingress, observable health, secure remote access, and documented recovery paths.
The important choice was not any individual application. It was the connective tissue. A file downloaded by one service must be manageable by another. A media library must remain readable after a move. An internal dashboard can have a public certificate without becoming a public control panel. Backups need destinations, exclusions, and an operator who knows how to restore them.
That is the useful lesson: self-hosting becomes durable when the system is designed around data movement, identity, failure, and recovery—not around an app-store checklist.
Browser warnings teach people to click through danger. That is a bad operating habit, even on a private network. The cleaner pattern is to use a real public hostname and certificate, then enforce who may actually reach the application behind it.
In this lab, the public DNS record and trusted certificate solve name validation. The reverse-proxy bridge separately decides whether the originating client belongs to the LAN or the OpenVPN network. Everyone else receives a hard refusal. Identity, encryption, routing, and reachability remain separate controls.
The final audit also matters. A shiny new restricted hostname does not help if an obsolete virtual service can still reach the same backend with an old Host header. Security work is often less about adding the new thing than deleting—or disabling—the forgotten path around it.
“Do not reinvent the wheel” is good advice until the wheel comes with twelve dashboards, four pricing tiers, a workflow your team hates, and a renewal meeting.
Custom software wins when the problem is specific, stable, and valuable enough to deserve a direct solution. The goal is not to reproduce every feature of a platform. It is to remove every feature that is not part of the job.
The best small applications are opinionated. They encode a workflow, reduce decisions, and expose exactly the data needed at the moment of action. Smaller surface area also means fewer permissions, fewer integration seams, and fewer places for ownership to leak away.
The question is not “Can we build it?” It is “Will a focused build remain cheaper to understand and operate than the compromise?” Sometimes, surprisingly often, the answer is yes.