Loren Lisk

A Data Platform on a Homelab

plex-db-analyzer: a data platform on a homelab

A personal side project, built and run on the homelab cluster. The code is private, so this page covers how it is put together rather than how to run it.

What it is 2026

plex-db-analyzer ingests Plex Media Server database backups (the .zip the server writes) and charts what is in them: codecs, storage, watch history, bandwidth and library growth, all on a D3 dashboard.

From monolith to services

It started life as a monolith: Node.js, Express and SQLite in one process. It was rewritten as eight Go services and a static dashboard, each doing one job:

They run on Knative Serving, and Knative Eventing fans each uploaded backup out to the domain services through a dedicated broker and per-service triggers. The design follows a strict API-first rule: each domain service owns its own database and its own API, no service reads another's tables, and there are no internal-only interfaces. Every API is built to be exposed as-is.

Data

Postgres runs under CloudNativePG as a highly available cluster, with one instance required per node, on the TrueNAS iSCSI storage described in what the homelab runs on today. Each service that holds data gets its own database and role on that cluster, and grants keep them apart.

In Aug 2026 the backup story grew up:

Observability May 2026

The services are instrumented with OpenTelemetry, and ingest exports its own pipeline metrics to a Grafana dashboard, so an import can be followed from upload onward.

"If I had more time, I would have made this shorter."

Top Of Page