Uptime Kuma - Monitoring with Notifications

Uptime Kuma is a self-hosted tool to monitor the availability of websites, TCP ports, ping and services. It offers a visual dashboard and notifications on over 90 channels (Telegram, Discord, email, Slack, etc.).

02

Installation with Docker (recommended)

bash
docker run -d \
  --restart unless-stopped \
  --name uptime-kuma \
  -p 3001:3001 \
  -v uptime-kuma-data:/app/data \
  louislam/uptime-kuma:latest

Access at http://SERVER_IP:3001 and create the admin account on first access.

With Docker Compose

yaml
# docker-compose.yml
services:
  uptime-kuma:
    image: louislam/uptime-kuma:latest
    container_name: uptime-kuma
    restart: unless-stopped
    ports:
      - "3001:3001"
    volumes:
      - uptime-kuma-data:/app/data

volumes:
  uptime-kuma-data:
bash
docker compose up -d
03

Installation without Docker (Node.js)

bash
# Install Node.js 18+
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo bash -
sudo apt install nodejs -y

# Install Uptime Kuma
cd /opt
sudo git clone https://github.com/louislam/uptime-kuma.git
cd uptime-kuma
sudo npm install --production

# Create systemd service
sudo nano /etc/systemd/system/uptime-kuma.service
ini
[Unit]
Description=Uptime Kuma
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/opt/uptime-kuma
ExecStart=/usr/bin/node server/server.js
Restart=always

[Install]
WantedBy=multi-user.target
bash
sudo systemctl enable uptime-kuma
sudo systemctl start uptime-kuma
04

Secure access via Nginx

bash
sudo nano /etc/nginx/sites-available/uptime-kuma
nginx
server {
    listen 80;
    server_name status.yourdomain.com;

    location / {
        proxy_pass http://127.0.0.1:3001;
        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_cache_bypass $http_upgrade;
    }
}
bash
sudo ln -s /etc/nginx/sites-available/uptime-kuma /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
sudo certbot --nginx -d status.yourdomain.com
05

Add monitors

From the web dashboard → Add New Monitor:

TypeUse
HTTP(s)Monitor a website (status code)
TCP PortCheck if a port is open
PingSimple ICMP ping
DNSDNS resolution
PushServer sends heartbeat (for cron jobs)
Docker ContainerStatus of a Docker container
Game Server (Steam)Gaming server status

Example: monitor a website

Example: monitor a port (e.g. MySQL)

  • Type: HTTP(s)
  • URL: https://yoursite.com
  • Heartbeat Interval: 60 seconds
  • Retries: 3
  • Type: TCP Port
  • Hostname: localhost
  • Port: 3306
06

Configure Telegram notifications

To find the Chat ID: send a message to the bot and go to https://api.telegram.org/bot<TOKEN>/getUpdates

  • Create a bot with @BotFather: /newbot
  • Copy the bot token
  • In Uptime Kuma → Settings → Notifications → Add Notification
  • Type: Telegram
  • Enter the Bot Token and Chat ID
07

Discord notifications

  • In Discord server: Channel Settings → Integrations → Webhook → Create Webhook
  • Copy the webhook URL
  • In Uptime Kuma → Settings → Notifications → Add Notification
  • Type: Discord, paste the webhook URL
08

Public status page

Uptime Kuma can generate a public status page (like statuspage.io):

  • Status Pages → New Status Page
  • Add the domain (e.g. status.yoursite.com)
  • Select which monitors to show
  • Customize title and description
09

Update Uptime Kuma (Docker)

bash
docker pull louislam/uptime-kuma:latest
docker stop uptime-kuma
docker rm uptime-kuma
# Re-run the docker run with the same configuration
docker run -d --restart unless-stopped --name uptime-kuma \
  -p 3001:3001 -v uptime-kuma-data:/app/data louislam/uptime-kuma:latest

DeluxHost, founded in 2023, offers high-quality hosting solutions for various digital needs. We provide shared hosting, VPS, and dedicated servers with advanced security and global data centers.

© DeluxHost, All rights reserved. | VAT Number : IT17734661006
All Systems Operational