How to Install Open Source Uptime Monitor
Peekaping is a modern self-hosted uptime monitoring solution created as an alternative to Uptime Kuma. Built with Golang and React, it delivers high performance with minimal resource consumption. In this article, we'll cover in detail how to install Peekaping on your server using various methods.
In today's digital world, the availability of your website or service directly impacts business results, reputation, and customer trust. Even a few minutes of downtime can lead to serious consequences.
Financial losses. Every minute of website unavailability means lost sales and missed revenue. For an online store, downtime during peak hours can result in thousands of dollars in lost revenue. Research shows that 98% of organizations estimate the cost of one hour of downtime at more than $100,000.
Reputational risks. Users won't wait for your site to come back online — they'll simply go to competitors. Recurring availability issues undermine customer trust and negatively affect brand perception. Restoring reputation after serious incidents can take months.
SEO and search rankings. Search engines like Google consider response time and site availability when ranking. Frequent downtime and slow performance lead to lower positions in search results, which means less organic traffic and potential customers.
Proactive problem solving. An uptime monitor lets you learn about problems before users report them. Instant notifications enable your team to quickly respond and resolve issues, minimizing business impact. Without monitoring, you might not know for hours that your site is down.
Performance analysis and SLA. The monitoring system collects uptime and response time history, allowing you to analyze trends, identify problem areas, and plan infrastructure improvements. For companies with SLA agreements, this is critical data for client reporting.
Monitoring critical dependencies. Modern applications depend on numerous external services: payment system APIs, CDNs, cloud providers, databases. An uptime monitor helps track not only your site but all critical dependencies, providing complete visibility into infrastructure health.
Installing an open source uptime monitor like Peekaping gives you complete control over monitoring, data privacy, and no subscription fees. It's an investment in your business reliability and your team's peace of mind.
Peekaping is an open-source monitoring system that allows you to track the health of websites, APIs, databases, Docker containers, and other services. Unlike many alternatives, Peekaping is built on API-first architecture principles and uses a modern technology stack.
Key advantages:
- High performance: Golang-based server consumes minimal RAM (from 50 MB)
- API-first approach: complete automation via RESTful API
- Storage flexibility: support for SQLite, PostgreSQL, and MongoDB
- Extensive monitoring capabilities: HTTP/HTTPS, TCP, ping, DNS, databases, Docker, gRPC, Kafka, and more
- Multiple notification channels: Telegram, Slack, Discord, Email, WhatsApp, PagerDuty, and others
- Beautiful status pages: public and private
- Open source: MIT license
Minimum requirements for installing Peekaping:
- CPU: 1 CPU core
- RAM: 512 MB RAM (1 GB recommended)
- Disk space: 1 GB free space
- OS: Linux (Ubuntu, Debian, CentOS), macOS, or Windows with Docker
- Software: Docker and Docker Compose (recommended installation method)
For production environments with a large number of monitors, recommended:
- 2+ CPU cores
- 2+ GB RAM
- 10+ GB disk space
The simplest way to run Peekaping is to use the Docker bundle image with embedded SQLite database. This option is ideal for testing and small deployments (up to 50 monitors).
If you don't have Docker installed yet, run the following commands:
For Ubuntu/Debian:
# Update package list
sudo apt update
# Install required dependencies
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
# Add official Docker GPG key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# Add Docker repository
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Install Docker
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io
# Add user to docker group
sudo usermod -aG docker $USER
# Activate changes (or re-login)
newgrp dockerFor CentOS/RHEL:
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y docker-ce docker-ce-cli containerd.io
sudo systemctl start docker
sudo systemctl enable docker
sudo usermod -aG docker $USERCreate a data directory and start the container:
# Create directory for data storage
mkdir -p ~/peekaping-data
# Run Peekaping
docker run -d --restart=always \
-p 8383:8383 \
-e DB_NAME=/app/data/peekaping.db \
-v ~/peekaping-data:/app/data \
--name peekaping \
0xfurai/peekaping-bundle-sqlite:latestParameter explanation:
- `-d` — run in background
- `--restart=always` — automatic container restart on failures or server reboot
- `-p 8383:8383` — port forwarding for port 8383 (web interface will be accessible on this port)
- `-e DB_NAME=/app/data/peekaping.db` — path to SQLite database file
- `-v ~/peekaping-data:/app/data` — mount local directory for data storage
- `--name peekaping` — container name
- `0xfurai/peekaping-bundle-sqlite:latest` — Peekaping Docker image
Check that the container is running:
docker ps | grep peekapingYou should see the running container.
Open your browser and navigate to:
http://your-server-ip:8383Or, if installing on a local machine:
http://localhost:8383On first launch, the system will automatically create an administrator account. Follow the on-screen instructions to complete setup.
For production environments and large deployments, PostgreSQL is recommended. This provides better performance, reliability, and scalability.
Create a `docker-compose.yml` file:
mkdir ~/peekaping
cd ~/peekaping
nano docker-compose.ymlInsert the following configuration:
version: '3.8'
services:
postgres:
image: postgres:15-alpine
container_name: peekaping-postgres
restart: always
environment:
POSTGRES_DB: peekaping
POSTGRES_USER: peekaping
POSTGRES_PASSWORD: your_secure_password
volumes:
- ./data/postgres:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U peekaping"]
interval: 10s
timeout: 5s
retries: 5
peekaping:
image: 0xfurai/peekaping-bundle-postgres:latest
container_name: peekaping
restart: always
ports:
- "8383:8383"
environment:
DB_HOST: postgres
DB_PORT: 5432
DB_NAME: peekaping
DB_USER: peekaping
DB_PASS: your_secure_password
depends_on:
postgres:
condition: service_healthy
volumes:
- ./data/peekaping:/app/data
volumes:
postgres_data:
peekaping_data:Important: Replace `your_secure_password` with your own secure password!
# Start all services
docker-compose up -d
# View logs
docker-compose logs -f
# Stop services
docker-compose downIf you prefer a NoSQL database, Peekaping also supports MongoDB.
version: '3.8'
services:
mongodb:
image: mongo:7
container_name: peekaping-mongo
restart: always
environment:
MONGO_INITDB_ROOT_USERNAME: peekaping
MONGO_INITDB_ROOT_PASSWORD: your_secure_password
MONGO_INITDB_DATABASE: peekaping
volumes:
- ./data/mongodb:/data/db
healthcheck:
test: echo 'db.runCommand("ping").ok' | mongosh localhost:27017/test --quiet
interval: 10s
timeout: 5s
retries: 5
peekaping:
image: 0xfurai/peekaping-bundle-mongo:latest
container_name: peekaping
restart: always
ports:
- "8383:8383"
environment:
DB_HOST: mongodb
DB_PORT: 27017
DB_NAME: peekaping
DB_USER: peekaping
DB_PASS: your_secure_password
depends_on:
mongodb:
condition: service_healthy
volumes:
- ./data/peekaping:/app/dataStarting is similar to the PostgreSQL variant:
docker-compose up -dOn first launch, Peekaping will prompt you to create an administrator account:
1. Open the web interface: `http://your-server:8383` 2. Enter administrator email 3. Create a secure password 4. Complete registration
After logging in, perform initial setup:
1. Profile settings - Go to Settings → Profile - Enter your name and contact information
2. Notification channel setup - Go to Settings → Notifications - Add at least one channel (e.g., Email or Telegram) - Test notification sending
3. Creating the first monitor - Click "Add Monitor" - Select monitoring type (e.g., HTTP) - Enter URL to monitor - Configure check interval - Select notification channels - Save monitor
For secure access to Peekaping, it's recommended to configure HTTPS via reverse proxy.
Install Nginx and Certbot:
sudo apt install -y nginx certbot python3-certbot-nginxCreate Nginx configuration (`/etc/nginx/sites-available/peekaping`):
server {
listen 80;
server_name peekaping.your-domain.com;
location / {
proxy_pass http://localhost:8383;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
}
}Activate configuration and obtain SSL certificate:
sudo ln -s /etc/nginx/sites-available/peekaping /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
sudo certbot --nginx -d peekaping.your-domain.comCaddy automatically obtains and renews SSL certificates.
Create `Caddyfile`:
peekaping.your-domain.com {
reverse_proxy localhost:8383
}Run Caddy:
docker run -d \
--name caddy \
-p 80:80 -p 443:443 \
-v $PWD/Caddyfile:/etc/caddy/Caddyfile \
-v caddy_data:/data \
caddy:latestTo update Peekaping to the latest version:
# Stop container
docker stop peekaping
# Remove old container
docker rm peekaping
# Pull new version
docker pull 0xfurai/peekaping-bundle-sqlite:latest
# Run with same parameters
docker run -d --restart=always \
-p 8383:8383 \
-e DB_NAME=/app/data/peekaping.db \
-v ~/peekaping-data:/app/data \
--name peekaping \
0xfurai/peekaping-bundle-sqlite:latestcd ~/peekaping
docker-compose pull
docker-compose down
docker-compose up -dRegular backups are critical for preserving monitoring data.
# Create backup
docker exec peekaping sqlite3 /app/data/peekaping.db ".backup /app/data/backup.db"
cp ~/peekaping-data/backup.db ~/backups/peekaping-$(date +%Y%m%d).dbdocker exec peekaping-postgres pg_dump -U peekaping peekaping > backup-$(date +%Y%m%d).sqlCreate script `/usr/local/bin/backup-peekaping.sh`:
#!/bin/bash
BACKUP_DIR="/backups/peekaping"
DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p $BACKUP_DIR
# For SQLite
docker exec peekaping sqlite3 /app/data/peekaping.db ".backup /app/data/backup.db"
cp ~/peekaping-data/backup.db $BACKUP_DIR/peekaping-$DATE.db
# Remove old backups (older than 30 days)
find $BACKUP_DIR -name "peekaping-*.db" -mtime +30 -delete
echo "Backup completed: $DATE"Make script executable and add to crontab:
chmod +x /usr/local/bin/backup-peekaping.sh
crontab -eAdd line for daily backup at 3:00 AM:
0 3 * * * /usr/local/bin/backup-peekaping.sh >> /var/log/peekaping-backup.log 2>&1Check logs:
docker logs peekapingOr for Docker Compose:
docker-compose logs peekapingMake sure the database is running and accessible:
# For PostgreSQL
docker exec peekaping-postgres pg_isready -U peekaping
# For MongoDB
docker exec peekaping-mongo mongosh --eval "db.adminCommand('ping')"1. Check that container is running: `docker ps` 2. Check that port 8383 is not occupied: `sudo netstat -tulpn | grep 8383` 3. Check firewall: `sudo ufw status` 4. Open port if needed: `sudo ufw allow 8383/tcp`
If Peekaping is consuming too many resources:
1. Reduce monitor check frequency 2. Increase timeout for slow services 3. Check number of concurrent monitors 4. Consider increasing server resources
# View container status
docker ps
# View logs in real-time
docker logs -f peekaping
# Restart container
docker restart peekaping
# Enter container for diagnostics
docker exec -it peekaping sh
# View resource usage
docker stats peekaping
# Clean unused images
docker system prune -aPeekaping is a powerful and flexible monitoring solution that's easy to install and configure. Thanks to its API-first approach and modern technology stack, the system delivers high performance with minimal resource consumption.
Main advantages of installing Peekaping:
- Quick installation (5-10 minutes)
- Minimal system requirements
- Database choice flexibility
- Complete control over data
- No licensing fees
- Active community and regular updates
Start with the simple SQLite variant for testing, then move to PostgreSQL for production environments. Don't forget about regular backups and system updates.
Useful links:
- Official website: https://peekaping.com
- Documentation: https://docs.peekaping.com
- GitHub repository: https://github.com/0xfurai/peekaping
- Docker Hub: https://hub.docker.com/u/0xfurai
- Live demo: https://demo.peekaping.com
Happy installing and reliable monitoring!