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.

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.
- 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.
Syncthing
alpine-syncthingFile synchronization kept inside a lightweight Alpine workload.
NPMplus
npmplusIngress, reverse proxying, and certificates at the edge of the lab.
WireGuard
wireguardEncrypted remote access without placing management services on the public internet.
Immich
immichA self-hosted photo library with its own isolated service boundary.
HermesAgent
hermesagentAn isolated environment for agent experiments and controlled iteration.
Docker
dockerA 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.