← all worklive

Irminsul — indie cloud

A self-hosted "indie cloud" across three servers — 19 services unified by single sign-on, defined entirely as code.

HonoTypeScriptDockerAuthentikCaddyCloudflarerestic

Architecture

Cloudflare edge→Caddy · forward-auth→Authentik SSO→estate-api · VSA Hono→19 service containers

What it is

A modular monolith of containers across three Hetzner boxes behind a reverse-proxy edge, unified by single sign-on — a friends-and-family personal cloud, not a cloud-native microservices platform.

How it startedresearch

Grew from one idea: "one root, everything grows here." Chose deliberate simplicity — rejected the heavy react-query / codegen / RHF frontend stack as YAGNI for a solo estate.

Decisions & tradeoffs

DNS-as-code (one YAML per hostname), one Caddy edge per box, Authentik forward-auth. estate-api is a Vertical-Slice Hono backend: 14 slices, a Minecraft RCON control plane, a single-poll SSE fan-out, and an AI NPC worker that shells out to claude -p.

Operations

restic disaster recovery (keep-daily 7 / weekly 4 / monthly 6) with weekly integrity checks and Discord + Uptime-Kuma heartbeats. Health-gated deploys with automatic rollback.

Screenshots

irminsul.uk — the estate's public landingMinecraft hub — live server status, plugins, towns and map, one Next.js bundleImmich behind Authentik — every service logs in through the estate's single sign-on

By the numbers

3
Hetzner boxes
19
services
26
DNS as code
1
SSO · Authentik