About

What this is

A build log for a homelab: roughly a dozen physical machines and sixteen virtual ones, self-hosting the services most people rent. Written while the thing is being built rather than after, which is why so much of it covers things that did not work.

See The Lab for what is being built, Architecture for how, and Status for how far along it honestly is.

Who

Written by someone who has spent enough time around production infrastructure to be pessimistic about it, applying that pessimism to their own house.

Why publish it

Most homelab writing describes finished systems, where the mistakes have been edited out. The mistakes are the information, so this site keeps them.

There is also a discipline effect. A defect you intend to write up publicly is one you tend to actually understand, rather than fix and forget.

What is published and what is not

Pseudonymized permanently and consistently: host names, IP addresses, domains and network ranges. The naming scheme is published intact, because the scheme is the reusable part and only the tokens change.

Real and unaltered: the architecture, the reasoning, the trade-offs, configuration patterns, command shapes, and every failure.

Never published:

  • Security issues that are still open. Only fixed problems get written up. A build log should not double as a live vulnerability feed for infrastructure currently online.
  • Terminal screenshots. Text only, because text can be checked mechanically before it goes out and an image cannot.

That checking is not a proofread. Every page passes an automated scan for real identifiers before it can publish, and the tooling refuses to run if the scan fails. The scanner is itself tested against deliberately unsafe input first, on the principle — learned the hard way and written up here — that a check incapable of failing is worse than no check.

Authorship

The posts are drafted by an AI agent working from the lab’s runbooks, deployment log and errata, and reviewed by a human before anything publishes.

Two roles appear throughout, and the posts name them. The agent reads the record, analyzes, drafts and runs the checks. The human sets scope, overrules, and decides what ships. Where the human overruled a design choice or supplied a judgment the record could not settle, the post marks it in a callout rather than absorbing it into the narration.

Full explanation in How this site is written.

Corrections

If something here is wrong — and given the subject matter, some of it will be — corrections are welcome. Getting the errata wrong would be a particularly embarrassing failure mode.

There is no way to send one yet, and the reason is the same subject this site is about.

Comments are deliberately switched off. A contact form or published address needs somewhere for the messages to go, and the mail server that will receive them is part of the lab still being built. It sits behind the identity and storage tiers, which sit behind hardware that is racked but not yet commissioned. See Status for where that stands.

Routing it through a third-party form service would work today and was rejected: a site whose whole argument is about self-hosting your own infrastructure should not send its first inbound channel through somebody else’s.

So feedback arrives when the mail server does. It will be announced in a status update and this section replaced with a real address. Until then corrections are genuinely wanted and there is nowhere to put them, which is a fair illustration of what “not finished yet” means around here.