uptime-wolf

Lightweight self-hosted uptime monitor β€” HTTP/TCP/ping checks, incident tracking, Slack/webhook/email alerts (Uptime Kuma alternative)

GitHubTypeScriptCSSJavaScriptHTMLDockerfile
πŸ‘ 49 vuesSync GitHub: 10/9/2026
alertingdockermonitoringreactself-hosteduptime-kuma-alternativeuptime-monitor

UptimeWolf

Lightweight Uptime Monitor with Notifications β€” Monitor your services and get alerted when they go down

CI License: MIT React TypeScript

Features

  • Multi-type monitoring β€” HTTP, TCP, and ping checks
  • Real-time dashboard β€” See uptime status, response times, and trends
  • Incident tracking β€” Automatic incident creation and resolution with history
  • Notification channels β€” Email, webhook, and Slack alerts
  • Configurable intervals β€” Set check frequency per monitor
  • Retry logic β€” Configurable retries before marking a service as down
  • Uptime percentages β€” Rolling uptime calculation from check history
  • Response time charts β€” Visualize response time trends
  • SQLite storage β€” Lightweight, file-based database β€” no external deps
  • Docker-ready β€” Full containerized deployment with docker-compose

Architecture

Browser (React + Vite)
  β”‚
  β–Ό
UptimeWolf API (Express + SQLite)
  β”‚
  β”œβ”€β”€ MonitorService β†’ Periodic checks (HTTP/TCP/Ping)
  β”‚     β”œβ”€β”€ Success β†’ Resolve incident, notify "up"
  β”‚     └── Failure β†’ Create incident, notify "down"
  β”‚
  β”œβ”€β”€ NotificationService
  β”‚     β”œβ”€β”€ Email (SMTP via Nodemailer)
  β”‚     β”œβ”€β”€ Webhook (HTTP POST)
  β”‚     └── Slack (Incoming Webhook)
  β”‚
  └── SQLite Database
        β”œβ”€β”€ monitors
        β”œβ”€β”€ checks
        β”œβ”€β”€ incidents
        └── channels

Quick Start

Development

npm install
npm run dev          # Frontend on :5176
npm run dev:server   # API server on :3003

Docker

docker-compose up

Environment Variables

PORT=3003
DB_PATH=./data/uptime-wolf.db

# SMTP for email notifications (optional)
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_SECURE=false
SMTP_USER=your-email@gmail.com
SMTP_PASS=your-app-password
SMTP_FROM=UptimeWolf <alerts@example.com>

Usage

  1. Add a monitor β€” Click "Add Monitor", enter a name, URL, type (HTTP/TCP/Ping), and interval
  2. Configure notifications β€” Go to Settings, add an email/webhook/Slack channel
  3. Monitor your dashboard β€” View real-time status, response times, and uptime
  4. Track incidents β€” Check the Incidents page for downtime history
  5. Pause/resume β€” Pause monitors during maintenance windows

Project Structure

uptime-wolf/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”œβ”€β”€ Sidebar.tsx
β”‚   β”‚   β”œβ”€β”€ Dashboard.tsx
β”‚   β”‚   β”œβ”€β”€ StatCard.tsx
β”‚   β”‚   β”œβ”€β”€ UptimeChart.tsx
β”‚   β”‚   β”œβ”€β”€ MonitorList.tsx
β”‚   β”‚   β”œβ”€β”€ MonitorForm.tsx
β”‚   β”‚   β”œβ”€β”€ IncidentsView.tsx
β”‚   β”‚   └── Settings.tsx
β”‚   β”œβ”€β”€ types.ts
β”‚   β”œβ”€β”€ api.ts
β”‚   β”œβ”€β”€ App.tsx
β”‚   β”œβ”€β”€ main.tsx
β”‚   └── index.css
β”œβ”€β”€ server/
β”‚   β”œβ”€β”€ db.ts
β”‚   β”œβ”€β”€ monitorService.ts
β”‚   β”œβ”€β”€ notifications.ts
β”‚   └── index.ts
β”œβ”€β”€ tests/
β”‚   └── db.test.ts
β”œβ”€β”€ Dockerfile
β”œβ”€β”€ Dockerfile.api
β”œβ”€β”€ docker-compose.yml
β”œβ”€β”€ nginx.conf
└── package.json

Development

npm install
npm run dev          # Start frontend dev server
npm run dev:server   # Start API server
npm test             # Run tests
npm run typecheck    # Type checking
npm run lint         # Lint
npm run build        # Build for production

Tech Stack

  • Frontend: React 18, Vite, TailwindCSS, Recharts, Lucide icons, date-fns
  • Backend: Express, TypeScript, better-sqlite3, Nodemailer
  • Testing: Vitest
  • Deployment: Docker, Nginx

License

MIT