Self-hosted · Declarative · Open

A small constellation of servers, built in the open.

Hager Homelab is a personal lab of rack servers and small nodes that hosts apps, media, game servers and experiments for a household and a few friends. Every machine is described in code, every login goes through one identity, and nothing private faces the internet.

A constellation shaped like a house: each star is a layer of the lab IDENTITY EDGE VPN COMPUTE STORAGE OBSERVE
100%of hosts built from one Nix flake
1 loginwith MFA for every member service
0admin panels reachable from the internet
24/7metrics, alerts and outside probes

How it's put together

Six layers, one config repository

The lab is small, but it is built like production: layered, reproducible and watched. Here is the general shape. The specifics stay inside.

Edge & network

One front door. A hardened router and firewall, a reverse proxy with automatic TLS, and network intrusion detection that blocks known-bad addresses.

firewallauto-TLSIDSsplit DNS

Identity

A single sign-on provider for apps and server shells. Accounts are invite-only, multi-factor is required, and access is granted by group.

OIDCTOTPSSH certs

Private access

Member and admin services answer only to the home network and the VPN. Members get a WireGuard tunnel and can add their own devices.

WireGuardself-serviceVPN-only

Compute

A mix of refurbished rack servers and small-form-factor nodes. Services run as containers; an app platform handles deploys and a panel runs game servers.

NixOScontainersPaaSgame servers

Storage & backups

Shared storage on the LAN, nightly database dumps, and secrets encrypted at rest in Git and rotated on a schedule.

nightly dumpsencrypted secretsrotation

Observability

Metrics and dashboards for every host, alerts that only fire when something needs fixing, and probes from outside the network to catch what the inside can't see.

metricsdashboardsalerting

Architecture

General architecture Public visitors reach a few public apps through the edge proxy. Members connect over the VPN, sign in once at the identity provider, and reach private services. All services run on the compute nodes, which share storage and are monitored. INTERNET Visitorsanyone, any network Membersinvited, on the VPN THE LAB Edgeproxy · TLS · IDS VPN gatewayWireGuard tunnels Public appssites, wiki, game servers Identity (SSO)one login + MFA Private servicesfiles, media, chat, admin Compute nodesrack + small form factorcontainers, declarative Storage & watchshared storage, backupsmetrics, alerts, probes General architecture (compact) Visitorsanyone Memberson the VPN Edgeproxy · TLS · IDS VPN gatewayWireGuard Public appssites, wiki, games Identity (SSO)one login + MFA Private servicesfiles, media, chat Compute nodesrack + small form factor, declarative Storage & watchbackups, metrics, alerts, probes
public traffic member traffic (VPN + SSO)

Principles

How the lab is run

Declarative everything

Hosts, services, firewall rules, dashboards and alerts are Nix code. If it isn't in the repo, it doesn't exist.

Private by default

A service is LAN- and VPN-only until there's a reason for it to be public. Public names don't mean public access.

One identity

One account and one second factor open everything a member is allowed to use, and removing access happens in one place.

Upgrade with a safety net

Nightly dependency updates, rehearsals on test instances for big jumps, and rollbacks that are one reboot away.

Watched, quietly

Lots of signals, few pages. Alerts are reserved for things a human actually needs to fix.

Built in the open

The configuration is public. Secrets are encrypted in a separate repository and never land in the public one.

Got an invite?

Set up your VPN and sign in for the first time in about ten minutes. The member guide walks you through every step.

Open the member guide