You can set up reliable VPS monitoring with Telegram notifications for uptime, certificate, and basic metric tracking in under 30 minutes by using a Docker container for Uptime Kuma and configuring a webhook. This allows you to receive a server down notification or other critical alerts before users report them, ensuring proactive infrastructure management.
What is VPS Monitoring and Why Is It Crucial?
Owning your own VPS or dedicated server gives you full control over your infrastructure but also places the responsibility for its stable operation on you. One of the most frustrating scenarios for any administrator or project owner is when you learn about server issues (such as downtime) from your users, rather than from your monitoring system. This not only erodes trust in your service but often means downtime lasts longer than it should.
VPS monitoring is the continuous process of collecting and analyzing data about the state of your server and the services running on it. It includes checking availability (uptime), performance (CPU, RAM, disk usage), and the correct functioning of individual components (e.g., SSL certificate expiry). Without such monitoring, you are essentially managing your infrastructure blindly, which inevitably leads to unwelcome surprises and losses.
Why Discovering Downtime from Users Is a Major Problem
When users are the first to report that your website or service is unavailable, it's a direct indicator of absent or ineffective monitoring. This isn't just an inconvenience; it's a serious blow to your reputation and potential financial losses. Every minute of downtime means lost revenue, dissatisfied customers, and declining search engine rankings. Proactive monitoring minimizes these risks, enabling you to react quickly to problems and even anticipate them, preventing outages before they impact end-users.
Types of Monitoring: Uptime vs. Metrics
Monitoring can generally be divided into two main categories:
- Uptime Monitoring: Checks whether your server or a specific service responds at a given address and port. This is the basic level that informs you about "downtime" or unavailability. This is where Uptime Kuma, which we'll discuss in detail below, comes in handy.
- Performance Monitoring: Collects data on the server's internal state: CPU load, RAM usage, free disk space, network activity, number of active processes, and so on. These metrics help you understand the cause of an outage or identify potential problems before they occur (e.g., a rapidly filling disk). Netdata is excellent for this purpose.
An optimal strategy combines both types of monitoring to get a complete picture of your infrastructure's health.
Why Choose Self-Hosted Uptime Kuma for Server Monitoring?
Choosing a self-hosted monitoring solution like Uptime Kuma is particularly relevant for VPS and dedicated server owners. It provides full control over your data, avoids reliance on third-party cloud services, and often reduces costs, especially when monitoring a large number of parameters.
Key Benefits of Uptime Kuma: Simplicity, Open Source, and Alerting
Uptime Kuma is a free, open-source uptime monitoring tool that runs on your own server. Its popularity stems from several key advantages:
- Lightweight and Simple: Uptime Kuma is written in Node.js and consumes minimal resources. Its installation is greatly simplified thanks to Docker.
- Intuitive Interface: The web interface is very user-friendly, allowing even beginners to quickly set up monitoring.
- Wide Range of Checks: Supports HTTP(s), TCP, Ping, DNS, Docker containers, Push notifications, and more.
- Diverse Notifications: Integrates with Telegram, Discord, Slack, Email, Webhooks, and other services. This allows you to set up Telegram server alerts in just a few minutes.
- Graphs and History: Maintains a history of uptime and latency, presenting it in a convenient graphical format.
If you're looking for a reliable and flexible solution to monitor the availability of your services, Uptime Kuma is one of the best self-hosting options. For a more in-depth comparison and other self-hosted solutions, you can find our article here: Self-hosted Uptime Monitoring 2026: Uptime Kuma and What to Run Alongside It.
Self-Hosted Uptime Kuma vs. Cloud Monitoring Solutions
Cloud monitoring services (such as UptimeRobot, Statuscake, and others) offer convenience and don't require deploying your own server for monitoring. However, they have their drawbacks:
- Cost: Free tiers are usually heavily restricted in the number and frequency of checks. You have to pay for extended features, and these costs can quickly add up.
- Data Privacy: All data about your server's status is stored with a third-party provider.
- Dependency: You are entirely dependent on the stability and functionality of the chosen cloud service.
Self-hosting with Uptime Kuma gives you full control, flexibility, and no subscription fees for the tool itself. You only need a minimal VPS to host it, making this solution extremely economical.
Looking for a reliable server for your projects?
VPS from $10/month and dedicated servers from $9/month with NVMe, DDoS protection, and 24/7 support.
View Offers →How to Install Uptime Kuma on a VPS with Docker
The easiest and most recommended way to install Uptime Kuma is by using Docker. Ensure that Docker and Docker Compose are installed on your VPS. If not, install them first:
Server Preparation: Installing Docker and Docker Compose
First, update packages and install necessary dependencies:
sudo apt update && sudo apt upgrade -y
sudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-release
Next, add Docker's official GPG key:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
Add the Docker repository:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Install Docker Engine, CLI, and Containerd:
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io
Add your user to the docker group to avoid using sudo every time:
sudo usermod -aG docker $USER
newgrp docker
Verify Docker installation:
docker run hello-world
Install Docker Compose (check the latest version on GitHub Docker Compose):
sudo curl -L "https://github.com/docker/compose/releases/download/v2.24.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version
Deploying Uptime Kuma in Docker
Create a directory for Uptime Kuma and the docker-compose.yml file:
mkdir uptime-kuma
cd uptime-kuma
nano docker-compose.yml
Insert the following content into docker-compose.yml:
version: '3.8'
services:
uptime-kuma:
image: louislam/uptime-kuma:1
container_name: uptime-kuma
volumes:
- ./data:/app/data
ports:
- "3001:3001" # Change port 3001:3001 if 3001 is already in use
restart: always
Save the file (Ctrl+O, Enter, Ctrl+X) and start the container:
docker-compose up -d
Uptime Kuma will be accessible at http://YOUR_SERVER_IP:3001. Upon first access, you will be prompted to create an administrator account. Be sure to use a strong password.
Initial Setup and Security Considerations
After installation and account creation, ensure your Uptime Kuma instance is secured:
- Password: Use a complex, unique password for the administrator account.
- Firewall: Restrict access to port 3001 only from trusted IP addresses or use a reverse proxy (e.g., Nginx or Caddy) to add SSL encryption and authentication.
- Updates: Periodically update the Uptime Kuma image to receive security fixes and new features. To do this, simply run
docker-compose pull, thendocker-compose up -d.
Configuring Monitors in Uptime Kuma: From HTTP to Certificates
Now that Uptime Kuma is running, it's time to add your services for monitoring. The interface is intuitive: click "Add New Monitor" and select the check type.
Monitoring HTTP/HTTPS and TCP Ports
These are the most basic and frequently used check types:
- HTTP(s): For monitoring websites and web applications.
You can also specify an expected HTTP status code (e.g., 200 OK) or even text that should be present on the page.Monitor Type: HTTP(s) Friendly Name: My Website URL: https://example.com Interval: 60 (seconds) - TCP Port: For monitoring the availability of specific services running on certain ports (SSH, FTP, database, mail server, etc.).
Similarly, you can add ports for MySQL (3306), PostgreSQL (5432), Redis (6379), and any other services.Monitor Type: TCP Port Friendly Name: SSH Server Host: YOUR_SERVER_IP Port: 22 Interval: 60 (seconds)
How to Set Up Server Downtime Notifications
Uptime Kuma allows you to configure notifications for each monitor. If a service becomes unavailable, you will instantly receive a server down notification. To do this, during the monitor creation or editing process, select your previously configured notification service (e.g., Telegram) in the "Notification" section.
You can configure the conditions under which notifications are sent: on downtime, on recovery, on slow response, etc. It's recommended to set up notifications for both downtime and recovery to be aware of the full problem cycle.
Monitoring SSL Certificate and Domain Expiry
One common cause of website unavailability is an expired SSL certificate. Uptime Kuma can track this:
- SSL Certificate:
Uptime Kuma will warn you in advance, giving you time to renew the certificate.Monitor Type: SSL Certificate Friendly Name: SSL Example.com Hostname: example.com Interval: 3600 (seconds, or once per hour) Expiry Notification: 7 (days before expiry) - Domain Expiry: Allows you to track the expiry date of the domain name itself.
This helps prevent domain loss due to expiration.Monitor Type: Domain Expiry Friendly Name: Example.com Domain Domain Name: example.com Interval: 86400 (seconds, or once per day) Expiry Notification: 30 (days before expiry)
How to Set Up Telegram Server Alerts: Notification Integration
Telegram is one of the most convenient channels for receiving prompt notifications. Setting up Telegram server alerts through Uptime Kuma takes just a few steps.
Creating a Telegram Bot and Chat
- Create a new bot: Open Telegram and search for @BotFather. Send it the command
/newbot. Follow the instructions, give your bot a name (e.g., "Valebyte Monitor Bot") and a username (e.g., "valebyte_monitor_bot"). BotFather will provide you with an API Token. Save it; you'll need it later. - Get your Chat ID: There are several ways. The simplest is to find the @userinfobot (or @get_id_bot) bot in Telegram, send it any message, and it will show your Chat ID. If you want to receive notifications in a group, first add your new bot to that group, make it an administrator (with the right to send messages), and then send any message to the group. Afterward, use @get_id_bot or a similar bot to get the group's Chat ID (it will be negative, e.g.,
-123456789).
Connecting Telegram to Uptime Kuma
- In Uptime Kuma, go to "Settings" (the gear icon in the bottom left corner).
- Select "Notification Providers".
- Click "Add Notification Provider".
- Choose "Telegram" from the list.
- Fill in the fields:
- Friendly Name: Telegram Alerts (or any other descriptive name)
- Bot Token: Paste the API Token received from @BotFather.
- Chat ID: Paste the Chat ID you obtained for yourself or your group.
- Click "Test" to verify the connection. If everything is configured correctly, you will receive a test message in Telegram.
- Click "Save".
You can now select this Telegram notification provider for any of your monitors. If you're interested in other ways to use Telegram on a VPS, you might find our article helpful: Telegram MTProto proxy on VPS: mtg installation in 5 minutes.
Testing Notifications
After saving the notification provider, go to any of your monitors. Edit it and check the box next to your "Telegram Alerts" in the "Notification" section. You can also force a notification by manually changing the monitor's status or temporarily "taking down" the service it monitors (e.g., stopping a web server for a few seconds). Confirm that the message arrives in Telegram.
Advanced VPS Disk and Memory Monitoring with Netdata
Uptime Kuma excels at availability monitoring, but for in-depth analysis of server status (CPU load, RAM usage, free disk space, network traffic), a more powerful tool is needed. This is where Netdata comes in — an open-source, real-time monitoring system that collects thousands of metrics per second and visualizes them in a stunning web interface.
Installing Netdata on a VPS: A Quick Guide
Netdata is renowned for its ease of installation. For most Linux systems, a single command is sufficient:
wget -O /tmp/netdata-installer.sh https://my-netdata.io/kickstart.sh && sh /tmp/netdata-installer.sh --dont-wait --install-dependencies
This script will install Netdata with all necessary dependencies. After installation, Netdata will be accessible at http://YOUR_SERVER_IP:19999. Ensure that port 19999 is open in your firewall, or configure a reverse proxy. You can read more about Netdata installation and configuration in our article: Netdata on VPS: installation, configuration, and maintenance.
Configuring Alerts for VPS Disk and Memory Monitoring
Netdata comes with hundreds of pre-configured alerts covering most typical issues: high CPU load, memory exhaustion, low disk space, high network latency, etc. You can configure where Netdata sends these alerts. Netdata supports numerous notification methods, including Telegram.
To configure Telegram notifications in Netdata:
- Edit the Netdata configuration file for notifications:
sudo nano /etc/netdata/health_alarm_notify.conf - Find the
[telegram]section and uncomment or add the following lines:
Use the same Bot Token and Chat ID as for Uptime Kuma, or create a separate bot.# for telegram notifications SEND_TELEGRAM="YES" TELEGRAM_BOT_TOKEN="YOUR_BOT_API_TOKEN" TELEGRAM_CHAT_ID="YOUR_CHAT_ID" - Save the file and restart Netdata:
sudo systemctl restart netdata
Now, when any threshold is triggered (for example, if VPS disk and memory monitoring shows critical usage), you will receive a notification in Telegram. Netdata provides very detailed alerts that can help you quickly pinpoint the root cause of a problem.
Essential Metrics to Monitor: Disk Space, Memory, Load Average, Certificate Expiry, and Backup Status
To ensure stable server operation, it is critical to monitor the following parameters:
- Free Disk Space: Disk full is a common cause of application failure. Set an alert when less than 10-15% free space remains.
- RAM Usage: High RAM consumption can indicate memory leaks or resource shortages. Alert when 80-90% usage is reached.
- Load Average: An indicator of CPU utilization. High load without apparent reasons requires attention.
- SSL Certificate and Domain Expiry: As mentioned, Uptime Kuma handles this excellently, preventing downtime due to expired terms.
- Backup Operation: It's equally important to ensure your backups are created successfully. You can configure Uptime Kuma to monitor the HTTP status of a webhook called after a successful backup, or use a Push monitor where your backup script sends a "heartbeat." If no "heartbeat" is received within a set time, Uptime Kuma will send an alert.
- Availability of Critical Ports/Services: SSH (22), web server (80/443), database (3306/5432), etc.
Why Host Your Monitoring System on a Separate Server?
Hosting your monitoring system on the same server it's meant to monitor is a fundamental mistake that negates all its benefits. Imagine this scenario: your primary server crashes due to a hardware failure, disk overload, or network issue. If Uptime Kuma or Netdata are installed on that same server, they will also stop working. As a result, you won't receive a server down notification because the monitor itself went down with it.
The principle of "independence" or "out-of-band monitoring" dictates that the monitoring system should be hosted on entirely independent infrastructure. This ensures that even if the primary server completely fails, your monitor will continue to operate and send you an alert. A separate, even minimal, VPS is ideal for this purpose.
VPS Monitoring Resource Consumption and Server Requirements
Uptime Kuma and Netdata are relatively lightweight solutions, but their resource consumption depends on the number of services monitored and the frequency of checks.
Uptime Kuma and Netdata Resource Usage
- Uptime Kuma: For monitoring 10-20 services (HTTP, TCP, SSL), Uptime Kuma consumes around 50-100 MB RAM and minimal CPU. It is a very economical tool.
- Netdata: Netdata is more resource-intensive as it collects thousands of metrics in real-time. For monitoring a single server, Netdata consumes about 150-300 MB RAM and around 1-5% CPU (depending on server activity). If you plan to use Netdata for centralized monitoring of multiple servers (via parent/child mode), the requirements for the central node will be higher.
To host Uptime Kuma and Netdata on a single minimal VPS that monitors several of your other servers, slightly more resources will be required.
Recommended VPS Specifications for Monitoring
For 10-20 monitored services, 1 vCPU, 1 GB RAM, and a 20 GB NVMe disk are sufficient.
| Number of Monitors/Services | vCPU | RAM | Disk | Network Port | Approximate Valebyte Price (February 2024) |
|---|---|---|---|---|---|
| Up to 20 (Uptime Kuma) | 1 | 512 MB - 1 GB | 10-20 GB NVMe | 1 Gbps | From $3-5/month |
| Up to 50 (Uptime Kuma + Netdata for 1-2 servers) | 1-2 | 1-2 GB | 20-40 GB NVMe | 1 Gbps | From $5-10/month |
| Up to 100+ (Uptime Kuma + Netdata for 3-5 servers) | 2-4 | 2-4 GB | 40-80 GB NVMe | 1 Gbps | From $10-20/month |
A minimal VPS from Valebyte with 1 vCPU, 1 GB RAM, and a 20 GB NVMe disk will be more than sufficient for comfortably running Uptime Kuma and Netdata, monitoring up to several dozen services. This is an investment in stability and peace of mind that will pay off very quickly.
Frequently Asked Questions
1. Can Uptime Kuma be used to monitor local services?
Yes, Uptime Kuma can monitor local services if it is installed on the same server or has access to them via the local network. For example, you can configure a TCP port 8080 check for a local Java application. However, remember the principle of independence: for critical services, it's better to have external monitoring from a separate VPS.
2. What notification types, besides Telegram, does Uptime Kuma support?
Uptime Kuma supports over 90 different notification types. These include popular messengers like Discord, Slack, Microsoft Teams, as well as email, SMS (via gateways), Pushbullet, Pushover, Webhooks, and many others. You can configure multiple notification providers simultaneously and choose which one to use for each monitor.
3. How much disk space will Uptime Kuma and Netdata occupy?
Uptime Kuma itself takes up very little space, around 100-200 MB for historical data. Netdata, collecting a vast number of metrics, can take up more, but by default, it's configured to store data for a few hours or days (typically up to 1-2 GB). For longer data retention, Netdata can be integrated with external databases like Graphite or Prometheus, but for basic monitoring on a separate VPS, a 20 GB NVMe disk will be more than sufficient.
4. How often does Uptime Kuma check services?
The check frequency (interval) can be configured individually for each monitor. The minimum interval is 10 seconds, but for most websites and services, 30-60 seconds is sufficient. For SSL certificate or domain checks, the interval can be significantly longer—once per hour or once per day—to avoid unnecessary load.
5. How do I configure Uptime Kuma to monitor backups?
To monitor backups, you can use the "Push" monitor type. Your backup script, upon successful completion, should make an HTTP request to a special URL that Uptime Kuma generates for this monitor. If Uptime Kuma does not receive this "push" within a set time (e.g., 24 hours), it will send a notification that the backup likely failed. This is a very effective way to ensure your backups are always up-to-date.
Conclusion
Setting up self-hosted VPS monitoring with Uptime Kuma and Netdata on a separate server is not a luxury but a necessity for anyone serious about the stability of their online projects. The investment in a minimal VPS for monitoring will pay off many times over, preventing downtime, protecting your reputation, and giving you peace of mind. Start with Uptime Kuma for basic uptime and Telegram alerts, then expand your capabilities with Netdata for in-depth metric analysis.
NVMe VPS with 60-second activation: full root access, 20+ locations, pay with card or crypto.
Choose your plan