Concorbit HelpAll guides →

Backups

Backups

The backup system creates complete snapshots of the entire concorbit platform, including the database, uploaded files, configuration, SSL certificates, and SSH keys. A single backup file contains everything needed to rebuild the platform from scratch on a new server.

Backups are managed from Settings > Backups in the platform admin panel. This page is only visible to platform administrators.

What Gets Backed Up

Every backup is a full snapshot. The following are included automatically and cannot be individually excluded:

  • Full PostgreSQL database dump: all tenant data, users, configuration, audit logs

  • Redis snapshot: RDB dump of the in-memory data store

  • .env file: all environment variables, API keys, and secrets

  • CLAUDE.md: project configuration file

  • Planning documents: the /docs/ directory

  • Extensions: all platform extensions in /extensions/

  • Reference plugins: the /reference/ directory

  • Uploaded media and tenant files: everything in /storage/app/ including invoices, PDFs, and documents

  • SSL certificates: Let's Encrypt certificates for concorbit.com

  • Nginx configuration: the site configuration file

  • Supervisor configuration: queue worker and process manager config

  • PHP-FPM pool configuration: PHP process pool settings

  • Crontab entries: scheduled task definitions

  • SSH deploy keys: Git deployment keys and SSH config

  • Logo assets and brand files: any brand assets stored outside version control

Configuring Backups

Enable Automatic Backups

Toggle Enable automatic backups to turn on scheduled backups. When enabled, backups run automatically on the configured schedule.

Schedule

Choose how often backups run:

ScheduleDescription
Daily at 2:00 AMOnce per day, during the quietest period. Recommended for most setups.
Every 6 hoursFour times per day. Good for high-activity platforms with frequent data changes.
Every 12 hoursTwice per day. A balance between frequency and storage usage.
WeeklyOnce per week on Sunday at 2:00 AM. Only for low-activity or development environments.

SFTP Destination

Backups are uploaded to a remote server via SFTP for off-site storage. Configure the destination:

  • Host: the hostname or IP address of the SFTP server

  • Port: the SSH/SFTP port (default 22)

  • Username: the SFTP login username

  • Password: the SFTP login password (stored encrypted)

  • Remote path: the directory on the remote server where backups are stored (e.g. /backups/concorbit)

Testing the Connection

Click Test connection to verify that concorbit can connect to the SFTP server, authenticate, and write files. The test creates a temporary file, verifies it exists, then deletes it.

SFTP credentials are encrypted using the platform encryption key before being stored in the database. They are never stored in plain text.

Retention

Configure how many backups are kept:

  • Keep on remote server: the number of backups retained on the SFTP server. Oldest backups beyond this count are automatically deleted after each successful backup.

  • Keep locally on VPS: the number of backups retained on the concorbit server. Local copies allow faster downloads and restores.

Running a Backup

Automatic Backups

When enabled, backups run automatically on the configured schedule. No action is required.

Manual Backups

Click Run backup now to start a backup immediately. The backup runs as a background job. A progress indicator shows the current step:

  1. Dumping database

  2. Snapshotting Redis

  3. Copying environment files

  4. Copying media files

  5. Copying server configuration

  6. Compressing

  7. Uploading to remote

  8. Pruning old backups

The page polls for status updates automatically while a backup is running.

Backup History

The backup history table shows the last 30 backups with:

ColumnDescription
DateWhen the backup started.
FilenameThe backup archive name (format: concorbit_full_YYYY-MM-DD_HHMMSS.tar.gz).
SizeThe compressed archive size.
StatusSuccess, Failed, or Running.
DurationHow long the backup took.
RemoteWhether the backup was uploaded to the SFTP server.

Downloading a Backup

Click Download on any successful backup to download the archive directly to your browser. Only locally-stored backups can be downloaded.

Size Estimate

Below the backup checklist, the page shows an estimate of the next backup size including a breakdown by category (database, files, extensions, etc.).

Verifying Backups

Click Verify latest to check the integrity of the most recent remote backup. Verification connects to the SFTP server and confirms the file exists and its size matches the recorded size.

A monthly automated verification runs on the 1st of each month, checking the latest remote backup and logging the result.

Restoring from Backup

This is the nuclear option for disaster recovery. Use with extreme caution.

To restore from a backup:

  1. Click Restore on the backup you want to restore from.

  2. Read the warning carefully: restoring will replace ALL current data.

  3. Type RESTORE to confirm.

  4. The restore process extracts the backup and replaces the database, files, and configuration.

Restoring cannot be undone. The current state of the platform is overwritten entirely.

Notifications

The backup system sends alerts to platform administrators:

  • Backup failed: in-app notification and email when a backup attempt fails, with the error details.

  • No recent backup: warning if no successful backup has completed in the last 48 hours.

Backup Process

Each backup follows these steps:

  1. Create a temporary working directory

  2. Dump the PostgreSQL database in custom format (pg_dump -Fc)

  3. Trigger a Redis background save and copy the RDB snapshot

  4. Copy all files listed in the "What Gets Backed Up" section

  5. Generate a manifest.json listing every file with its size and SHA-256 checksum

  6. Compress everything into a single .tar.gz archive

  7. Calculate the SHA-256 checksum of the archive

  8. Upload to the SFTP destination

  9. Verify the remote upload by checking the file exists

  10. Clean up the temporary directory

  11. Prune old backups beyond the retention count (both local and remote)

The entire process is logged to the backup history with the final status, duration, file count, and any error messages.