Skip to content

Backups in the app

Admin, Backups (/admin/backups). Needs module.backups and the backup.manage permission.

The application takes its own encrypted, scheduled backups. Getting them off the machine is yours.

Schedule backups to run automatically, with a retention policy.

Run one on demand, which is what you want before anything risky.

Verify a backup, which reads it back and confirms it decrypts and parses. A backup that has never been read is a hypothesis.

Export a portable per-tenant copy, for moving an institution’s data or handing it over.

SECRETS_MASTER_KEY must be backed up somewhere that is not the server it protects.

Backups are encrypted with it. A backup cannot be restored without that key.

The failure looks like this: you restore successfully, everything is there, you sign in, and every connector reports a decryption error. The data is fine and the vault cannot be opened. Every integration has to be reconfigured from scratch, assuming you still have the original credentials.

Put a copy in a password manager. Not in a file next to the backup, and not in the same cloud account.

Set it. A retention policy that is not set means backups accumulate until the disk fills, and a full disk stops PostgreSQL and stops backups in that order.

Balance how far back you might need against how much disk you have. Nightly for a fortnight plus weekly for a term suits most schools.

Verifying reads a backup back and checks it. Do it regularly, and schedule it if you can.

Verification is not the same as a restore drill. Verification proves the file is intact. A restore drill proves your process works, and that is a different and more valuable thing. See backups and restore.

An alert is raised and the backup.failed [email](/configuration/email- messages/) is sent to staff who can manage backups. That message cannot be switched off, because the alternative is finding out during a restore.

The usual causes, in order:

  1. Disk full.
  2. Retention not pruning, so the disk filled.
  3. Permissions, after somebody changed the service account.
  4. The database was unreachable at that moment.

Run one on demand once you have fixed it, rather than waiting for the schedule to prove the fix.

IncludedNot included
Every database table for the tenantThe master key itself
Encrypted connector credentialsFiles in external object storage
Configuration, roles, workflow, templatesThe application binaries
Audit log, within retention

If you use external S3 for logos, photos and exports, back that bucket separately.

Exports a per-tenant copy you can take elsewhere. It is a normal feature rather than a support request, which matters on managed hosting: getting your data out does not require anybody’s cooperation.

The export includes encrypted connector credentials, so restoring it elsewhere needs the matching SECRETS_MASTER_KEY.

Backups are taken and tested for you, including a restore drill. This screen still works, and the portable export is still yours to run whenever you like.

To request a restore, see support, restores and exits.

PermissionAllows
backup.viewSee backup history
backup.manageSchedule, run, verify and export