FlashServerDash

A Blazor Server dashboard for a home server, with live metrics, history graphs, state-machine alerting, and audited service controls. Installs as a PWA.

Overview

FlashServerDash is the control panel for my home server. It shows what the machine is doing right now, what it has been doing over time, and lets me act on it safely from my phone. It’s built as a Blazor Server app and installs as a progressive web app, so it opens like a native app.

Highlights

  • Live metrics, straight from the kernel. CPU, memory, disk, network, and temperatures are read directly from Linux’s /proc and hwmon interfaces. There’s no agent or exporter in between, and Blazor’s live connection streams updates to the page.
  • History graphs. Samples are stored in MySQL, so you can look back over hours or days and spot trends, not just the current reading.
  • Alerting with a per-rule state machine. Each alert rule tracks its own state, and notifications go to Discord through webhooks.
  • Safe service controls. Starting, stopping, and restarting a handful of services from the UI goes through a deliberately narrow privilege allowlist: only specific, pre-approved actions are permitted, nothing else. Every action is written to an audit log with what was done and when.
  • Uptime page. A simple view of service availability over time.
  • Installable PWA. Manifest and icons make it installable on desktop and mobile.

How it works

  • A background sampler reads system metrics on an interval, pushes them to connected dashboards, and periodically persists them for the history views.
  • The alert engine evaluates each rule against fresh samples and advances that rule’s state machine. Only state transitions produce notifications.
  • Control actions are validated against the allowlist in the app and constrained at the OS level, so the web app can never run arbitrary commands even if the UI were misused.
  • The dashboard itself is only reachable privately. It isn’t exposed to the public internet.

Stack

C# · Blazor Server · .NET · MySQL · Linux /proc + hwmon · Discord webhooks · PWA