Skip to Content

Self-Host Uptime Kuma: Monitor Everything in 15 Minutes

Self-Host Uptime Kuma: Monitor Everything in 15 Minutes

Downtime is expensive. Whether you are running a personal homelab or a production VPS, you need to know when services go down before your users do. Uptime Kuma is a lightweight, self-hosted monitoring tool that checks HTTP(S), TCP, ping, and more with a clean web UI and instant notifications.

In this guide, you will deploy Uptime Kuma with Docker, configure monitors, and set up alerts so you never miss an outage.

Why Self-Host Uptime Kuma?

  • Privacy: Your monitoring data stays on your infrastructure.
  • Cost: Free and open-source with no per-monitor limits.
  • Flexibility: Supports 20+ notification channels including Telegram, Discord, Slack, email, and webhooks.
  • Speed: Lightweight enough to run on a 512 MB VPS.

Prerequisites

  • A VPS or server with Docker and Docker Compose installed.
  • Minimum 512 MB RAM and 1 vCPU.
  • A domain or subdomain (optional but recommended for HTTPS).

Step 1: Create the Docker Compose File

Create a directory for Uptime Kuma and add a docker-compose.yml file:

mkdir -p ~/uptime-kuma && cd ~/uptime-kumacat <<'DC' > docker-compose.ymlservices:  uptime-kuma:    image: louislam/uptime-kuma:1    container_name: uptime-kuma    volumes:      - ./data:/app/data    ports:      - '3001:3001'    restart: unless-stoppedDC

Step 2: Start the Container

Run the following command to start Uptime Kuma:

docker compose up -d

Wait about 10 seconds for the container to initialize.

Step 3: Access the Web UI

Open your browser and navigate to:

http://your-server-ip:3001

On first launch, you will be prompted to create an admin account. Choose a strong username and password.

Step 4: Add Your First Monitor

Click Add New Monitor and configure the following:

  • Monitor Type: HTTP(s)
  • Friendly Name: Sysbrix Website
  • URL: https://sysbrix.com
  • Heartbeat Interval: 60 seconds
  • Retries: 2

Click Save and Uptime Kuma will immediately start checking your site.

Step 5: Configure Notifications

Go to Settings > Notifications and add a notification channel. For example, to add a Telegram bot:

  1. Create a bot via @BotFather and copy the token.
  2. In Uptime Kuma, select Telegram as the notification type.
  3. Paste the bot token and your chat ID.
  4. Click Test to verify, then Save.

You can add multiple channels for redundancy.

Step 6: Set Up a Reverse Proxy (Optional)

For HTTPS and a custom domain, use Traefik or Nginx. Here is a Traefik example:

labels:  - 'traefik.enable=true'  - 'traefik.http.routers.uptime.rule=Host(\`uptime.yourdomain.com\`)'  - 'traefik.http.routers.uptime.tls.certresolver=letsencrypt'  - 'traefik.http.services.uptime.loadbalancer.server.port=3001'

Add these labels to your docker-compose.yml under the uptime-kuma service if Traefik is already running.

Verification

  • Visit the dashboard and confirm the monitor shows Up.
  • Stop the monitored service temporarily and verify you receive a notification.
  • Check the event log for heartbeat history and response times.

Next Steps

  • Add monitors for databases, APIs, and internal services.
  • Set up status pages for public visibility.
  • Integrate with Prometheus for metrics aggregation.
  • Explore Docker health checks for self-healing containers.

Monitoring is the foundation of reliable infrastructure. With Uptime Kuma running, you have visibility into every critical service without relying on third-party SaaS.