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
- La base de datos: con un volcado periódico, copiado fuera del servidor.
.env, sobre todoMASTER_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
- El volumen
db-dataes la base de datos en uso. Nunca elimine la instalación condocker compose down -vsi no tiene un volcado reciente. - La carpeta
data/no contiene nada imprescindible: solo están ahí el registro y los informes del worker. - Siempre puede comprobarlo en la interfaz: la tarjeta Estado de la instalación de la página Instalación muestra si
MASTER_KEYestá configurada.