--- title: "Volume Backups" description: "Learn how to backup your volumes using Dokploy's Volume Backups feature" --- Volume backups are essential when your service doesn't fit the traditional database backup solutions. This is common when your application uses SQLite databases or doesn't have a database at all, making Dokploy's dedicated database backup features (PostgreSQL, MySQL, MongoDB, etc.) unsuitable for your use case. Volume backups allow you to backup [Docker named volumes](https://docs.docker.com/engine/storage/volumes/) to S3 destinations, providing a comprehensive backup solution for any type of data stored in volumes. ## Supported Services Volume backups are available for: 1. **Applications** - Single container applications 2. **Docker Compose** - Multi-container applications ## Setting Up Volume Mounts ### For Applications 1. Navigate to your application 2. Go to **Advanced** → **Mounts** 3. Create a new mount and select **Volume Mount** option ### For Docker Compose Define volumes directly in your `docker-compose.yml` file: ```yaml services: app: image: dokploy/dokploy:latest volumes: - my-volume:/app/data volumes: my-volume: ``` ## Practical Example: N8N Backup Let's walk through a common scenario using N8N, which runs on SQLite and stores data in Docker volumes. ### N8N Docker Compose Configuration ```yaml version: "3.8" services: n8n: image: docker.n8n.io/n8nio/n8n:1.83.2 restart: always environment: - N8N_HOST=${N8N_HOST} - N8N_PORT=${N8N_PORT} - N8N_PROTOCOL=http - NODE_ENV=production - WEBHOOK_URL=https://${N8N_HOST}/ - GENERIC_TIMEZONE=${GENERIC_TIMEZONE} - N8N_SECURE_COOKIE=false volumes: - n8n_data:/home/node/.n8n volumes: n8n_data: ``` Since N8N uses SQLite (stored in the `n8n_data` volume), we can't use Dokploy's database backup features. Instead, we'll backup the entire volume. ## Creating Volume Backups ### Backup Configuration 1. Deploy your N8N template 2. Navigate to **Volume Backups** section 3. Create a new volume backup with these settings: | Setting | Value | Description | |---------|-------|-------------| | **Name** | `my-n8n-backup` | Unique identifier for your backup | | **Schedule** | `0 0 * * *` | Daily backup at midnight (cron format) | | **Destination** | Your S3 destination | Must be configured in your account | | **Service Name** | `n8n` | Auto-complete will suggest available services | | **Volume Name** | `n8n_data` | Auto-filled when service is selected | | **Backup Prefix** | Optional | Additional prefix for backup files | | **Turn off Container** | Optional | See safety considerations below | | **Enabled** | ✓ | Enable the backup schedule | ### Safety Considerations **Turn off Container during backup** option provides two approaches: - **Container OFF** (Recommended): Safer option that prevents data corruption during backup, this will stop the container during the backup, and then start it again after the backup is done. - **Container ON**: Faster but may cause inconsistencies if the service is actively writing to the volume When backing up with the container running, there's a risk of data corruption if the application is actively writing to the volume during backup. ## Restoring Volume Backups ### Restore Process 1. Navigate to **Volume Backups** section 2. Select **Restore Volume** option 3. Choose your S3 destination where the backup is stored 4. Select the specific backup you want to restore 5. Enter the target volume name for restoration ### Volume Naming for Docker Compose For Docker Compose services, volume names follow a specific pattern: `{appName}_{volumeName}` **Example**: If your app name is `n8n-n8n-kqlble`, the volume name would be: `n8n-n8n-kqlble_n8n_data` ### Important Restore Considerations **Before restoring:** - Ensure the target volume doesn't already exist - Stop any containers using the volume - Remove the existing volume if necessary The restore will fail if the volume is in use or already exists. ### Finding the Correct Volume Name 1. **Check your Docker Compose file** to understand the volume structure 2. **Verify the app name** in Dokploy (usually under the name of your service) 3. **Use the pattern**: `{appName}_{volumeName}` for Docker Compose services 4. **For single applications**: Volume names are typically simpler and match your mount configuration This ensures your restored volume will be properly recognized and used by your Docker Compose services when they restart.