All posts
·2 min read·David Pilat

A Live Status Page for My Proxmox Homelab

How the homepage shows real uptime, response times, and running services from my own server — without exposing Proxmox to the internet.

#homelab#proxmox#monitoring

The homepage of this site has a Homelab section that shows my server in real time: node uptime, CPU and memory, and which services are up — with live response times on the public ones. It runs on my own hardware, and I wanted to share how it's wired without exposing anything I shouldn't.

The hardware

Everything runs on a single Proxmox VE node — an Intel i7-14700K with 94 GB of RAM — hosting around sixteen LXC containers: media, a Prometheus + Grafana + Blackbox monitoring stack, Nginx Proxy Manager, a Cloudflare Tunnel, Pi-hole, and more. Storage lives on a Synology NAS with about 82 TB usable across three volumes.

The problem: how do you show this safely?

My site is hosted on Vercel, which can't reach my LAN — and I definitely don't want to put the Proxmox API or the Blackbox exporter on the public internet. The answer is a small middle layer.

A tiny collector

I wrote a dependency-free Node service that runs on the LAN. It reads the Proxmox API with a read-only token for node stats and container status, and asks the Blackbox exporter to probe my public URLs for response time and SSL expiry. It outputs one sanitized JSON document — only the data I choose to expose.

Getting it public, safely

I front the collector with Nginx Proxy Manager on a subdomain, routed through my existing Cloudflare Tunnel — so no ports are opened and Proxmox stays private. The site fetches that JSON on a short revalidation interval and renders the cards.

Why I like it

It turns a static "I have a homelab" line into something live and verifiable, and it reuses the monitoring I already run. Same pattern scales to anything with an API: collect internally, sanitize, expose the minimum.