# Mettre à jour en ligne de commande

Quand l’updater tourne sur l’installation, la mise à jour dans l’interface est
la plus pratique – elle est décrite dans
[Mettre à jour avec l’updater](/fr/admin/updating-with-the-updater). Voici la
même procédure en ligne de commande ; elle fonctionne toujours, avec ou sans
l’updater. Toutes les commandes se lancent dans le répertoire d’installation.

## Mettre à jour vers une nouvelle version

Chaque version est un nouveau paquet. Soit vous le passez directement à la
commande :

```
./draften update --bundle /chemin/vers/draften-<nouvelle version>.tar
```

soit vous le copiez dans le dossier `updates/` et lancez :

```
./draften update <nouvelle version>
```

La mise à jour n’entraîne **aucune interruption** et se déroule étape par
étape :

1. elle vérifie le paquet avec les clés de la version installée – avant d’en
   utiliser quoi que ce soit,
2. elle enregistre un dump de la base de données dans `backups/` (les trois
   dernières sauvegardes antérieures à une mise à jour sont conservées, le
   nombre est fixé par `DRAFTEN_BACKUPS` dans `.env` ; les sauvegardes
   quotidiennes sont comptées à part, voir
   [Sauvegarde et restauration](/fr/admin/backup-and-restore)),
3. elle exécute les migrations de la base de données,
4. elle remplace les workers,
5. elle démarre la nouvelle version du web à côté de celle qui sert, et bascule
   dessus dès qu’elle est saine.

Si la nouvelle version ne devient pas saine, rien n’est basculé et la
précédente continue de servir.

Un paquet peut aussi être vérifié sans être installé :

```
./draften check draften-<nouvelle version>.tar
```

## Après la mise à jour

```
./draften status
```

indique quelle couleur du web sert, la version et l’état de santé des deux
couleurs et des workers, l’état HTTPS et les dumps de la base de données. Sur
la page **Exploitation**, les workers se signalent et le verdict est « la
capacité suffit ». Ce qu’a changé la version se trouve dans le fichier
`NOTES.md`.

## Revenir à la version précédente

La version qui servait avant la mise à jour continue de tourner, sans trafic.
Vous basculez dessus immédiatement :

```
./draften rollback
```

C’est possible parce que la base de données reste lisible aussi pour la
version précédente.

## Revenir à une version encore plus ancienne

Cela ne passe que par la restauration d’un dump de la base de données. Chaque
dump de `backups/` porte dans son nom la version qui tournait au moment où il a
été créé (`<heure>-<version>.sql.gz` avant une mise à jour,
`<heure>-<version>.backup.sql.gz` quotidien et sur demande) :

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

Tout ce qui s’est passé dans draften après la création du dump est perdu.

!> Un dump antérieur au remplacement de la clé de chiffrement ne s’ouvre
qu’avec la clé précédente, `MASTER_KEY_PREVIOUS` dans `.env`. Voir
[Sauvegarde et restauration](/fr/admin/backup-and-restore).

## Une machine sans internet

L’updater télécharge les nouvelles versions avec la clé de la licence. Une
machine sans internet ne télécharge rien : copiez le paquet dans `updates/` et
mettez à jour avec `./draften update <version>` – ou bien l’updater vous le
propose depuis là, dans l’interface.

## Ce qui ne change pas de soi-même

- **Les paramètres, consignes et sources des assistants** se trouvent dans la
  base de données, et une mise à jour n’y touche pas.
- **Le client secret d’une inscription Entra** expire selon la durée pour
  laquelle vous l’avez émis ; renouvelez-le dans l’interface (Organisation →
  Intégrations → Nouveau secret), pas par une mise à jour.
- **Le certificat HTTPS**, vous le renouvelez vous-même :
  `./draften certificate new.pem new.key`.
