Docs · Backups
Backups and restore confidence
SteadyPlan is self-hosted. You control where data is stored and how it is backed up. This page explains the difference between the built-in export/restore flow and whole-instance backups.
Where data lives
Financial data is stored locally in a SQLite database (typically data/finance.db). In Docker, this is inside the container under /app/data/finance.db, backed by a host-mounted volume.
On Unraid, that host mount is often under /mnt/user/appdata/steadyplan (or whatever path you chose).
Per-user JSON export (portable)
A JSON export is a portable file containing the current user’s data. It is useful before risky actions and for moving a user’s data between instances.
- Scope: one user only
- Use it for: pre-change safety, portability, user-scoped restore
- Does not include: other users, whole-instance settings, server secrets
Keep exports private. They contain financial data.
Whole-instance SQLite backups
The built-in SQLite backup tool creates a copy of the database for the whole instance (all users). Backups are stored under data/backups inside the app’s data directory (Docker: /app/data/backups).
- Scope: whole instance (all users in the database)
- Location:
data/backupsinside the data directory - Use it for: whole-instance recovery, belt-and-braces alongside exports
A backup file stored on the same disk/share is helpful, but it is not a complete disaster-recovery plan. Include the whole appdata directory in your wider server backup routine (snapshots, rsync, borg, etc.).
Before restore or delete
For best coverage, do both:
- Download a fresh per-user JSON export for the user you’re about to affect
- Create a whole-instance SQLite backup
Next: Reverse proxy · Privacy · Install