Leo Kolotilenko
Site currently in development. Revision V0.7 - Live Metrics Rework
Homelab

Five Generations of My Homelab

From ESXi and Raspberry Pis to TrueNAS, Proxmox, ZFS, 10 GbE, Docker, Ansible, and the current Debian-based rebuild.

Current generation
Rebuild in progress

Back from the Rack

Surely this scales.

2025 - Present

View live homelab statisticsCurrent architecture, health, resource usage and network telemetry.
Write-up in progress

V5 is the current lab and is still being finished. The previous rack survived four moves, but an R720xd and a pile of supporting hardware no longer made much sense in a condo. The live architecture page is already up to date; this write-up will be expanded once the remaining migrations and hardware work are finished.

Core hardware
Primary host
Unity
Ryzen 5 5500 · 32 GB RAM
Debian 12 · Docker · GTX 1080
Storage
28 TB data + 1 TB NVMe
Seagate HDD · Kingston NV3
SMART + temperature monitoring
Public edge
Tartarus
Raspberry Pi 4 · 250 GB SSD
DMZ · Docker · Traefik
Network
UniFi + pfSense
UDR7 · Flex 2.5G · APU4D2
Pi-hole · segmented public edge
R720xd → Unity

Downsizing in progress.

V2 through V4 were built around the Dell R720xd. For V5 I moved the primary workloads onto Unity, a tower assembled mostly from hardware I already had: a Ryzen 5 5500, 32 GB of RAM, GTX 1080, Intel i350 NIC, 1 TB NVMe system drive, and a 28 TB data drive.

Unity runs Debian 12 and Docker directly. Most of the general-purpose services that previously lived across Proxmox and the Raspberry Pi fleet now run as containers on this host, which gets rid of a large amount of hardware without adding another virtualization layer.

I kept the roles that benefit from physical separation off Unity. Pi-hole remains on a separate Raspberry Pi, the APU4D2 now runs pfSense as the boundary for the DMZ, and Tartarus — a Raspberry Pi 4 with a 250 GB SSD — hosts the public-facing Docker environment behind Traefik.

V4
Dell R720xd
Proxmox VE
KVM + LXC workloadsZFS storageFive-node Raspberry Pi Docker fleet
↓
V5
Unity
Debian 12 · Docker
Ryzen 5 5500 · 6C / 12T32 GB RAM · GTX 10801 TB NVMe · 28 TB data
Git-backed deployment

Finally adding source control

V5 moves the Docker stack definitions and supporting configuration into a dedicated HomeLab Git repository. The repository is checked out on Unity, with service configuration bind-mounted into the containers that need it.

Portainer is still the management interface, but it is no longer where the configuration primarily lives. Changes are made in Git, pulled onto the host, and deployed by recreating the affected stack. That gives me version history for the Compose files and service configuration instead of relying on whatever happens to exist in the Portainer editor.

01 · Define
Git repository

Compose definitions and service configuration are versioned together in the HomeLab repository.

↓
02 · Deploy
Portainer

Stack deployment and day-to-day container management remain available through Portainer.

↓
03 · Run
Docker

Unity and Tartarus remain separate Docker hosts for trusted and public-facing workloads.

Observability

The monitoring stack is back!

V2 and V3 exposed selected Grafana dashboards through the old portfolio. I wanted the same idea in V5, but rebuilt the monitoring stack around VictoriaMetrics, Loki, Grafana Alloy and Grafana instead of restoring the old Prometheus / InfluxDB setup.

Alloy collects host and container metrics from Unity and Tartarus, along with service-specific telemetry from UniFi, Pi-hole and the storage hardware. pfSense sends structured firewall logs into Loki, where the filter events are parsed and enriched with geographic and ASN data.

The public site does not connect directly to Grafana or expose the monitoring backend. A small metrics service queries an approved set of VictoriaMetrics data and writes a sanitized JSON payload used by the live architecture and homepage visualizations.

View live architecture →
Monitoring pipeline
Unity + Tartarus
node_exporter · cAdvisor · Alloy
Network + security
UniFi · Pi-hole · pfSense
Hardware
SMART · disk temperature · filesystem
Public edge
Traefik · availability · request telemetry
Collection + storage
Alloy → VictoriaMetrics / Loki → Grafana
VictoriaMetrics stores the metric series while Loki handles the centralized log data. Grafana queries both backends.
Public reporting
Approved queries → JSON → Portfolio
The portfolio metrics service queries only the data needed by the public site and publishes the results as a sanitized JSON snapshot.
Metrics
VictoriaMetrics
90-day retention for host, container, network and service metrics.
Logs
Loki
14-day retention for centralized container, service and firewall logging.
Firewall
pfSense filterlog
RFC5424 firewall events parsed into structured fields with GeoIP and ASN enrichment.
Portfolio
Live telemetry
Sanitized health, workload, traffic, DNS, storage and firewall data published through the site.
Services

Building the new service stack

I am not rebuilding V4 service-for-service. The current environment keeps the services I still use and adds new internal infrastructure where it is useful.

Observability
Grafana · VictoriaMetrics · Loki · Alloy

Host, container, network, DNS, firewall and application telemetry collected into a central metrics and logging stack.

Documentation
AFFiNE

Self-hosted documentation workspace backed by PostgreSQL and Redis for service notes, build documentation and internal reference material.

Internal PKI
step-ca + PKI portal

Internal certificate authority and supporting portal used for certificates across trusted services.

Public services
Traefik + isolated DMZ

Internet-facing services terminate on Tartarus in the DMZ instead of being published directly from the primary Docker host.

Current status

V5 is running. The rebuild is not quite finished.

The compute, network, DMZ, monitoring, public hosting and documentation environments are in place. A few service migrations and hardware changes are still outstanding, so the full V5 write-up and final photography will come after the rebuild is complete.

Last major update
September 2026