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:
| Type | Use |
|---|---|
| HTTP(s) | Monitor a website (status code) |
| TCP Port | Check if a port is open |
| Ping | Simple ICMP ping |
| DNS | DNS resolution |
| Push | Server sends heartbeat (for cron jobs) |
| Docker Container | Status 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
Gerelateerde artikelen
