# Déployer Globinours

La racine web doit toujours être `public/`. La base SQLite, les sauvegardes et les documents privés ne doivent jamais être servis par Nginx.

## Serveur Nginx + PHP-FPM

1. Installer PHP 8.2+ et les extensions `pdo_sqlite`, `sqlite3`, `mbstring`, `xml`, `zip`, `gd`, `curl` et `fileinfo`, ainsi que `rsync`.
2. Copier le projet dans `/var/www/globinours` et donner l’écriture à l’utilisateur PHP sur `data/`, `storage/` et `public/media/`.
3. Adapter puis installer `deploy/php-fpm/globinours.conf` et `deploy/nginx/globinours.conf`.
4. Recharger PHP-FPM et Nginx, ouvrir le domaine puis suivre `/setup`.

Le service systemd fourni est réservé à une démonstration derrière un reverse proxy. Le serveur PHP intégré n’est pas recommandé en production.

## Mise à niveau et retour arrière

Créer une archive de version contenant `VERSION`, puis lancer :

```bash
sudo -u www-data ./scripts/update.sh /tmp/globinours-1.0.0.tar.gz
```

Le script valide l’archive, crée une sauvegarde fonctionnelle, conserve un snapshot du code, active la maintenance, déploie avec `rsync`, applique les migrations et vérifie SQLite. Pour restaurer le code :

```bash
sudo -u www-data ./scripts/rollback.sh storage/releases/code-1.0.0-YYYYmmdd-HHMMSS.tar.gz
```

Une migration de base n’est volontairement jamais annulée automatiquement. Si nécessaire, restaurez ensuite le ZIP créé avant la mise à niveau depuis Paramètres > Sauvegardes.

## Maintenance planifiée

Activez la fréquence dans **Paramètres > Sauvegardes**, puis faites exécuter la commande suivante toutes les heures par cron ou un timer systemd :

```bash
sudo -u www-data php /var/www/globinours/scripts/maintenance.php run
```

La commande ne recrée une sauvegarde que lorsqu’elle est arrivée à échéance. Elle relit ensuite le ZIP, vérifie toutes les empreintes du manifeste et exécute le contrôle d’intégrité SQLite. Elle purge également les anciennes lignes du registre d’accès privé selon la politique RGPD et tente l’envoi du résumé de notifications lorsqu’il est activé. Son résultat JSON et son code de sortie peuvent être supervisés.

## YunoHost

Le paquet YunoHost est maintenu séparément dans le dépôt voisin `yunohost/`. Il téléchargera une archive officielle de Globinours avec contrôle SHA-256 après la création du premier tag stable.
