On Friday, I was inspired to take on a new project as an attempt to touch up on Go (the programming language). My original goal was to render some kind of virtual representation of the blinking HDD LED of each of my servers and nodes (such as my Raspberry Pis). So I used an event stream to push events from each of my servers to a central node, which would then stream that to a browser using SSEs. And then it sort of snowballed into becoming a dashboard for all sorts of telemetry and then eventually real-time notifications.
So, after a fun weekend of experimentation, I was able to finally polish it up into something functional and useful that I wanted to share with the community and see what you thought of it.
The architecture consists of three components:
- The agent (called
event-pulsar- built in Go), which you install on each node you want to observe - The central broker (called
event-terminal- built in Go), which accepts messages from and relays them - And, finally, the dashboard (HTML, Vanilla JavaScript, Tailwind)
And with that said, here's the demos:
- Graphical Demo - https://humble-homelabber.duckdns.org
- Simpler Demo - https://humble-homelabber.duckdns.org/demo-simple.html (just the blinking HDD LEDs and telemetry)
- GitHub - https://github.com/humblehomelabber/homelab-dashboard
The backend Go components and the frontend dashboard are decoupled by design (no server-side rendering), so anyone could create their own dashboard with little friction and without knowing a line of Go.
More details in the comments.