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.
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.