# Aggiornare dalla riga di comando

Quando nell’installazione gira l’updater, aggiornare dall’interfaccia è la
cosa più comoda – lo descrive [Aggiornare con l’updater](/it/admin/updating-with-the-updater).
Qui trovi la stessa procedura dalla riga di comando; funziona sempre, con
l’updater o senza. Tutti i comandi si eseguono nella cartella dell’installazione.

## Aggiornare a una nuova versione

Ogni release è un nuovo pacchetto. Puoi passarlo direttamente al comando:

```
./draften update --bundle /percorso/di/draften-<nuova versione>.tar
```

oppure copiarlo nella cartella `updates/` ed eseguire:

```
./draften update <nuova versione>
```

L’aggiornamento non causa **nessuna interruzione** e procede passo per passo:

1. verifica il pacchetto con le chiavi della release installata – prima di usare
   qualsiasi cosa al suo interno,
2. salva un dump del database in `backups/` (si tengono gli ultimi tre backup
   di prima di un aggiornamento, il numero si imposta con `DRAFTEN_BACKUPS` in
   `.env`; i backup giornalieri si contano separatamente, vedi
   [Backup e ripristino](/it/admin/backup-and-restore)),
3. esegue le migrazioni del database,
4. sostituisce i worker,
5. avvia la nuova versione del web accanto a quella che serve, e passa a
   quella nuova quando è sana.

Se la nuova versione non diventa sana, non si cambia nulla e quella precedente
continua a servire.

Un pacchetto si può anche verificare senza installarlo:

```
./draften check draften-<nuova versione>.tar
```

## Dopo l’aggiornamento

```
./draften status
```

mostra quale colore web serve, la versione e lo stato di entrambi i colori e
dei worker, lo stato dell’HTTPS e i dump del database. Nella pagina **Gestione**
i worker si fanno vivi e il giudizio è “la capacità basta”. Cosa ha cambiato la
release lo trovi nel file `NOTES.md`.

## Tornare alla versione precedente

La versione che serviva prima dell’aggiornamento resta in esecuzione senza
traffico. Ci torni immediatamente:

```
./draften rollback
```

Funziona perché il database resta leggibile anche per la versione precedente.

## Tornare a una versione ancora più vecchia

Si passa solo dal ripristino di un dump del database. Ogni dump in `backups/`
porta nel nome la versione che era in esecuzione quando è stato creato
(`<ora>-<versione>.sql.gz` prima di un aggiornamento,
`<ora>-<versione>.backup.sql.gz` giornaliero e su richiesta):

```
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 <versione> --no-backup
```

Tutto ciò che è successo in draften dopo la creazione del dump va perso.

!> Un dump di prima della sostituzione della chiave di cifratura si apre solo con
la chiave precedente, `MASTER_KEY_PREVIOUS` in `.env`. Vedi [Backup e ripristino](/it/admin/backup-and-restore).

## Una macchina senza internet

L’updater scarica le nuove release con la chiave della licenza. Una macchina
senza internet non scarica nulla: copia il pacchetto in `updates/` e aggiorna
con `./draften update <versione>` – oppure l’updater te lo propone da lì
nell’interfaccia.

## Cosa non cambia da solo

- **Impostazioni, istruzioni e fonti degli assistenti** sono nel database, e
  un aggiornamento non le tocca.
- **Il client secret di una registrazione Entra** scade secondo la durata per cui
  l’hai emesso; rinnovalo nell’interfaccia (Organizzazione → Integrazioni → Nuovo segreto),
  non con un aggiornamento.
- **Il certificato HTTPS** lo rinnovi tu: `./draften certificate new.pem new.key`.
