# Déploiement sur o2switch (gestionformulaires.fnce.cc)

À faire **après** validation en local. Les noms de tables MySQL sont en MAJUSCULES et utilisés tels quels partout (MySQL sous Linux est sensible à la casse).

## 1. Domaine et HTTPS
* cPanel > **Domaines** : créer le sous-domaine `gestionformulaires.fnce.cc`, puis vérifier que le certificat **AutoSSL** est actif
  (obligatoire : la capture par caméra / scanner ne fonctionne qu'en HTTPS).

## 2. Base de données
* cPanel > **Bases de données MySQL** : créer une base (ex. `cpuser_gestfom`) et un utilisateur, lui donner **tous les privilèges** sur la base.
* Rien à importer : au premier démarrage l'application crée les tables (`sql/schema.sql`) et charge les données de référence (`sql/seed.json`).

## 3. Application Node.js
1. Envoyer le dossier `gestform` (sans `node_modules`, sans `.env`) par FTP/Gestionnaire de fichiers, par exemple dans `/home/CPANELUSER/gestform`.
2. cPanel > **Setup Node.js App** > *Create Application* : version Node 20 ou plus, *Application root* `gestform`, *Application URL* `gestionformulaires.fnce.cc`,
   *Startup file* `server.js`.
3. Variables d'environnement de l'application (même interface) :

   | Variable | Valeur |
   |---|---|
   | `DB_HOST` | `localhost` |
   | `DB_PORT` | `3306` |
   | `DB_NAME`, `DB_USER`, `DB_PASSWORD` | ceux créés à l'étape 2 |
   | `DATA_DIR` | `/home/CPANELUSER/gestform-donnees` (hors de l'application et de `public_html`) |
   | `COOKIE_SECURE` | `1` |
   | `TRUST_PROXY` | `1` |

4. **Run NPM Install**, puis **Restart**. Ouvrir https://gestionformulaires.fnce.cc : la page de connexion demande de créer l'administrateur.
   *Remarque :* cette première configuration n'est acceptée que depuis `localhost` (sécurité). Sur l'hébergeur, créer le premier compte administrateur une fois par
   SSH : `node outils/creer-admin.js identifiant "Nom complet"` (affiche un code d'activation à 6 chiffres à utiliser sur la page de connexion).

## 4. Charger les formulaires
* Menu **Chargement F3** > « Envoyer un classeur depuis ce poste » : un classeur à la fois (jusqu'à 60 Mo), avec analyse préalable, ou
* par SSH : déposer les classeurs dans un dossier puis `node outils/charger-f3.js /home/CPANELUSER/f3` (option `--simuler` pour analyser seulement).

## 5. Sauvegardes (indispensable)
* Base MySQL : sauvegardes cPanel / export régulier.
* `DATA_DIR/images` **et `DATA_DIR/images.key`** : sans la clé, les images chiffrées sont illisibles.

## Mises à jour
Remplacer les fichiers de l'application (jamais `DATA_DIR`), **Run NPM Install** si `package.json` a changé, **Restart**. Les tables manquantes sont créées automatiquement ;
toute modification de colonne doit être écrite comme migration dans `lib/db.js` (voir CLAUDE.md).
