How to back up Uptime Kuma in Docker (2026)

Uptime Kuma spreads its state across its SQLite database and 1 data volume on disk, plus compose and .env config. A backup that skips any layer will not restore cleanly. Dockstash auto-detects each layer, dumps the database from inside the container, and stores the lot off-site with restic.

What it stores

What Uptime Kuma stores

Compose servicesuptime-kuma
Databases detectedsqlite
Data volumesuptime_kuma_data (/app/data)
Config pathsdocker-compose.yml, .env
Step by step

The backup plan

  1. Back up the SQLite database consistently. Use sqlite3 ".backup" on /app/data/kuma.db through the online backup API — never copy the live .db under WAL, or you miss the -wal sidecar and capture a torn file.
  2. Capture the data directory. Restic the /app/data volume, which holds the database plus uploaded icons and TLS certificate info for monitored endpoints.
  3. Capture compose config. Restic docker-compose.yml and .env so the deployment and notification settings are preserved.

Restoring Uptime Kuma

Uptime Kuma stores everything — monitors, heartbeat history, and notification config — in one SQLite database under /app/data. Use the online backup API, then restore the whole data directory with the app stopped.

Back up Uptime Kuma in one click All guides

Last updated: July 2026

Related database guides

Frequently asked questions

Where does Uptime Kuma keep its data?

In a single SQLite database under /app/data, alongside uploaded icons. Monitors, heartbeat history, and notifications all live there, so a consistent DB snapshot plus the data directory is the whole backup.

Can I copy kuma.db directly?

Not while it is running — WAL mode means a live copy can be torn. Use sqlite3 ".backup" through the online backup API for a consistent snapshot.

Will I lose heartbeat history on restore?

No — heartbeat history is in the SQLite database. A consistent dump preserves it in full.