Respaldos de LibreDTE Slim
El stack incluye un servicio de respaldos automáticos. Se activa con el perfil backup, en .env:
COMPOSE_PROFILES=backup
BACKUP_INTERVAL_HOURS=24 # cada cuántas horas respalda (por defecto 24)
BACKUP_KEEP_DAYS=7 # cuántos días conserva cada respaldo (por defecto 7)
Luego docker compose up -d. El servicio hace un respaldo al iniciar y otro cada BACKUP_INTERVAL_HOURS.
Qué se respalda
Cada respaldo son tres archivos, con el mismo prefijo de fecha (20261002T132334Z):
| Archivo | Contenido |
|---|---|
<fecha>-db.dump |
La base de datos. |
<fecha>-files.tar.gz |
Los archivos que suben los usuarios (media) y las claves de la aplicación (state). |
<fecha>-env |
Tu archivo .env. |
No se respaldan los ZIP de PDF de la emisión masiva, porque se pueden volver a generar.
Los archivos quedan con permisos 0600 a nombre de root: contienen la contraseña de la base de datos, las claves y los datos de tus contribuyentes. La clave FIELD_ENCRYPTION_KEY (dentro de state) cifra los certificados digitales; sin ella, un respaldo de la base de datos no permite leer los certificados.
Dónde quedan
En el volumen backups. Con el override de directorios locales, en ${DATA_DIR}/backups. Para leerlos desde el host necesitas permisos de root.
Copia los respaldos fuera del servidor (otro servidor, almacenamiento en la nube): un respaldo en el mismo disco no protege contra la pérdida del servidor. Por ejemplo, con los directorios locales:
sudo rsync -a /opt/libredte-slim/data/backups/ usuario@otro-servidor:/respaldos/slim/
Comandos
Usa siempre run --rm --no-deps: sin --no-deps Docker Compose arrancaría también la instalación, que falla si los datos están dañados. La base de datos debe estar corriendo.
docker compose run --rm --no-deps backup now # respaldar ahora
docker compose run --rm --no-deps backup list # listar respaldos
docker compose run --rm --no-deps backup restore <fecha> # restaurar
Restaurar en el mismo servidor
docker compose run --rm --no-deps backup list
docker compose run --rm --no-deps backup restore 20261002T132334Z
docker compose restart web worker worker-emision-masiva
La restauración reemplaza la base de datos, media y state por los del respaldo; lo que se haya creado después se pierde. El .env del respaldo no reemplaza al actual: queda en backups/<fecha>-env para que lo compares y copies a mano lo que necesites.
El reinicio de los servicios hace que carguen las claves restauradas.
Restaurar en un servidor nuevo
- Instala el stack como en Instalación, usando como
.envel del respaldo (<fecha>-env). Conserva la mismaDB_PASSWORDy, si lo usas, el mismoCOMPOSE_FILE/DATA_DIR. DejaSLIM_SEED_DEMO=0. - Inicia el stack y espera
==> Listo: queda una instalación vacía con claves nuevas.docker compose up -d - Copia los tres archivos del respaldo al directorio
backups(${DATA_DIR}/backups, o el volumenbackups). - Restaura y reinicia:
docker compose run --rm --no-deps backup restore <fecha> docker compose restart web worker worker-emision-masiva
Comprueba que puedes ingresar y que los certificados de tus contribuyentes se leen. Si ves que FIELD_ENCRYPTION_KEY de tu .env es distinta de la del respaldo, quítala del .env: el stack usa la de state.
Probar los respaldos
Un respaldo que nunca se restauró no es una garantía. Restaura periódicamente en un servidor de prueba, con los pasos anteriores, y comprueba el ingreso y los certificados.