Self-hosted infrastructure

A small lab with production habits.

One Proxmox node runs six separated workloads across secure access, storage, photos, ingress, and containerized applications.

Illustration of a self-hosted server rack with managed networking and storage

A real node, not a mockup.

This representative operating profile turns the homelab from an abstract claim into a system I can inspect, tune, and improve.

Representative Proxmox node profile

Healthy headroom with useful signals to investigate.

CPU, memory, and storage remain comfortably below capacity. Short-lived I/O spikes and memory pressure still provide useful signals: operating a system also means knowing what to examine next.

12%Typical CPU useplenty of headroom
42%Memory in useunder normal load
36%System storage usedgrowth monitored
21d+Typical uptimebetween maintenance
Hypervisor
Proxmox Virtual Environment
Compute
Compact multi-core x86 host
Memory
Sized for the active service set
Storage
Local, LVM-thin, network, and external targets
Network
Separated ingress, remote access, and service traffic

One host, separated responsibilities.

Six running workloads keep updates, failures, and experiments bounded while making each service easier to reason about.

01

Syncthing

alpine-syncthing

File synchronization kept inside a lightweight Alpine workload.

02

NPMplus

npmplus

Ingress, reverse proxying, and certificates at the edge of the lab.

03

WireGuard

wireguard

Encrypted remote access without placing management services on the public internet.

04

Immich

immich

A self-hosted photo library with its own isolated service boundary.

05

HermesAgent

hermesagent

An isolated environment for agent experiments and controlled iteration.

06

Docker

docker

A flexible runtime for containerized applications and supporting services.

How I run it

The useful part of a homelab is not simply keeping services online. It is building habits that transfer to real infrastructure.

Documented

Services have clear ownership, purpose, and recovery notes.

Observable

Load, memory pressure, storage, and failure signals stay visible.

Recoverable

Backups only count when restore paths are understood and tested.

Automated

Repeatable configuration keeps changes deliberate and reviewable.