I Built a Self-Hosted Uptime Monitor in 1 Week Because UptimeRobot Only Lets You Monitor One Site for Free
Source: Dev.to
The Problem
I was building my project and needed to monitor its uptime. I went to UptimeRobot — and hit a wall. The free plan only lets you monitor one website. I had multiple services running and didn’t want to pay just to know if my own server was down.
So I did what any developer does: I built it myself.
What I Built
Site‑Monitoring (Nexus) – a fully self‑hosted, open‑source uptime monitoring tool that:
- 📡 Monitors unlimited websites — add as many URLs as you want
- 📊 Shows real‑time analytics — response times, status codes, uptime history
- 🎨 Interactive dashboard — built with React + Framer Motion
- 😴 Anti‑sleep engine — keeps itself alive on free platforms like Render/Vercel
- 🏠 100 % self‑hosted — your data, your server, zero subscription fees
Live Demo
GitHub
Tech Stack
- Frontend: React 18, Vite, TailwindCSS, Framer Motion
- Backend: Node.js, Express.js
- Database: PostgreSQL
- Jobs: Cron jobs (
pinger.js) - Hosting: Render (backend), Vercel (frontend)
The Hardest Part
Getting the anti‑sleep engine right was tricky. Free‑tier platforms like Render spin down your server after 15 minutes of inactivity, so the monitor itself would go down.
I solved this by building a self‑ping system using cron jobs that periodically hit the backend’s own endpoint. Simple in concept, but it required careful debugging to avoid hammering the server.
Architecture
Nexus-Core/
├── backend/
│ ├── db.js # Database connection
│ ├── pinger.js # Background site poller + self‑ping
│ └── server.js # Express API
└── frontend/
└── src/
├── api.js # Axios API calls
├── App.jsx # Main React app
└── index.css # TailwindCSSWhat’s Next
A common criticism: single‑server monitoring can give false positives (e.g., if the monitoring server goes down, it may report external sites as down).
Roadmap: add multi‑region monitoring by checking from several servers in different locations.
In the meantime, Nexus is perfect for:
- Monitoring your own projects and APIs
- Self‑hosted infrastructure
- Anyone who wants full control without paying monthly
Contributing
I built this in one week and there’s a lot more to add. I’ve opened four beginner‑friendly issues:
- 🌙 Dark/light mode toggle
- 📧 Email alerts when sites go down
- 📄 CSV export for uptime logs
- 📝
CONTRIBUTING.mdimprovements
First‑time contributors are welcome – the codebase is small, clean, and well‑documented.
Show Some Love
If you find it useful, a star on GitHub helps a lot!