Para administradores
← Todos los temas

Copia de seguridad y restauración

Qué copiar además de la base de datos, por qué MASTER_KEY importa lo mismo y cómo probar una restauración.

En una instalación en su propio servidor, todo lo importante está en la base de datos: la configuración, las instrucciones, las fuentes de conocimiento, los mensajes, los borradores y los secretos cifrados. Por eso se hace copia de seguridad de la base de datos y del archivo .env con la MASTER_KEY.

Qué copiar

  1. La base de datos: con un volcado periódico, copiado fuera del servidor.
  2. .env, sobre todo MASTER_KEY: fuera del servidor, en un lugar seguro. Sin ella no se pueden leer de la base de datos las claves de API, el acceso a los buzones ni los clientes de inicio de sesión; la copia de seguridad no serviría de nada. Nosotros no la tenemos.

Un volcado de la base de datos contiene el correo de los clientes. Protéjalo igual que el propio buzón.

Los volcados previos a una actualización no son una copia de seguridad

Antes de cada actualización, draften guarda un volcado de la base de datos en la carpeta backups/ del directorio de la instalación y conserva los tres últimos (el número lo fija DRAFTEN_BACKUPS). Sin embargo, están en el mismo disco que la base de datos: son una red de seguridad para las actualizaciones, no una copia de seguridad. Cópielos fuera del servidor junto con .env, igual que sus demás copias de seguridad.

Un volcado periódico de la base de datos

Desde el directorio de la instalación:

docker compose exec -T db sh -c 'mariadb-dump -uroot -p"$MARIADB_ROOT_PASSWORD" --single-transaction --databases draften' | gzip > draften-$(date +%F).sql.gz

Ejecútelo con regularidad (por ejemplo, a diario desde cron) y guarde los volcados fuera del servidor.

Restaurar

Detenga los workers, cargue el volcado e inicie la versión que estaba en ejecución cuando se hizo el volcado (en los volcados de backups/ figura en el nombre del archivo):

docker compose stop worker
gunzip -c <volcado>.sql.gz | docker compose exec -T db sh -c 'mariadb -uroot -p"$MARIADB_ROOT_PASSWORD"'
./draften update <versión> --no-backup

En un servidor nuevo, instale primero draften y ponga en .env la MASTER_KEY del momento en que se hizo el volcado.

Sustituir la clave de cifrado

MASTER_KEY se puede sustituir sin interrumpir el servicio: en la interfaz (Instalación › Instalación › Clave de cifrado › Sustituir la clave de cifrado, requiere el updater) o con el comando:

./draften rotate-key

Primero se escribe la clave nueva en .env, los contenedores la toman uno a uno y todo lo guardado se vuelve a cifrar con ella. La clave anterior permanece en .env como MASTER_KEY_PREVIOUS mientras backups/ contenga volcados de antes de la sustitución: solo ella puede abrirlos. draften no permite otra sustitución mientras exista un volcado así.

Tras la sustitución, copie enseguida el nuevo .env fuera del servidor. La clave nueva nunca llega a la interfaz; solo está en .env, en el servidor.

Atención

Versión en texto