Blog ·
How this site runs on a home Kubernetes cluster, safely
A static site, a signed image, GitOps promotion and an outbound-only tunnel: no open ports, no home IP, nothing to log in to.
This website is served from the same Kubernetes platform described in the Platform Lab case study. Hosting a public site at home usually means opening ports and publishing your home IP. This one does neither.
The pipeline
- Content is Markdown in a public Git repository. Astro turns it into plain HTML and CSS, with no JavaScript, no database and no admin login.
- CI builds and checks every change:
- a type check, a production build and a link check;
- a leak gate that fails the build if internal details (addresses, account names) ever appear on a page.
- The image is built once into a small, unprivileged nginx container:
- scanned for vulnerabilities;
- given a bill of materials;
- signed with a short-lived identity from the CI system, so no signing key exists to steal.
- Staging updates itself. The platform’s Git repository picks up the new image digest, and Argo CD deploys it to a private staging copy behind single sign-on.
- Production is one pull request that promotes the same digest. The cluster refuses to run a website image that wasn’t signed by this repository’s pipeline.
The exposure
- No incoming connection. The site isn’t reachable from the internet by connecting to the house. A small connector inside the cluster opens an outbound tunnel to the CDN, and visitors only ever talk to the CDN.
- No open port, no home IP: no port is opened on the router, and the home IP isn’t in DNS.
- The CDN caches the pages, so a power cut or a cluster upgrade at home doesn’t take the site down.
The pod
- Hardened container: it runs as a non-root user, with a read-only filesystem and no Linux capabilities.
- Tight network policy: it may receive traffic only from the tunnel connector, and it may not open any connection itself.
- Strict response headers: a strict Content-Security-Policy and the usual security headers on every response.
It’s a lot of care for a brochure site. That’s the point: the same pattern works for anything you’d rather not expose.