# Actualizar desde la línea de comandos

Cuando el updater está en marcha en la instalación, lo más cómodo es
actualizar en la interfaz, como se explica en
[«Actualizar con el updater»](/es/admin/updating-with-the-updater). Aquí tiene
el mismo procedimiento desde la línea de comandos; funciona siempre, con el
updater o sin él. Todos los comandos se ejecutan en el directorio de la
instalación.

## Actualizar a una versión nueva

Cada versión es un paquete nuevo. Páseselo directamente al comando:

```
./draften update --bundle /ruta/a/draften-<versión nueva>.tar
```

o cópielo en la carpeta `updates/` y ejecute:

```
./draften update <versión nueva>
```

La actualización **no interrumpe el servicio** y avanza paso a paso:

1. comprueba el paquete con las claves de la versión instalada, antes de usar
   nada de él,
2. guarda un volcado de la base de datos en `backups/` (se conservan las tres
   últimas copias de antes de una actualización, el número lo fija
   `DRAFTEN_BACKUPS` en `.env`; las copias diarias se cuentan aparte, vea
   [Copia de seguridad y restauración](/es/admin/backup-and-restore)),
3. ejecuta las migraciones de la base de datos,
4. sustituye los workers,
5. inicia la versión nueva de la web junto a la que está atendiendo y cambia a
   ella en cuanto está sana.

Si la versión nueva no llega a estar sana, no se cambia nada y la anterior
sigue atendiendo.

Un paquete también se puede comprobar sin instalarlo:

```
./draften check draften-<versión nueva>.tar
```

## Después de actualizar

```
./draften status
```

muestra qué color de la web atiende, la versión y el estado de los dos colores
y de los workers, el estado de HTTPS y los volcados de la base de datos. En la
página **Funcionamiento** los workers dan señales y el veredicto es «la
capacidad es suficiente». Lo que cambió la versión está en el archivo
`NOTES.md`.

## Volver a la versión anterior

La versión que atendía antes de la actualización sigue en marcha sin tráfico.
Puede cambiar a ella de inmediato:

```
./draften rollback
```

Esto funciona porque la base de datos sigue siendo legible también para la
versión anterior.

## Volver a una versión aún más antigua

Eso solo es posible restaurando un volcado de la base de datos. Cada volcado de
`backups/` lleva en el nombre la versión que estaba en marcha cuando se hizo
(`<hora>-<versión>.sql.gz` antes de una actualización,
`<hora>-<versión>.backup.sql.gz` las diarias y a petición):

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

Todo lo que ocurrió en draften después de hacerse el volcado se pierde.

!> Un volcado de antes de sustituir la clave de cifrado solo se abre con la
clave anterior, `MASTER_KEY_PREVIOUS` en `.env`. Vea [Copia de seguridad y restauración](/es/admin/backup-and-restore).

## Una máquina sin internet

El updater descarga las versiones nuevas con la clave de la licencia. Una
máquina sin internet no descarga nada: copie el paquete en `updates/` y
actualice con `./draften update <versión>`, o el updater se lo ofrecerá desde
ahí en la interfaz.

## Lo que no cambia por sí solo

- **La configuración, las instrucciones y las fuentes de los asistentes** están
  en la base de datos, y una actualización no las toca.
- **El client secret de un registro de Entra** caduca según el plazo para el
  que lo emitió; renuévelo en la interfaz (Organización › Integraciones ›
  Nuevo secreto), no actualizando.
- **El certificado HTTPS** lo renueva usted: `./draften certificate new.pem new.key`.
