---
title: "Respaldos"
description: "Respaldos de LibreDTE Slim"
type: "docs"
category: "doc"
tags: []
authors: [Anonymous]
date: "2026-10-02"
last_update: "2026-10-02"
time_minutes: 3
draft: false
unlisted: false
url: "https://slim.libredte.cl/docs/respaldos"
---

# Respaldos de LibreDTE Slim

El stack incluye un servicio de respaldos automáticos. Se activa con el perfil `backup`, en `.env`:

```bash
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](https://slim.libredte.cl/docs/instalacion#directorios-locales-recomendado-en-producción), 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:

```bash
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.

```bash
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

```bash
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](https://slim.libredte.cl/docs/instalacion), 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.
   ```bash
   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:
   ```bash
   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.



---
Última actualización el 02/10/2026

