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/backups inside 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