> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lekalao.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Mises à jour et sauvegardes

> Passer à une nouvelle version sans rien perdre, et savoir tout remonter.

## Mettre à jour

```bash theme={null}
cd /var/www/lekalao
php artisan down --render="errors::503"

git pull
composer install --no-dev --optimize-autoloader
npm ci
npm run build
php artisan migrate --force

php artisan config:cache
php artisan route:cache
php artisan view:cache

php artisan horizon:terminate
sudo systemctl restart lekalao-smtp   # si le relais tourne

php artisan up
```

<Tip>
  Pendant `down`, les liens suivis et les pixels d'ouverture répondent 503 :
  ces clics sont perdus. Choisissez un moment sans campagne en cours, et
  gardez la fenêtre courte.
</Tip>

Avant une mise à jour majeure, lisez les notes de version et faites une sauvegarde.

### Ce que les migrations font seules

Certaines versions corrigent des données existantes. Par exemple, l'installation qui n'avait pas d'administrateur de plateforme en reçoit un, son plus ancien compte, pour garder l'accès à Horizon.

## Sauvegarder

| Quoi                   | Pourquoi                                                  |
| ---------------------- | --------------------------------------------------------- |
| **La base PostgreSQL** | Tout : listes, abonnés, contenus, statistiques, réglages. |
| **`storage/app`**      | Médias, imports en cours, exports.                        |
| **`.env`**             | Surtout `APP_KEY`.                                        |

```bash theme={null}
# Chaque nuit
pg_dump --format=custom --file=/backups/lekalao-$(date +%F).dump lekalao
tar czf /backups/lekalao-storage-$(date +%F).tar.gz -C /var/www/lekalao storage/app
```

Redis n'a pas besoin d'être sauvegardé : il ne contient que des files et du cache. Une tâche perdue est reprise : les envois bloqués sont remis en file toutes les dix minutes.

<Warning>
  Sans `APP_KEY`, une base restaurée est utilisable mais les identifiants des
  fournisseurs, les secrets de webhooks et la double authentification des
  comptes sont illisibles. Gardez la clé à part des sauvegardes, dans un
  coffre.
</Warning>

## Restaurer

```bash theme={null}
php artisan down
sudo -u postgres dropdb lekalao && sudo -u postgres createdb --owner=lekalao lekalao
pg_restore --dbname=lekalao /backups/lekalao-2026-09-17.dump
tar xzf /backups/lekalao-storage-2026-09-17.tar.gz -C /var/www/lekalao
php artisan migrate --force
php artisan horizon:terminate
php artisan up
```

Vérifiez ensuite avec `php artisan lekalao:diagnose`.

## Changer de serveur

1. Installez Lekalao sur le nouveau serveur, **avec le même `APP_KEY`**.
2. Restaurez base et fichiers.
3. Basculez le DNS.
4. Les adresses de retour des fournisseurs et les liens déjà envoyés restent valables tant que l'adresse publique ne change pas.
