Skip to content

AbstractNucleus/analytics

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

53 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

analytics

A fleet-monitoring dashboard for a personal homelab. Custom SvelteKit frontend on top of Beszel, designed to run tailnet-only via Tailscale.

Published for reference. The deploy/ folder shows how I run it, but expect to read code, not follow polished steps.

What it shows

  • Fleet view: one row per host: status, hostname, OS + arch, uptime, CPU sparkline, memory %, disk %, network in/out, last-seen indicator. Rows live-update at ~1 Hz.
  • Per-host page: CPU (line chart + per-core heatmap + load average + PSI when available), memory (used vs MemAvailable + swap + cache/buffers), disk (per-mount %, IOPS, queue depth, latency), network (per-interface bandwidth, packets/s, errors/drops), temperatures (CPU/GPU/NVMe). All charts share a 1h / 24h / 7d / 30d time-range toggle.
  • Containers panel: per-host Docker container CPU, memory, and network, when the agent has access to the Docker socket.

Built with

  • SvelteKit (adapter-node) frontend, uPlot for charts.
  • Beszel hub (PocketBase) for metric collection; beszel-agent on each host pushes over the tailnet.
  • nginx ingress bound to a Tailscale IP, TLS via Let's Encrypt with the Cloudflare DNS-01 challenge.
  • Docker Compose for the hub + frontend; agents run as native systemd / Windows services.

Running it locally

cp deploy/.env.example deploy/.env
docker compose -f deploy/docker-compose.dev.yml up

License

MIT.

About

Tailnet-only fleet-monitoring dashboard for a personal homelab. SvelteKit frontend on top of Beszel.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors