How to Set Up Uptime Monitoring with Uptime Kuma on Elestio

How to Set Up Uptime Monitoring with Uptime Kuma on Elestio

You've got services running. A database here, an API there, maybe a marketing site on a separate box. Everything works great until it doesn't, and by the time you notice, your users have already noticed first.

Uptime Kuma fixes this. It's a self-hosted monitoring tool that checks your services every 20 seconds and alerts you the moment something goes down. Think UptimeRobot or Pingdom, but running on your own infrastructure with zero per-monitor fees.

What Uptime Kuma Monitors

Uptime Kuma isn't limited to pinging websites. It supports:

  • HTTP/HTTPS with status code and keyword checks
  • TCP ports for database and service health
  • Ping for basic host availability
  • DNS records to catch propagation issues
  • Docker containers directly via the Docker socket
  • SSL certificate expiry with configurable warning thresholds
  • Steam game servers (yes, really)

The monitoring interval goes as low as 20 seconds. For most services, 60 seconds is a good balance between responsiveness and resource usage.

Deploy on Elestio

The fastest way to get Uptime Kuma running is to deploy it on Elestio. Pick your provider, select a 2-CPU / 4GB RAM instance (starting at $16/month), and click deploy. You'll have a running instance with SSL, backups, and automatic updates in about 3 minutes.

Once deployed, open your instance URL and create your admin account. Uptime Kuma supports two-factor authentication out of the box, so enable that immediately.

Add Your First Monitor

From the dashboard, click Add New Monitor. Here's a practical example for monitoring a web application:

Monitor Type: HTTP(s)
Friendly Name: Production API
URL: https://api.yourapp.com/health
Heartbeat Interval: 60 seconds
Retries: 3
Accepted Status Codes: 200

The Retries setting is important. Set it to at least 2-3 to avoid false positives from momentary network hiccups. Uptime Kuma will only trigger an alert after all retries fail.

For a database, use TCP monitoring:

Monitor Type: TCP Port
Friendly Name: PostgreSQL Production
Hostname: your-db-host.example.com
Port: 5432
Heartbeat Interval: 60 seconds

Set Up Notifications

This is where Uptime Kuma shines. It supports 78+ notification services. Here are the three most common setups:

Slack: Go to your Slack workspace, create an Incoming Webhook (Apps > Incoming Webhooks > Add to Slack), pick your alert channel, and copy the webhook URL. In Uptime Kuma, go to Settings > Notifications > Setup Notification, select "Slack", paste the URL, and hit Test.

Discord: Open your Discord server settings, go to Integrations > Webhooks > Create Webhook, select the channel, and copy the URL. In Uptime Kuma, add a new notification with type "Discord" and paste the webhook URL.

Email (SMTP): Go to Settings > Notifications > Setup Notification, select "SMTP", and configure your mail server settings. If you're using Gmail, you'll need an App Password (not your regular password).

You can assign multiple notifications to each monitor. Your database goes down? Get a Slack ping and an email simultaneously.

Create a Status Page

Uptime Kuma includes a built-in status page feature that you can share with your team or customers. Go to Status Pages in the sidebar and create a new one.

Add your monitors to groups (like "API Services", "Databases", "Frontend"), customize the title and description, and you get a clean public page showing real-time status and uptime history. You can set a custom domain for it or use the built-in URL.

This replaces paid status page services like Statuspage.io or Instatus for most use cases.

Monitor Groups and Tags

As you add more monitors, organization becomes important. Use Tags to categorize monitors by environment (production, staging), type (database, API, frontend), or team ownership. Tags also show up in the dashboard as colored labels, making it easy to scan status at a glance.

Group related monitors together so you can quickly see if an entire service stack is healthy or if just one component is having issues.

Troubleshooting Common Issues

False positives on HTTP monitors: If you're getting alerts for services that are actually up, increase the retry count to 3-5 and set the timeout to 10 seconds or more. Some services are slow to respond under load but aren't actually down.

Docker socket monitoring not working: Make sure you've mounted the Docker socket in your Uptime Kuma container: -v /var/run/docker.sock:/var/run/docker.sock. On Elestio, this is configured automatically.

Notifications not sending: Test each notification channel independently from the Settings page. For SMTP, check that your email provider allows SMTP relay (Gmail requires App Passwords, Outlook requires enabling SMTP AUTH).

High memory usage with many monitors: If you're monitoring 100+ endpoints, consider upgrading to a 4-CPU / 8GB RAM instance ($30/month on Elestio). Each monitor maintains its own heartbeat history, which adds up.

Thanks for reading. See you in the next one.