Skip to main content
Hyperspeed state lives in two places. You need both to perform a full restore:
  • Postgres — all application metadata: users, organizations, spaces, tasks, chat history, file tree, and settings.
  • Object storage (MinIO by default) — the actual bytes of uploaded files.

Postgres

Back up

Run the following command from the directory that contains your docker-compose.yml:
This writes a plain-SQL dump to hyperspeed.pg.sql in your current directory. Store it somewhere safe—off the host machine if possible.

Restore

To restore into a running Postgres container (typically a fresh one):
Restoring into a database that already contains data will produce conflicts. Use a clean database, or drop and recreate the hyperspeed database before restoring.

Object storage (MinIO)

Option 1: Volume snapshot

Stop the stack, take a disk or VM-level snapshot of the MinIO data volume, then start the stack again. This is the simplest approach for single-server setups where brief downtime is acceptable.

Option 2: Mirror with mc (online backup)

Use the MinIO client (mc) to mirror your bucket to another S3-compatible target while the stack is running.
Replace minioadmin / minioadmin with the credentials from your .env file, and set backup to point at your actual backup target.
Run the mirror command on a schedule (for example, a daily cron job) to keep the backup reasonably current without stopping the stack.

Testing your backups

A backup you have never tested is not reliable. Periodically:
  1. Restore the Postgres dump into an isolated environment and verify that the application starts and data looks correct.
  2. Retrieve a sample of objects from the backup bucket or snapshot and confirm they are readable.
Test restores do not need to be full production replays. Spinning up the stack locally with the restored data and checking a few records is sufficient to confirm the backup is valid.