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 Uptime Kuma stores
| Compose services | uptime-kuma |
|---|---|
| Databases detected | sqlite |
| Data volumes | uptime_kuma_data (/app/data) |
| Config paths | docker-compose.yml, .env |
The backup plan
- 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.
- Capture the data directory. Restic the /app/data volume, which holds the database plus uploaded icons and TLS certificate info for monitored endpoints.
- 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.