A simple uptime monitoring dashboard to keep track of your websites and APIs. Get real-time updates, beautiful charts, and know exactly when something goes down.
- Real-time monitoring - checks every minute
- Multiple monitor types: HTTP/HTTPS, DNS, ICMP Ping
- Drag & Drop Reordering - Organize your monitors exactly how you want
- Individual charts for each monitor
- Track response times (avg, min, max)
- Beautiful dark/light mode with multiple themes (Midnight, Forest, Cosmic, Claude)
- Mobile responsive - works everywhere
- Edit or delete monitors anytime
- Pause monitoring without losing data
- See exactly when something goes down
- Auto-refreshes every 30 seconds
- 🟢 Operational - Response time < 1000ms
- 🟡 Degraded - Response time 1000-5000ms
- 🔴 Down - Service unavailable or response time > 5000ms
The easiest way to get UptimeKit running is with Docker and Docker Compose!
Prerequisites:
- Docker & Docker Compose installed
Quick Start:
# Clone the repository
git clone https://github.com/abhixdd/UptimeKit.git
cd UptimeKit
# Build and start the full stack
docker-compose up --buildAccess the application:
- Frontend:
http://localhost:5173 - Backend API:
http://localhost:3000
Stop the application:
docker-compose downRemove all data and start fresh:
docker-compose down -vHow Docker setup works:
- Backend container: Node.js Alpine image running Express server on port 3000
- Frontend container: Multi-stage build with Node/Vite for building, nginx for serving on port 5173
- Database: SQLite database persists in a Docker volume (
backend-data) - Networking: Services communicate via Docker internal network
For running UptimeKit with Node.js (without Docker), follow these steps.
Prerequisites:
- Node.js (v14 or higher)
- npm or yarn
Installation:
# Clone the repository
git clone https://github.com/abhixdd/UptimeKit.git
cd UptimeKit
# Install all dependencies (root, backend, frontend)
npm run install:allRunning the Application:
npm run devThis runs both the backend (port 3000) and the frontend dev server concurrently (port 5173).
Open browser: http://localhost:5173
Optional: Create a .env file in the backend folder (copy from .env.example) to customize the port or other settings.
GET /api/monitors- Get all monitorsPOST /api/monitors- Create monitorPUT /api/monitors/:id- Update monitorDELETE /api/monitors/:id- Delete monitorPATCH /api/monitors/:id/pause- Toggle pauseGET /api/monitors/:id/chart/uptime- Uptime chart dataGET /api/monitors/:id/chart/response-time- Response time chart dataGET /api/monitors/:id/history- Last 30 checksGET /api/monitors/:id/downtime- Latest downtime period info
- Click "Add Monitor" to add a new website/API to monitor
- Choose monitor type:
- HTTP/HTTPS: Check website availability and response time
- DNS: Verify DNS resolution
- ICMP Ping: Test connectivity via ping
- Enter a name and URL (e.g., https://example.com)
- Monitor status updates automatically every minute
- View charts, pause, edit, or delete monitors from the menu
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License.
If you encounter any issues, please open an issue on GitHub: GitHub Issues
Abhi - GitHub Profile
Made with ❤️ for monitoring enthusiasts
Star ⭐ the repository if you find it helpful!
