Why self-host Uptime Kuma on a VPS
SaaS monitoring services often bill by the number of monitors or the check frequency, and cap the interval at 1 or 5 minutes on free plans. By deploying Uptime Kuma on your own VPS, you monitor an unlimited number of sites, APIs, TCP ports, Docker containers or DNS servers, with intervals as short as 20 seconds. Hosting the probe on a VPS separate from your production servers is an advantage: if your application server goes down, the monitoring VPS stays up and triggers the alert. Uptime Kuma also offers a public status page that you can expose to your customers, and more than 90 notification channels (Telegram, email, Discord, webhook). Everything stays on your infrastructure, without sending your internal URLs to a third party.
The concrete benefits of this template
- Unlimited monitors: HTTP(s), TCP, ping, DNS, Docker containers, SSL certificates and page keywords.
- Multi-channel alerts (Telegram, email, Discord, Slack, webhook) with more than 90 integrations.
- Customizable public status page to share with your customers or your team.
- SSL certificate expiration monitoring so you're never caught off guard again.
- Uptime history and statistics kept locally, with no paid retention.
- Checks as frequent as every 20 seconds, impossible on most free plans.
Requirements to host it
Uptime Kuma is very frugal: a 1 vCPU VPS with 512 MB to 1 GB of RAM is more than enough to monitor several dozen monitors. The embedded SQLite database takes up little space; count on 2 to 5 GB of disk depending on the history retained. You need Docker installed, a domain or subdomain (status.mydomain.com) pointing to the VPS, and ports 80/443 open for the reverse proxy and SSL. For reliable monitoring, host Uptime Kuma preferably on a VPS separate from your production servers.
Deploy Uptime Kuma with Docker and SSL
Create the volume and start the container
On the VPS, create a persistent volume then start the container: docker run -d --restart=always -p 3001:3001 -v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:1. The interface is accessible on port 3001.
Configure the administrator account
Open http://IP_DU_VPS:3001 and create the admin account on first login. Choose a strong password: this interface will have access to all your monitored URLs.
Put a reverse proxy and SSL in front
Configure Nginx or Caddy to expose status.mydomain.com to localhost:3001. With Caddy, two lines are enough to get an automatic Let's Encrypt certificate: status.mydomain.com { reverse_proxy localhost:3001 }.
Add your first monitors
Create HTTP(s) monitors for your sites, a TCP monitor for your database, an SSL check to monitor certificate expiration, and a keyword to detect error pages served with HTTP 200.
Wire up notifications and the status page
In Settings > Notifications, add Telegram or email and test the delivery. Then enable a public status page grouping your customer services, with a dedicated domain name if needed.
To avoid false alerts during a minor network incident, configure the Retries field (for example 3 consecutive failures before alerting) and a suitable Heartbeat Interval. Combine it with a group notification: Uptime Kuma can send an aggregated message rather than one alert per monitor, which avoids flooding your Telegram channel during a global network outage that takes down ten services at once.
The official documentation
For advanced configuration and options specific to the tool, refer to the official Uptime Kuma documentation. This guide covers deployment on a VPS; the vendor's documentation remains the reference for fine-tuning, major updates and specific use cases.