A robust uptime monitoring solution designed for tracking the availability and performance of web services and APIs. UptimeKit provides real-time monitoring, detailed performance analytics, and immediate status alerts through a streamlined dashboard.
- Real-time Monitoring: Automated health checks performed at one-minute intervals.
- Protocol Support: Comprehensive monitoring for HTTP/HTTPS, DNS, and ICMP Ping.
- Dynamic Organization: Drag-and-drop interface for customized monitor prioritization.
- Performance Analytics: Individual historical charts for each monitor tracking response times (average, minimum, and maximum).
- Theming System: High-quality design with multiple themes including Midnight, Forest, Cosmic, and Claude.
- Responsive Interface: Optimized for both desktop and mobile environments.
- Management Tools: Comprehensive CRUD operations for monitors, including the ability to pause tracking without data loss.
- Live Updates: Automatic dashboard synchronization every 30 seconds.
UptimeKit uses a standardized color-coding system to represent service health:
- 🟢 Operational: Response time is below 1000ms.
- 🟡 Degraded: Response time is between 1000ms and 5000ms.
- 🔴 Down: Service is unreachable or response time exceeds 5000ms.
The most efficient method to deploy UptimeKit is using Docker and Docker Compose.
Prerequisites:
- Docker and Docker Compose
Quick Start:
# Clone the repository
git clone https://github.com/abhixdd/UptimeKit.git
cd UptimeKit
# Build and initiate the stack
docker-compose up --buildAccess Points:
- Frontend Dashboard:
http://localhost:5173 - Backend API:
http://localhost:3000
Operational Commands:
# Stop the infrastructure
docker-compose down
# Reset environment (removes volumes)
docker-compose down -vArchitecture Overview:
- Backend: Node.js Alpine environment running an Express server.
- Frontend: Multi-stage build (Vite/Nginx) for optimized asset delivery.
- Database: SQLite database persisted via Docker volumes.
- Networking: Isolated communication through a dedicated Docker bridge network.
For environments where Docker is not available, UptimeKit can be installed directly via Node.js.
Prerequisites:
- Node.js (v14+)
- npm or yarn
Installation:
# Clone the repository
git clone https://github.com/abhixdd/UptimeKit.git
cd UptimeKit
# Install all dependencies
npm run install:allDevelopment Environment:
npm run devThis command initializes both the backend and frontend development servers concurrently. Access the dashboard at http://localhost:5173.
Configuration: Documentation for environment variables can be found in backend/.env.example.
The backend exposes the following RESTful endpoints:
GET /api/monitors- Retrieve all configured monitorsPOST /api/monitors- Create a new monitorPUT /api/monitors/:id- Update existing monitor configurationDELETE /api/monitors/:id- Remove a monitorPATCH /api/monitors/:id/pause- Toggle monitoring statusGET /api/monitors/:id/chart/uptime- Fetch uptime historical dataGET /api/monitors/:id/chart/response-time- Fetch response time metricsGET /api/monitors/:id/history- Retrieve recent check logsGET /api/monitors/:id/downtime- Detailed information on the most recent outage
- Adding Monitors: Utilize the "Add Monitor" interface to register a new service.
- Configuration:
- HTTP/HTTPS: Monitor web application availability.
- DNS: Validate domain name resolution.
- ICMP Ping: Verify network-level connectivity.
- Observation: Status updates are pushed to the dashboard automatically. Use the monitor-specific menus to access detailed charts or modify configurations.
Contributions to UptimeKit are encouraged. Please review the codebase and submit pull requests for any improvements or bug fixes.
For technical issues or feature requests, please utilize the GitHub Issues tracker.
This project is licensed under the MIT License.
UptimeKit - Professional Monitoring Solutions.
