Skip to main content

Overview

Uptime Kuma is a self-hosted, MIT-licensed uptime monitoring tool: outside-in HTTP(s), TCP, DNS and ping checks against your apps and third-party dependencies, alerts through 90+ notification providers, and public status pages. This template deploys a single Uptime Kuma instance with its SQLite database on a persistent volume, serving the dashboard, monitoring engine and status pages on port 3001. Uptime Kuma has no way to preset an admin credential. The admin account belongs to whoever first opens the setup wizard, so the dashboard ships closed to the internet and you claim the account over a tunnel before publishing anything (see First Run).
This template does not create a GVC. It deploys into an existing GVC that you already have.

What Gets Created

The chart creates no secrets and no policies.

Prerequisites

None for a default install.

Installation

Install the template into an existing GVC. No --set values are required:
To install using another method, follow the instructions for your preferred tool:

UI

Browse, install, and manage templates visually

CLI

Manage templates from your terminal

Terraform

Declare templates in your Terraform configurations

Pulumi

Declare templates in your Pulumi programs

Configuration

Image

Resources and Storage

  • resources.maxCpu / resources.maxMemory — the CPU and memory limit for the Uptime Kuma container.
  • resources.minCpu / resources.minMemory — the CPU and memory reservation.
  • volumeset.capacity — initial volume size in GiB. Values below 10 are refused at render.

Access

  • publicAccess.enabled — when true, the workload’s external inbound firewall opens to 0.0.0.0/0 and the dashboard and status pages are served on the canonical *.cpln.app HTTPS endpoint. The dashboard is then protected by Uptime Kuma’s own login; status pages are public by design. Turn it on only after the admin account exists.
  • internalAccess.type — which workloads inside Control Plane may reach Uptime Kuma.
  • internalAccess.workloads — list of workload links, used only when type is workload-list.
An access change takes up to a few minutes to take effect. Re-check before concluding the setting did nothing. The database type is fixed to SQLite and the workload is fixed at one replica; neither is a value.

Connecting

Verify the server is answering through the tunnel:
A 302 means Uptime Kuma is serving and redirecting to its setup or login page; the bundled health check treats exactly this response as healthy.

First Run

Claim the admin account over a tunnel before anything is published. The chart preselects SQLite, so the setup wizard asks only for an admin username and password.
1

Install with public access off

Keep the shipped publicAccess.enabled: false. Wait for the workload to report ready:
2

Tunnel to the private dashboard

3

Create the admin account

Open http://localhost:3001. You are redirected to the setup wizard; choose an admin username and a strong password. Once one account exists, the wizard is permanently disabled.
4

Publish it only if you need to

Public status pages and outside access to the dashboard need publicAccess.enabled: true. Run a Helm upgrade with it on, then allow a few minutes for the firewall change to take effect before testing the canonical endpoint:

Monitors and Status Pages

Everything Uptime Kuma monitors is configured in the app UI after login, not as deploy-time values:
  • Monitors — HTTP(s), TCP port, DNS and ping checks. Outbound traffic is open, so the workload can reach public targets as well as workloads in the same GVC by their internal hostnames, such as WORKLOAD_NAME.GVC_NAME.cpln.local.
  • Notifications — 90+ providers, including Slack, email and webhooks, configured globally or per monitor.
  • Status pages — published under /status/ on the same endpoint and readable without login.
The dashboard receives live updates over a WebSocket connection to the same address; status pages are plain HTTP.

Operations

Backing Up

There is no scheduled-backup feature, and the volume set takes no scheduled snapshots; the only automatic snapshot is the final one taken when the volume set is deleted, kept for 7 days. Take a manual snapshot of the data volume before a risky change:

Restoring a Backup

Restoring the data volume from a volume set snapshot has not been verified on this template, and there is no documented restore procedure for it. Treat snapshots as a safety net rather than a tested recovery path.

Resetting the Admin Password

Uptime Kuma ships an upstream password-reset tool that prompts for the new password. Open an interactive shell in the container:
Then, from the app directory, run npm run reset-password and enter the new password twice. The tool also signs out every existing session. This path follows upstream’s documentation and has not been verified on this template.

Upgrading From 1.0.0

Version 1.1.0 renamed the resource limit keys so it is unambiguous which number is the limit: Rename those two keys in your values before upgrading. An upgrade that still carries the old names is refused at render, and the running release is left untouched:
resources.memory produces the same message under its own name.

Upgrading From 1.1.0 or Earlier

Version 1.2.0 changed the default of publicAccess.enabled from true to false. If your install relied on the old default and you upgrade without setting it, the dashboard and status pages are closed to the internet. To keep them public, set it explicitly:
Your monitors, status pages and admin account live on the volume set and are unaffected by the upgrade.

Scaling and Availability

This template is single-instance. Upstream Uptime Kuma supports no clustering, and the workload is pinned to exactly one replica with no value to change it. A restart means a brief gap in monitoring; monitors resume on their own when the workload is back, and all data survives on the volume set.

Troubleshooting

Symptom: The *.cpln.app endpoint refuses requests, while the dashboard works through cpln port-forward.Cause: publicAccess.enabled is false (the default since 1.2.0), so the external inbound firewall is closed.Fix: Complete First Run first, then run a Helm upgrade with --set publicAccess.enabled=true and allow a few minutes for the change to take effect.
Symptom: Opening the dashboard on a fresh install shows a login page instead of the setup wizard.Cause: Someone else reached the wizard first and claimed the admin account. This can only happen while the dashboard is reachable by others.Fix: Uninstall and reinstall to start a fresh instance (this deletes the volume set), and complete First Run over the tunnel before publishing again.
Symptom: The page shell loads, but monitors never appear or never refresh. Status pages still work.Cause: The dashboard depends on a WebSocket connection to the same address; status pages do not.Fix: Reach the dashboard directly on the canonical endpoint rather than through an intermediary that does not pass WebSocket upgrades.
Symptom: cpln helm upgrade fails with uptime-kuma: resources.cpu was RENAMED to resources.maxCpu (or the same message for resources.memory).Cause: Your values still use the 1.0.0 key names.Fix: Rename resources.cpu to resources.maxCpu and resources.memory to resources.maxMemory, then upgrade again. See Upgrading From 1.0.0.
Symptom: You changed publicAccess.enabled or internalAccess.type and access still behaves as before.Cause: Firewall changes take up to a few minutes to take effect.Fix: Wait a few minutes and test again before concluding the setting is wrong.

Important Notes

  • Create the admin account over the tunnel before enabling public access — until an account exists, anyone who can reach the dashboard can claim it.
  • Upgrading from 1.1.0 or earlier closes public access unless you set publicAccess.enabled: true — see Upgrading From 1.1.0 or Earlier.
  • Single instance only — there is no failover; a restart is a brief monitoring gap.
  • All data lives on the volume set. cpln helm uninstall deletes it, and a reinstall starts a fresh instance with a new setup wizard; the final snapshot is kept for 7 days.
  • There are no cloud backups in this template — take a manual volume set snapshot before risky changes.

External References

Uptime Kuma on GitHub

Upstream source repository

Uptime Kuma Wiki

Official documentation wiki

Reset Password via CLI

Upstream password-reset procedure

Environment Variables

Environment variables reference

Uptime Kuma Template

View the source files, default values, and chart definition