Skip to main content

Back up and restore

Operator

Ticketra includes a built-in backup system that captures the database and file assets (attachments, avatars, and secrets) into a single verifiable archive, on demand or on a schedule.

What's in a backup

A backup archive contains:

  • A PostgreSQL dump (the source of truth).
  • Attachments and avatars.
  • Secrets material needed to read encrypted data after restore.
  • A manifest with a version and checksums for every file.

OpenSearch is not backed up — it's a rebuildable index reconstructed from PostgreSQL after a restore.

Create a backup

  1. Sign in as a SUPER_ADMIN.
  2. Go to Admin → Backups.
  3. Click Create Backup and watch progress run to completion.

The new archive appears in the backup list as soon as the operation finishes.

Schedule backups

In Admin → Backups, configure a schedule (backed by a cron expression) so backups run automatically. Scheduling settings are persisted in system configuration.

Restore

Restore overwrites current data

A restore replaces the current database contents with the archive's. Take a fresh backup first and perform restores during a maintenance window.

Restore verifies integrity before applying:

  1. The archive is extracted to a temporary directory.
  2. The manifest is validated and every file's checksum is recompared. A mismatch or missing file aborts the restore.
  3. The database is restored via pg_restore, then file assets are unpacked.

You can restore from the Admin → Backups UI, or use the restore CLI for operator-driven recovery:

docker compose exec api node dist/scripts/restore-cli.js --help

Verify a restore

After restoring:

curl -k https://<host>/api/v1/health

Confirm the database is connected. If OpenSearch search results look stale, the index will rebuild from PostgreSQL.

Operational recommendations

  • Test your restores. A backup you've never restored is a hope, not a backup.
  • Store archives off-host on encrypted media — they contain secrets material.
  • Monitor scheduled backups so a silent failure doesn't leave you exposed.