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

  1. Instala el stack como en Instalación, usando como .env el del respaldo (<fecha>-env). Conserva la misma DB_PASSWORD y, si lo usas, el mismo COMPOSE_FILE/DATA_DIR. Deja SLIM_SEED_DEMO=0.
  2. Inicia el stack y espera ==> Listo: queda una instalación vacía con claves nuevas.
    docker compose up -d
    
  3. Copia los tres archivos del respaldo al directorio backups (${DATA_DIR}/backups, o el volumen backups).
  4. 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.

En esta página

Última actualización el 02/10/2026 por Anonymous