Skip to main content

Resource Backups Free

Back up your applications, services, and databases — including Docker volumes, configuration files, and full snapshots — on a schedule or on demand.

Overview​

Coolify's built-in backups cover database dumps (pg_dump, mysqldump, etc.). Resource Backups extends this to cover any resource type with multiple backup strategies:

  • Volume backups — tar archives of Docker volumes
  • Configuration backups — docker-compose files, environment variables, and resource settings
  • Full backups — combined volume + configuration snapshots

Backups can be stored locally, uploaded to S3-compatible storage (with optional encryption), or both.

Backup Types​

TypeWhat's IncludedBest For
VolumeAll Docker volumes attached to the resourcePreserving application data (uploads, databases, state)
ConfigurationDocker compose, environment variables, resource settingsDisaster recovery of deployment configuration
FullVolumes + configuration in a single archiveComplete point-in-time snapshots

Creating a Backup Schedule​

  1. Navigate to the resource you want to back up (Application, Service, or Database)
  2. Open the Backups tab
  3. Click + Add Backup Schedule
  4. Configure:
    • Backup Type — volume, configuration, or full
    • Schedule — cron expression (e.g., 0 2 * * * for daily at 2 AM)
    • S3 Storage — optionally select an S3 storage destination
    • Keep Locally — whether to retain a local copy
    • Local Retention — how many local backups to keep
  5. Click Save
Cron Expression Examples
  • 0 2 * * * — Daily at 2:00 AM
  • 0 */6 * * * — Every 6 hours
  • 0 2 * * 0 — Weekly on Sundays at 2:00 AM
  • 0 2 1 * * — Monthly on the 1st at 2:00 AM

Manual Backups​

To trigger an immediate backup outside the schedule:

  1. Go to the resource's Backups tab
  2. Click the Backup Now button next to a schedule
  3. The backup runs immediately and appears in the execution history

S3 Upload​

When an S3 storage is selected for a backup schedule:

  • Backups are uploaded after creation
  • If the S3 storage has Encrypted S3 Backups enabled, the backup is encrypted before upload
  • Local copies are kept or pruned based on the retention setting
  • The is_encrypted flag on each execution indicates whether encryption was applied

Retention Policies​

SettingDescription
Keep LocallyWhether to keep backups on the server's filesystem
Number of Local BackupsMaximum number of local backups to retain (oldest are deleted first)
S3 RetentionManaged by your S3 lifecycle policies (configure in your storage provider)
Local Storage

Local backups consume disk space on your server. Set a reasonable retention count or use S3 upload to offload storage.

Restoring from a Backup​

  1. Go to the resource's Backups tab
  2. Find the backup execution in the history
  3. Click Restore
  4. For S3-stored backups, the file is downloaded (and decrypted if encrypted) before restoring
  5. For volume backups, the Docker volume contents are replaced with the backup data
  6. For configuration backups, you can review and apply the saved settings

API​

Backup schedules can be managed via the REST API.

# List all backup schedules
curl -H "Authorization: Bearer $TOKEN" \
https://coolify.example.com/api/v1/resource-backups

# Create a backup schedule
curl -X POST -H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"resource_type": "application",
"resource_id": 42,
"backup_type": "full",
"frequency": "0 2 * * *",
"s3_storage_id": 1,
"keep_locally": true,
"number_of_backups_locally": 5
}' \
https://coolify.example.com/api/v1/resource-backups

# Get schedule details and execution history
curl -H "Authorization: Bearer $TOKEN" \
https://coolify.example.com/api/v1/resource-backups/1

# Delete a schedule
curl -X DELETE -H "Authorization: Bearer $TOKEN" \
https://coolify.example.com/api/v1/resource-backups/1

Resource Types​

When using the API, the resource_type parameter accepts:

  • application
  • service
  • database
  • coolify_instance (no resource_id needed)

Troubleshooting​

Backup job fails​

  1. Check the execution logs in the Backups tab
  2. Verify the resource is running — volume backups require active Docker volumes
  3. If using S3, confirm the storage credentials are valid

Large backups time out​

Volume backups on large datasets may take significant time. Consider:

  • Scheduling backups during low-traffic periods
  • Using configuration-only backups for fast disaster recovery
  • Using incremental strategies at the S3 provider level