Skip to content

πŸš€ Modern self-hosted uptime monitoring solution - Monitor websites, APIs, and services with real-time notifications, beautiful status pages, and comprehensive analytics. Built with Go, React.

License

Notifications You must be signed in to change notification settings

0xfurai/peekaping

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

88 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Peekaping πŸš€

License Go React TypeScript MongoDB PostgreSQL SQLite Docker Pulls

A modern, self-hosted uptime monitoring solution

Peekaping is a powerful, feature-rich uptime monitoring system similar to Uptime Kuma, built with Go and React. Monitor your websites, APIs, and services with real-time notifications, beautiful status pages, and comprehensive analytics.

Live Demo

Want to see Peekaping in action? Try our live demo:

πŸ”— https://demo.peekaping.com

The demo allows you to explore all features instantly in your browser without any setup. Perfect for evaluating Peekaping before deploying your own instance!

πŸ“š Documentation

For detailed setup instructions, configuration options, and guides:

πŸ”— Docs

⚠️ Beta Status

Peekaping is currently in beta and actively being developed. While I am excited to share this project with the community, please note that:

  • The software is still undergoing testing and refinement
  • Some features may be incomplete or subject to change
  • I recommend testing in non-production environments first
  • Please report any issues you encounter - your feedback helps us improve!

We encourage you to try Peekaping and provide feedback, but please use it at your own discretion. Your testing and feedback are invaluable to making Peekaping production-ready! πŸš€

πŸ’‘ Motivation

Peekaping is designed as a modern alternative to Uptime Kuma, built with a focus on strongly typed architecture and extensibility. Our server is written in Go, a fast and efficient language that enables a small footprint while maintaining high performance. The codebase is structured for easy extensibility, allowing developers to seamlessly add new notification channels, monitor types, and even swap out the database layer without major refactoring.

The client-side application is also strongly typed and built with modern React patterns, making it equally extensible and maintainable. This combination of type safety, performance, and modular design makes Peekaping an ideal choice for teams who need a reliable, customizable uptime monitoring solution.

Peekaping Dashboard

πŸ“‘ Stay in the Loop

I share quick tips, dev-logs, and behind-the-scenes updates onΒ Twitter. If you enjoy this project, come say hi & follow along!

Follow me on X

✨ Features

πŸ” Monitoring Types

  • HTTP/HTTPS Monitoring - Monitor websites, APIs, and web services with comprehensive options
  • TCP Port Monitoring - Monitor TCP port connectivity and availability
  • Ping Monitoring (ICMP) - Traditional ping monitoring using ICMP packets
  • DNS Monitoring - Monitor DNS query responses and resolution times
  • Push Monitoring - Monitor services that push heartbeats to a generated URL endpoint
  • Docker Container Monitoring - Monitor Docker container status and health

πŸ“Š Real-time Dashboard

  • Live status updates with WebSocket connections
  • Interactive charts and statistics
  • 24-hour uptime tracking
  • Response time monitoring (ping)
  • Visual heartbeat history

πŸ”” Smart Notifications

  • Multiple Channels: Email (SMTP), Slack, Telegram, Webhooks
  • Intelligent Alerting: Configurable retry logic before marking as down
  • Notification Control: Set resend intervals to avoid spam
  • Important Events: Only get notified when status actually changes

πŸ“„ Status Pages

  • Public Status Pages - Share service status with your users

πŸ›  Advanced Features

  • Maintenance Windows - Schedule maintenance to prevent false alerts
  • Proxy Support - Route monitoring through HTTP proxies
  • 2FA User Authentication - Secure login with 2FA support
  • Data Retention - Automatic cleanup of old heartbeat data

πŸ— Technical Highlights

  • Modern Stack: Go backend, React frontend, MongoDB database
  • Cloud Native: Docker support with docker-compose
  • API First: Complete REST API with Swagger documentation
  • Real-time: WebSocket connections for live updates
  • Scalable: Architecture with dependency injection

πŸš€ Quick Start

Prerequisites

  • Docker and Docker Compose

Mongodb

# 1. Grab defaults
curl -L https://raw.githubusercontent.com/0xfurai/peekaping/main/.env.prod.example -o .env
curl -L https://raw.githubusercontent.com/0xfurai/peekaping/main/nginx.conf -o nginx.conf
curl -L https://raw.githubusercontent.com/0xfurai/peekaping/main/docker-compose.prod.mongo.yml -o docker-compose.yml

# 2. Fire it up
docker compose up -d

# 3. Visit the UI
open http://localhost:8383

Postgres

# 1. Grab defaults
curl -L https://raw.githubusercontent.com/0xfurai/peekaping/main/.env.prod.example -o .env
curl -L https://raw.githubusercontent.com/0xfurai/peekaping/main/nginx.conf -o nginx.conf
curl -L https://raw.githubusercontent.com/0xfurai/peekaping/main/docker-compose.prod.postgres.yml -o docker-compose.yml

# 2. Fire it up
docker compose up -d

# 3. Visit the UI
open http://localhost:8383

SQLite

# 1. Grab defaults
curl -L https://raw.githubusercontent.com/0xfurai/peekaping/main/.env.prod.example -o .env
curl -L https://raw.githubusercontent.com/0xfurai/peekaping/main/nginx.conf -o nginx.conf
curl -L https://raw.githubusercontent.com/0xfurai/peekaping/main/docker-compose.prod.sqlite.yml -o docker-compose.yml

# 2. Fire it up
docker compose up -d

# 3. Visit the UI
open http://localhost:8383

🐳 Docker

Official Images

Docker Compose Files

docker-compose.dev.{db}.yml

These files are for local testing and build the entire stack locally from Dockerfiles

docker-compose.prod.{db}.yml

These files are production-ready configurations that pull pre-built containers from Docker Hub

docker-compose.{db}.yml

These files run standalone databases for local development, designed to work with turbo run dev

πŸ›  Development Setup

Full Stack Development

Create environment file in root:

cp .env.example .env
# Edit .env with your configuration

# Install all dependencies
pnpm install

# run turbo
turbo run dev docs:watch

βš™οΈ Configuration

Environment Variables

DB_USER=root
DB_PASSWORD=your-secure-password
DB_NAME=peekaping # file path for sqlite like /app/data/peekaping.db)
DB_HOST=localhost
DB_PORT=6001
DB_TYPE=mongo # postges | mysql |sqlite

PORT=8034
CLIENT_URL="http://localhost:5173"
ACCESS_TOKEN_EXPIRED_IN=1m
ACCESS_TOKEN_SECRET_KEY=secret-key
REFRESH_TOKEN_EXPIRED_IN=60m
REFRESH_TOKEN_SECRET_KEY=secret-key
MODE=prod # logging
TZ="America/New_York"

πŸ”’ Security

Authentication

  • JWT-based authentication
  • Optional 2FA with TOTP
  • Secure session management

Best Practices

  • Use strong passwords and JWT secrets
  • Regular security updates
  • Secure your db instance
  • Use HTTPS in production

Reverse Proxy Setup

Example Nginx configuration included in nginx.conf.

🀝 Contributing

We welcome contributions! Please:

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests if applicable
  5. Submit a pull request

πŸ“ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

  • Inspired by Uptime Kuma
  • Built with amazing open-source technologies
  • Thanks to all contributors and users

πŸ“ž Support

  • Issues: Report bugs and request features via GitHub Issues

Made with ❀️ by the Peekaping team

About

πŸš€ Modern self-hosted uptime monitoring solution - Monitor websites, APIs, and services with real-time notifications, beautiful status pages, and comprehensive analytics. Built with Go, React.

Topics

Resources

License

Stars

Watchers

Forks

Packages