# Sauvegardes

:::caution
**Rien n'est en place.** Aucune sauvegarde n'est configurée, aucune restauration n'a été
essayée. Cette page décrit ce qu'il faudrait couvrir. Une sauvegarde dont la restauration n'a
jamais été vérifiée ne compte pas comme une sauvegarde.
:::

## Ce qu'il y a à sauvegarder

| Donnée                 | Emplacement                     | Moyen cohérent                        |
| ---------------------- | ------------------------------- | ------------------------------------- |
| Umami                  | volume `umami-db` (PostgreSQL)  | `pg_dump`                             |
| Matomo — base          | volume `matomo-db` (MariaDB)    | `mariadb-dump --single-transaction`   |
| Matomo — fichiers      | volume `matomo-data`            | archive du volume (config, plugins)   |
| Rybbit — configuration | volume `rybbit-db` (PostgreSQL) | `pg_dump`                             |
| Rybbit — événements    | volume `rybbit-clickhouse`      | `BACKUP TABLE` ClickHouse             |
| Rybbit — sessions      | volume `rybbit-redis`           | non critique, reconstruit             |
| OpenObserve            | volume `openobserve-data`       | arrêt puis archive, ou export         |
| Configuration          | `infra/analytics/compose/.env`  | coffre à secrets, **jamais** le dépôt |

Copier un volume de base de données « à chaud » sans passer par l'outil de l'éditeur produit une
sauvegarde incohérente. C'est le piège le plus courant.

## Points à décider avant de mettre en place

1. **RPO et RTO.** Quelle perte de données est acceptable, en combien de temps faut-il rétablir ?
   Pour de la mesure d'audience, un RPO de 24 h est probablement suffisant — c'est un arbitrage à
   poser explicitement, pas à supposer.
2. **Durée de conservation**, cohérente avec celle décidée pour les données elles-mêmes
   ([privacy.md](/analytics/conception/privacy)). Conserver des sauvegardes au-delà de la rétention annoncée
   contredit l'engagement pris.
3. **Chiffrement et stockage hors hôte.** Une sauvegarde sur le même disque ne protège de rien.
4. **Fréquence des essais de restauration.** Au moins une fois avant mise en service, puis
   périodiquement.

## Contraintes de restauration connues

- Les **migrations de schéma ne sont pas réversibles** : restaurer une sauvegarde antérieure à une
  montée de version impose de revenir aussi à l'image précédente.
- Matomo recalcule ses rapports à partir des journaux bruts : restaurer les journaux suffit, mais
  le réarchivage est coûteux.
- ClickHouse ne se restaure pas par simple copie de fichiers si le serveur tournait.

## Ce qu'il resterait à faire

Automatiser les sauvegardes, les chiffrer, les déposer hors hôte, vérifier leur intégrité, et
**mener une restauration d'essai complète**. Tant que ce dernier point n'est pas fait, il ne faut
pas annoncer que les sauvegardes fonctionnent.
