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
.└── DockerfileSample Dockerfile
FROM louislam/uptime-kuma:latest
# Default portENV PORT=3001EXPOSE 3001Recommended environment variables
PORT– internal port (default3001)NODE_ENV=productionUPTIME_KUMA_DISABLE_FRAME_SAMEORIGIN=trueto 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.shwhile Klutch.sh routes to port3001in the container.
Health check (recommended)
curl -I http://localhost:3001Deployment on Klutch.sh
- Push your Dockerfile to GitHub.
- In klutch.sh/app, create a new app and select GitHub as the source.
- Klutch.sh automatically detects the Dockerfile in the repository root.
- Select HTTP traffic and set the internal port to
3001. - Add environment variables for
PORTand any security flags you prefer. - Attach a persistent volume at
/app/datasized for your monitoring history. - Deploy. On first launch, set your admin account and start adding monitors.
Verification
-
UI: open
https://example-app.klutch.shand 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/datavolume to preserve monitor history.