Skip to content

Deploying an Uptime-Kuma App

Introduction

Uptime-Kuma is a self-hosted monitoring dashboard for HTTP, TCP, ICMP, and more. This guide shows how to containerize Uptime-Kuma, persist its data, and deploy it to Klutch.sh over HTTP.

Prerequisites

  • GitHub repository containing your Dockerfile.
  • Klutch.sh project ready in klutch.sh/app.

Project structure

.
└── Dockerfile

Sample Dockerfile

FROM louislam/uptime-kuma:latest
# Default port
ENV PORT=3001
EXPOSE 3001
  • PORT – internal port (default 3001)
  • NODE_ENV=production
  • UPTIME_KUMA_DISABLE_FRAME_SAMEORIGIN=true to prevent clickjacking if needed

Persistence

All monitoring data is stored locally. Attach a volume:

  • Mount path: /app/data
  • Size: based on history retention and monitor count

Networking

  • Protocol: HTTP
  • Internal port: 3001
  • Users reach https://example-app.klutch.sh while Klutch.sh routes to port 3001 in the container.
Terminal window
curl -I http://localhost:3001

Deployment on Klutch.sh

  1. Push your Dockerfile to GitHub.
  2. In klutch.sh/app, create a new app and select GitHub as the source.
  3. Klutch.sh automatically detects the Dockerfile in the repository root.
  4. Select HTTP traffic and set the internal port to 3001.
  5. Add environment variables for PORT and any security flags you prefer.
  6. Attach a persistent volume at /app/data sized for your monitoring history.
  7. Deploy. On first launch, set your admin account and start adding monitors.

Verification

  • UI: open https://example-app.klutch.sh and confirm the login/setup screen appears.

  • Quick check:

    Terminal window
    curl -I https://example-app.klutch.sh

Next steps

  • Configure TLS-only access via Klutch.sh and rotate admin credentials regularly.
  • Tune notification channels (email, Slack, PagerDuty, etc.) inside Uptime-Kuma.
  • Plan backups of the /app/data volume to preserve monitor history.