Uptime Kuma is a free, self-hosted monitoring tool that checks whether your websites, APIs, servers, and self-hosted services are online and sends instant notifications when something goes down, as outlined in the Docker documentation. It monitors HTTP endpoints, TCP ports, DNS records, Docker containers, database connections, and game servers through a polished web dashboard that shows uptime percentages, response times, and incident history. Think of it as a self-hosted Uptime Robot or Pingdom that costs nothing and keeps all monitoring data on your own server.
If you run self-hosted services, you need to know when they crash. Without monitoring, you discover downtime when someone complains or when you try to use a service and find it broken. Uptime Kuma checks your services every 30 to 60 seconds and sends push notifications, emails, Telegram messages, Discord webhooks, or Slack alerts within seconds of detecting a failure. The entire setup takes 5 minutes with Docker, and the dashboard gives you professional-grade visibility into your infrastructure’s health.
Installing Uptime Kuma With Docker
Uptime Kuma runs as a single Docker container with an embedded SQLite database. No external dependencies, no additional services, no complex multi-container deployment. This simplicity is intentional and is one of the reasons it has become the most popular self-hosted monitoring tool, with over 60,000 GitHub stars.
Create a Docker Compose file defining the Uptime Kuma service. Map port 3001 from the container to your host (configurable to any port) and mount a data volume for persistent storage of your monitoring configuration, history, and database. The data volume is the only persistent state; backing it up preserves your entire monitoring setup.
Bring up the container with Docker Compose in detached mode. The first startup takes about 10 seconds. Access the web dashboard at your server’s IP address on port 3001. Create an admin account on first visit. The setup wizard does not exist because there is nothing to configure beyond your admin credentials. The dashboard is immediately ready for adding monitors.
Adding Your First Monitors
Click “Add New Monitor” in the top left of the dashboard. Uptime Kuma supports multiple monitor types, each designed for a specific checking method.
HTTP(S) Monitor: The most common type. Enter a URL, and Uptime Kuma sends an HTTP request at your configured interval. It checks for a successful response code (200 by default, configurable), optionally verifies SSL certificate validity, and measures response time. Use this for websites, web applications, APIs, and any service accessible via HTTP. Set the heartbeat interval to 60 seconds for most services or 30 seconds for critical services.
TCP Port Monitor: Checks whether a specific port is open and accepting connections. Use this for services that do not have HTTP endpoints: SSH servers (port 22), SMTP servers (port 25/587), database servers (PostgreSQL 5432, MySQL 3306), game servers, and custom TCP services. The monitor establishes a TCP connection and immediately closes it, confirming the service is listening.
Docker Container Monitor: Checks whether a specific Docker container is running. Instead of connecting to a network port, this monitor queries the Docker daemon directly. Useful for monitoring services that do not expose any port but must be running (background workers, cron job containers, database backup containers). Requires mounting the Docker socket in Uptime Kuma’s container.
DNS Monitor: Verifies that a DNS record resolves correctly. Useful for monitoring your domain’s DNS health, verifying that DNS changes have propagated, and alerting when a DNS record unexpectedly changes (potential sign of DNS hijacking). Configure the expected IP address, and Uptime Kuma alerts you if the resolved IP does not match.
Setting Up Notifications
Monitoring without notifications is just data collection. Uptime Kuma supports 90+ notification platforms, from simple email to complex webhook integrations. The most popular options for self-hosters:
Telegram: Create a Telegram bot through BotFather, get its API token, and create a chat or channel for alerts. In Uptime Kuma, add a Telegram notification with the bot token and chat ID. Telegram alerts arrive in under 2 seconds on your phone with sound and badge notifications. This is the most popular notification method in the self-hosting community because it is free, instant, and does not require an email server.
Discord Webhook: Create a webhook URL in your Discord server’s channel settings. Paste the URL into Uptime Kuma’s Discord notification configuration. Alerts appear as formatted messages in your Discord channel with service name, status, and response time. Ideal if you already use Discord for community or team communication.
Email (SMTP): Configure your SMTP server credentials (Gmail, Outlook, or a self-hosted mail server). Uptime Kuma sends formatted email notifications with incident details. Email is the most universal notification method but can be slower than push notifications due to mail server processing delays.
Ntfy: If you run ntfy (a self-hosted push notification server), Uptime Kuma integrates with it directly. This keeps your entire notification pipeline self-hosted with zero dependency on third-party services. Ntfy push notifications arrive on your phone with the same speed as Telegram.
Configure multiple notification methods for critical services. Send a Telegram alert for immediate awareness and an email for documentation. Uptime Kuma lets you assign different notification channels to different monitors, so low-priority services send only emails while critical services trigger Telegram, Discord, and email simultaneously.
Creating Status Pages
Uptime Kuma includes a built-in public status page feature that displays the current status and uptime history of your services on a clean, shareable webpage. This is useful for communicating service status to family members, team members, or users of services you host for others.
Create a status page from the dashboard, add monitors to it, organize them into groups (Infrastructure, Applications, External Services), and customize the page title and description. The status page shows green (operational), yellow (degraded), and red (down) indicators for each monitor, along with a 90-day uptime history bar.
Status pages can be password-protected for private use or left public. Share the URL with anyone who needs to check service status. When multiple people rely on your self-hosted services, a status page eliminates the “is the server down or is it just me?” questions.
Monitoring Docker Containers Directly
For Docker-based home servers, Uptime Kuma’s Docker container monitor provides deeper visibility than HTTP or TCP monitors alone. While an HTTP monitor tells you the web interface is responding, a Docker container monitor tells you the container itself is running, regardless of whether its web interface works.
To enable Docker monitoring, mount the Docker socket in Uptime Kuma’s container by adding the socket path to the volumes section of your Docker Compose file. After restarting, the Docker Container monitor type becomes available. Select any running container from a dropdown list and Uptime Kuma monitors its running state.
Combine Docker container monitors with HTTP monitors for comprehensive coverage. A container might be “running” according to Docker but stuck in a crash loop, unresponsive, or serving errors. The Docker monitor catches complete container crashes, while the HTTP monitor catches application-level failures. Together, they cover every failure mode.
Advanced Monitoring: Keywords, Certificates, and Response Time
Beyond basic up/down monitoring, Uptime Kuma checks for specific conditions that indicate problems before a complete outage.
Keyword monitoring: Check whether an HTTP response body contains (or does not contain) a specific keyword. If your homepage should always display “Welcome” but starts showing an error page, keyword monitoring detects the content change even though the HTTP status code is still 200. This catches application errors that return a valid HTTP response with incorrect content.
SSL certificate expiration: Uptime Kuma tracks SSL certificate expiration dates and alerts you before they expire. Configure alerts at 30, 14, and 7 days before expiration. Expired SSL certificates cause browser warnings that block visitors from your site, so early notification prevents downtime caused by forgotten certificate renewals.
Response time thresholds: Set a maximum acceptable response time for each monitor. If a normally-fast service starts responding slowly (indicating server overload, database issues, or network problems), Uptime Kuma flags it as degraded before it fails completely. This early warning lets you investigate and fix performance issues proactively.
Is Uptime Kuma free?
Uptime Kuma is completely free and open-source under the MIT license. No paid tiers, no feature limits, no monitor count restrictions. You can monitor unlimited services with unlimited notification channels. The project is community-funded through GitHub Sponsors and donations.
How many services can Uptime Kuma monitor?
There is no built-in limit. Users report monitoring 200+ services on modest hardware (Raspberry Pi 4, 2GB RAM) without performance issues. Each monitor consumes minimal resources since it only sends small HTTP requests or TCP connection checks at configured intervals. SQLite handles the historical data storage efficiently.
Can Uptime Kuma monitor services outside my network?
Yes. Uptime Kuma monitors any URL or IP address reachable from the server it runs on. If your server has internet access, it can monitor external websites, cloud services, API endpoints, and any public-facing service. It can also monitor internal services on your local network simultaneously.
Does Uptime Kuma have a mobile app?
No dedicated mobile app, but the web dashboard is fully responsive and works well on mobile browsers. Pin the dashboard URL to your phone’s home screen for an app-like experience. Push notifications come through the configured notification channels (Telegram, Discord, ntfy) rather than a dedicated app.
How does Uptime Kuma compare to Uptime Robot?
Uptime Robot’s free tier limits you to 50 monitors with 5-minute intervals. Uptime Kuma has no monitor limit and supports 20-second intervals. Uptime Kuma also monitors Docker containers, TCP ports, and DNS records, which Uptime Robot’s free tier does not. The tradeoff: Uptime Kuma requires self-hosting, while Uptime Robot is a managed cloud service.




