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/directoryExtensions: all platform extensions in
/extensions/Reference plugins: the
/reference/directoryUploaded media and tenant files: everything in
/storage/app/including invoices, PDFs, and documentsSSL 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:
| Schedule | Description |
|---|---|
| Daily at 2:00 AM | Once per day, during the quietest period. Recommended for most setups. |
| Every 6 hours | Four times per day. Good for high-activity platforms with frequent data changes. |
| Every 12 hours | Twice per day. A balance between frequency and storage usage. |
| Weekly | Once 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:
Dumping database
Snapshotting Redis
Copying environment files
Copying media files
Copying server configuration
Compressing
Uploading to remote
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:
| Column | Description |
|---|---|
| Date | When the backup started. |
| Filename | The backup archive name (format: concorbit_full_YYYY-MM-DD_HHMMSS.tar.gz). |
| Size | The compressed archive size. |
| Status | Success, Failed, or Running. |
| Duration | How long the backup took. |
| Remote | Whether 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:
Click Restore on the backup you want to restore from.
Read the warning carefully: restoring will replace ALL current data.
Type RESTORE to confirm.
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:
Create a temporary working directory
Dump the PostgreSQL database in custom format (
pg_dump -Fc)Trigger a Redis background save and copy the RDB snapshot
Copy all files listed in the "What Gets Backed Up" section
Generate a
manifest.jsonlisting every file with its size and SHA-256 checksumCompress everything into a single
.tar.gzarchiveCalculate the SHA-256 checksum of the archive
Upload to the SFTP destination
Verify the remote upload by checking the file exists
Clean up the temporary directory
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.