Uptime Kuma - Getting Started Guide
Uptime Kuma is a self-hosted monitoring tool that lets you track the uptime of your websites, APIs, DNS and other services with a clean dashboard and instant notifications. This server comes with Uptime Kuma, Nginx and PM2 pre-installed - just open the web interface and create your admin account.
Step 1 - Verify Uptime Kuma Works
Your server's IP address and root password are shown on the Server Details page in your client panel. Open your browser and go to:
http://your.server.ip
On first access, Uptime Kuma will display a registration form. Choose a username and password, then click Create.
If you placed the server behind a VyOS router on a private network, either configure port forwarding (ports 80 and 443) to access Uptime Kuma from the internet, or connect over a VPN and reach it on the server's private IP.
Step 2 - Add Your First Monitor
After logging in, click Add New Monitor on the dashboard:
- Monitor Type - HTTP(s), TCP, Ping, DNS, and more
- Friendly Name - a descriptive name for the monitor
- URL / Hostname - the target to monitor
- Heartbeat Interval - how often to check (default: 60 seconds)
Click Save and monitoring starts immediately. Add notifications (email, Telegram, Slack, Discord and many more) under Settings > Notifications.
Step 3 - Configure Domain and SSL (Optional)
To access Uptime Kuma via a domain with HTTPS, create a DNS A record pointing your domain to the server IP. Then SSH in and run:
ssh root@your.server.ip
sed -i 's/server_name _;/server_name your-domain.com;/' /etc/nginx/sites-available/uptime-kuma
nginx -t && systemctl reload nginx
apt install -y certbot python3-certbot-nginx
certbot --nginx -d your-domain.com
Certbot will configure SSL and set up auto-renewal. Your dashboard will be available at https://your-domain.com.
Post-Installation
Fail2Ban - Brute-Force Protection
Your server comes with Fail2Ban pre-configured to protect SSH from brute-force attacks.
| Rule | Max Attempts | Ban Duration |
|---|---|---|
| SSH | 5 failed logins | 10 minutes |
Useful commands:
# Check banned IPs
fail2ban-client status sshd
# Unban an IP
fail2ban-client set sshd unbanip 1.2.3.4
If you accidentally lock yourself out, connect via VNC console in your client panel and unban your IP.
Service Management
Uptime Kuma runs under PM2, which keeps it running and auto-restarts after crashes or reboots.
# Check status
pm2 list
# View logs
pm2 logs uptime-kuma
# Restart
pm2 restart uptime-kuma
# Nginx reverse proxy
systemctl status nginx
systemctl reload nginx
Backups
All data (monitors, notifications, status history) is stored in SQLite. You can export/import from the web interface (Settings > Backup) or back up via SSH:
cp -r /opt/uptime-kuma/data /root/uptime-kuma-backup-$(date +%F)
Updates
# Update Uptime Kuma
cd /opt/uptime-kuma
pm2 stop uptime-kuma
git fetch --all
git checkout $(git describe --tags --abbrev=0 origin/master)
npm install --production
npm run download-dist
pm2 restart uptime-kuma
pm2 save
# Update OS packages
apt update && apt upgrade -y
Software Included
| Component | Version |
|---|---|
| Ubuntu | 24.04 LTS |
| Uptime Kuma | 2.x |
| Node.js | 22.x LTS |
| PM2 | 6.x |
| Nginx | 1.24 |
| Fail2Ban | 1.0.2 |
Troubleshooting
| Problem | Solution |
|---|---|
| Web interface not loading | Check status: pm2 list. Restart if needed: pm2 restart uptime-kuma |
| 502 Bad Gateway | Uptime Kuma may not be running on port 3001. Check logs: pm2 logs uptime-kuma |
| Notifications not sending | Go to Settings > Notifications and use the Test button to verify your notification channel |
| High memory usage | Increase heartbeat interval or clear old status history under Settings > General |
| Forgot admin password | SSH in and reset: cd /opt/uptime-kuma && npm run reset-password |
| Blocked by Fail2Ban | Use VNC console in your client panel to unban your IP |
| Forgot root password | Use VNC console in your client panel to reset it |