Backups y Restauracion

Por: Artiko
dokploybackupsrestauracions3

Backups y Restauracion

Dokploy incluye un sistema de backups integrado para todas las bases de datos soportadas. Los backups se pueden almacenar localmente o en cualquier proveedor compatible con S3.

Configurar destinos S3

Antes de crear backups, configura un destino de almacenamiento externo. Dokploy soporta cualquier servicio compatible con el protocolo S3.

Proveedores compatibles

ProveedorEndpoint
AWS S3https://s3.{region}.amazonaws.com
MinIOhttps://tu-minio.dominio.com
Backblaze B2https://s3.{region}.backblazeb2.com
Cloudflare R2https://{account-id}.r2.cloudflarestorage.com
DigitalOcean Spaceshttps://{region}.digitaloceanspaces.com

Agregar credenciales S3

  1. Ve a Settings > S3 Destinations en el panel principal
  2. Clic en Add Destination
  3. Completa los campos:
CampoDescripcion
NameNombre identificativo (ejemplo: backblaze-backups)
Access KeyClave de acceso del proveedor
Secret KeyClave secreta
BucketNombre del bucket (debe existir previamente)
RegionRegion del bucket (ejemplo: us-east-1)
EndpointURL del proveedor (ver tabla anterior)

Ejemplo: Configurar Backblaze B2

  1. Crear un bucket en Backblaze B2 con nombre dokploy-backups
  2. Generar Application Key con permisos de lectura y escritura sobre ese bucket
  3. En Dokploy:
Name:       backblaze-prod
Access Key: 00xxxxxxxxxxxxx
Secret Key: Kxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Bucket:     dokploy-backups
Region:     us-west-004
Endpoint:   https://s3.us-west-004.backblazeb2.com
  1. Clic en Save

Ejemplo: Configurar MinIO local

Si tienes MinIO corriendo en el mismo servidor o red:

Name:       minio-local
Access Key: minioadmin
Secret Key: minioadmin
Bucket:     db-backups
Region:     us-east-1
Endpoint:   http://minio:9000

Si MinIO corre como servicio de Dokploy, usa el nombre del contenedor como hostname.

Backups manuales

Crear un backup manual

  1. Selecciona la base de datos en el panel
  2. Ve a la pestana Backups
  3. Selecciona el destino S3 configurado
  4. Clic en Create Backup

Dokploy ejecuta el comando de dump correspondiente al motor:

MotorComando interno
PostgreSQLpg_dumpall
MySQLmysqldump --all-databases
MongoDBmongodump
MariaDBmariadb-dump --all-databases

El archivo resultante se comprime y sube al bucket S3 configurado.

Formato del archivo

Los backups se almacenan con este patron de nombre:

{nombre-servicio}/{fecha}-{hora}.sql.gz
{nombre-servicio}/{fecha}-{hora}.archive.gz  (MongoDB)

Verificar el backup

Despues de crear el backup, verifica que aparece en la lista de la pestana Backups con estado Success. Tambien puedes verificar directamente en el bucket S3:

# AWS CLI
aws s3 ls s3://dokploy-backups/nombre-servicio/

# MinIO client
mc ls minio/db-backups/nombre-servicio/

Backups automaticos (scheduled)

Configurar backup periodico

  1. En la base de datos, pestana Backups
  2. Activa Enable Automatic Backups
  3. Selecciona el destino S3
  4. Configura la frecuencia con expresion cron

Expresiones cron comunes

FrecuenciaExpresion cron
Cada hora0 * * * *
Diario a las 3 AM0 3 * * *
Cada 6 horas0 */6 * * *
Lunes a viernes a las 2 AM0 2 * * 1-5
Domingos a las 4 AM0 4 * * 0

Estrategia recomendada

Para una base de datos en produccion:

Backup diario:    0 3 * * *     (3 AM todos los dias)

Combina con la limpieza automatica para no acumular backups indefinidamente (ver seccion mas abajo).

Verificar que el cron funciona

Despues de configurar, espera a que se ejecute el primer backup automatico y verifica:

  1. La lista de backups en la pestana Backups muestra una nueva entrada
  2. El estado es Success
  3. El archivo existe en el bucket S3

Restaurar un backup

Desde el panel de Dokploy

  1. Selecciona la base de datos
  2. Ve a la pestana Backups
  3. Localiza el backup en la lista
  4. Clic en Restore

Dokploy descarga el archivo del bucket S3 y ejecuta el comando de restauracion correspondiente:

MotorComando interno
PostgreSQLpsql (ejecuta el dump SQL)
MySQLmysql (ejecuta el dump SQL)
MongoDBmongorestore
MariaDBmariadb (ejecuta el dump SQL)

Consideraciones antes de restaurar

Restaurar en una base de datos diferente

Si necesitas restaurar un backup en una nueva instancia (por ejemplo, para testing):

  1. Crea una nueva base de datos del mismo motor en Dokploy
  2. Descarga el backup del bucket S3 manualmente:
aws s3 cp s3://dokploy-backups/nombre-servicio/2026-02-28-030000.sql.gz ./backup.sql.gz
gunzip backup.sql.gz
  1. Copia el archivo al contenedor y restaura:
# PostgreSQL
docker cp backup.sql nombre-contenedor-nuevo:/tmp/
docker exec -i nombre-contenedor-nuevo psql -U usuario -d nombre_db < /tmp/backup.sql

# MySQL / MariaDB
docker cp backup.sql nombre-contenedor-nuevo:/tmp/
docker exec -i nombre-contenedor-nuevo mysql -u root -p < /tmp/backup.sql

# MongoDB
docker cp backup.archive.gz nombre-contenedor-nuevo:/tmp/
docker exec nombre-contenedor-nuevo mongorestore --gzip --archive=/tmp/backup.archive.gz

Verificar integridad de backups

No confies ciegamente en que los backups funcionan. Verifica periodicamente.

Test de restauracion

La unica forma confiable de verificar un backup es restaurarlo. Crea una base de datos temporal en Dokploy, restaura el backup y verifica los datos:

# PostgreSQL: verificar que las tablas tienen datos
docker exec nombre-contenedor-test psql -U usuario -d nombre_db -c "\dt"
docker exec nombre-contenedor-test psql -U usuario -d nombre_db -c "SELECT count(*) FROM tabla_principal;"

Verificar tamano del archivo

Un backup valido tiene un tamano consistente. Si un backup diario pasa de 50MB a 1KB, algo fallo. Monitorea el tamano en el bucket:

aws s3 ls s3://dokploy-backups/nombre-servicio/ --human-readable

Script de verificacion basico

Ejecuta desde el VPS como cron job semanal:

#!/bin/bash
BUCKET="s3://dokploy-backups"
SERVICE="api-postgres"
MIN_SIZE=1048576  # 1MB en bytes

LAST_BACKUP=$(aws s3 ls "$BUCKET/$SERVICE/" | sort | tail -1)
SIZE=$(echo "$LAST_BACKUP" | awk '{print $3}')

if [ "$SIZE" -lt "$MIN_SIZE" ]; then
  echo "ALERTA: Backup de $SERVICE demasiado pequeno ($SIZE bytes)"
  # Aqui puedes enviar una notificacion
fi

Limpieza automatica de backups antiguos

Desde la version 0.20, Dokploy incluye limpieza automatica de backups.

Configurar retencion

En la pestana Backups de la base de datos:

  1. Activa Enable Cleanup
  2. Configura el numero de backups a retener
Backups to keep: 7

Dokploy elimina automaticamente los backups mas antiguos despues de cada backup exitoso, manteniendo solo los N mas recientes.

Politica de retencion recomendada

Frecuencia de backupBackups a retenerCobertura
Cada hora241 dia
Diario71 semana
Diario301 mes

Limpieza manual en S3

Si necesitas limpiar backups manualmente en el bucket:

# Listar backups de un servicio
aws s3 ls s3://dokploy-backups/api-postgres/

# Eliminar un backup especifico
aws s3 rm s3://dokploy-backups/api-postgres/2026-01-15-030000.sql.gz

# Eliminar backups anteriores a una fecha (usa lifecycle rules en S3 para automatizar)

Lifecycle rules en S3

Como capa adicional de proteccion, configura lifecycle rules directamente en el proveedor S3:

{
  "Rules": [
    {
      "ID": "cleanup-old-backups",
      "Status": "Enabled",
      "Filter": {
        "Prefix": ""
      },
      "Expiration": {
        "Days": 90
      }
    }
  ]
}

Esta regla elimina archivos con mas de 90 dias, independientemente de la configuracion de Dokploy.


Siguiente: Capitulo 13: Dominios y SSL —>