Backups y restauración
Los backups se comprimen y cifran en tu servidor. A ganyant solo llegan bytes cifrados.
Qué se puede respaldar
| Origen | Herramienta usada | Configuración en agent.toml |
|---|---|---|
| PostgreSQL | pg_dump --format=custom | dsn = "postgresql://usuario@127.0.0.1:5432/base" |
| MySQL / MariaDB | mysqldump --single-transaction | defaults_file = "/etc/ganyant/mysql.cnf" |
| MongoDB | mongodump --archive | uri = "env:MONGO_URI" |
| SQLite | sqlite3 .backup (consistente) | path = "/srv/app/data.db" |
| Carpeta | tar | path = "/var/www/uploads" |
Configurar una tarea
- En Panel → Backups, creá la tarea: nombre, tipo, servidor, frecuencia y retención.
- En el servidor, agregá la sección con el mismo nombre en
/etc/ganyant/agent.toml:
[vault]
passphrase = "env:GANYANT_VAULT_PASSPHRASE"
[backup.shop_prod]
dsn = "postgresql://backup@127.0.0.1:5432/shop_prod"El agente consulta las tareas cada 60 segundos y ejecuta las que están vencidas, con prioridad baja de CPU y disco.
Cómo se protege cada snapshot
- Volcado de la base o carpeta.
- Compresión con Zstd (nivel 9).
- Cifrado con XChaCha20-Poly1305 (libsodium secretstream), clave de 256 bits derivada con Argon2id de tu frase y un salt aleatorio por snapshot.
- Hash BLAKE2b-256 de todo el archivo cifrado.
- Subida directa a Cloudflare R2 con una URL prefirmada válida por 15 minutos y limitada al tamaño exacto declarado.
Guardá tu frase de cifrado en un gestor de contraseñas. El instalador genera una al azar. Sin ella nadie puede descifrar tus backups, tampoco nosotros.
Restaurar
# el último snapshot
ganyant-agent restore shop_prod --at latest --to ./restore.dump
# el snapshot vigente en una fecha
ganyant-agent restore shop_prod --at "2026-11-14 03:00" --to ./restore.dump
# PostgreSQL
pg_restore --clean --dbname shop_prod ./restore.dumpEl agente verifica el BLAKE2b antes de descifrar: si el archivo fue alterado o está incompleto, la restauración se detiene.
Descifrar un archivo descargado
Desde el panel podés descargar cualquier snapshot (.gya). Para descifrarlo en otra máquina con el agente instalado:
ganyant-agent decrypt snapshot.gya --out snapshot.dumpRetención y espacio
Los snapshots vencidos se eliminan automáticamente del almacenamiento. El espacio usado se muestra en el panel; si alcanzás el límite de tu plan, los nuevos backups se rechazan antes de subir y recibís una alerta.
Tu propio almacenamiento (Agency)
En Agency podés conectar AWS S3, Wasabi, MinIO o tu propio R2. Las credenciales se guardan cifradas con AES-256-GCM y esos snapshots no consumen el espacio de ganyant.