Imagine monitoring your entire home lab with a device that costs just $5. Sounds too good to be true, right? But here's where it gets controversial: I built a surprisingly powerful uptime monitor using an ESP32 microcontroller, and it might just change the way you think about self-hosted monitoring. While tools like Uptime Kuma are fantastic, they rely on your existing infrastructure—which defeats the purpose if your server crashes. And this is the part most people miss: an ESP32-based monitor sits physically on your network, completely independent of your servers, VMs, or Docker containers. If your Proxmox cluster goes down or your NAS locks up, this tiny device will still be there, quietly checking your services and serving a simple web dashboard to tell you what’s up—or down.
What started as a curious experiment—could I really build something like Uptime Kuma on a microcontroller?—turned into one of my favorite home-lab gadgets. It’s absurdly power-efficient, boots in seconds, and stores all service definitions on-device using LittleFS. The web dashboard is straightforward, showing the status of services like Home Assistant, Jellyfin, or any other endpoint you define. It’s simple, fast, and shockingly reliable.
Here’s the bold part: This isn’t just a toy project. It’s a dedicated, immutable monitoring appliance that solves a real problem. Most monitoring tools assume your infrastructure is intact, but this ESP32 monitor is completely isolated. It doesn’t rely on Docker, Proxmox, or even a full server—just a tiny board with Wi-Fi and enough processing power to handle HTTP requests, ICMP pings, and a lightweight web server. It’s affordable, silent, and immune to the very crashes it’s designed to detect.
But why go through the trouble of building your own? Beyond the obvious benefits of isolation, it’s a fascinating exploration of what a microcontroller can do. Using asynchronous HTTP, LittleFS for storage, JSON for configuration, and a basic frontend, the ESP32 proves it’s more than capable of being a ‘proper’ network appliance. And at $5, the cost is negligible.
Here’s how it works: At boot, the ESP32 connects to Wi-Fi, mounts its LittleFS filesystem, loads service definitions from a JSON file, and starts an asynchronous web server. All configuration is done via the web interface—no need to reflash the device unless you’re adding new features. Services are defined with a name, type (e.g., Home Assistant, Jellyfin, GET request, or Ping), host/IP, port, optional HTTP path, expected response substring, and check interval. Every few seconds, the ESP32 iterates through the list, checks each service, and updates the frontend in near real-time. It’s extensible, too—you could add support for MQTT, Telegram, or Discord notifications, though I’m still working on those features.
But here’s the controversial question: Is this a replacement for Uptime Kuma or Grafana? Absolutely not. It’s intentionally basic, focusing on HTTP checks, ping checks, and simple validation. It doesn’t aim to replicate advanced features, but that’s exactly why it’s brilliant. It’s a silent, low-power, crash-proof watchdog that does one thing exceptionally well.
If you’re curious to try it out, I’ve published the project on GitHub (https://github.com/Incipiens/ESP32-Uptime-Monitoring/tree/main). It’s a work in progress—I plan to add POST request support and notification integrations—but it’s already a solid foundation for anyone looking to build their own monitoring solution. Now, here’s the real question: In a world where complexity reigns, is there value in a simple, dedicated tool like this? Let me know your thoughts in the comments—do you see this as a game-changer, or just a fun experiment?