# Hébergement OVH — VITA FORMATION CRM

Domaine cible : **https://leads.vitaformation.tn/**

Deux cas possibles chez OVH :

| Offre | Compatible ? |
|-------|----------------|
| **Cloud Web** (moteur Node.js) | Oui — guide A |
| **VPS** | Oui — guide B |
| Hébergement web classique PHP seul | Non |

---

## A. OVH Cloud Web (recommandé si vous avez déjà un hébergement web Node)

### 1. Fichiers à envoyer (FileZilla)

Dossier racine du multisite (ex. `leads` ou `www`) :

```
server.js          ← script de lancement OVH
package.json
package-lock.json
.env               ← créé depuis .env.ovh.example (ne pas oublier)
server/
public/
scripts/
```

**Ne pas envoyer :** `node_modules/`, `data/*.db` (sauf migration voulue), `.env` local Windows.

### 2. Espace client OVH

1. **Hébergements** → votre Cloud Web → **Moteurs d'exécution**
2. Ajouter / vérifier un moteur **Node.js** (idéalement 18 ou 20) :

| Champ | Valeur |
|-------|--------|
| Nom personnalisé | `VITA CRM` |
| Moteur | Node.js (version la plus récente dispo) |
| Chemin du répertoire public | `public` |
| Environnement applicatif | `production` |
| **Script de lancement** | **`server.js`** |

3. **Multisite** → `leads.vitaformation.tn` :
   - Dossier racine = dossier où se trouvent `server.js` + `package.json`
   - Moteur d'exécution = `VITA CRM`

### 3. SSH (obligatoire une fois)

```bash
cd ~/leads          # ou le dossier racine de votre multisite
cp .env.ovh.example .env
nano .env           # renseigner JWT_SECRET + ADMIN_PASSWORD
npm ci --omit=dev
```

Générer le secret sur votre PC :

```bash
npm run secret
```

Coller le résultat dans `JWT_SECRET` du `.env` serveur.

### 4. Redémarrer

Multisite → `…` à côté de `leads.vitaformation.tn` → **Redémarrer**.

Vérifier : https://leads.vitaformation.tn/api/health  
Connexion : `admin` + votre `ADMIN_PASSWORD`.

### 5. Si page 500

Ouvrir / télécharger `startup-error.log` à la racine (créé automatiquement).  
Causes fréquentes :
- `JWT_SECRET` manquant ou trop court
- `npm ci` pas exécuté (pas de `node_modules` Linux)
- dossier `data/` non inscriptible → `mkdir -p data && chmod 755 data`

---

## B. OVH VPS

```bash
cd /var/www/leads.vitaformation.tn
cp .env.ovh.example .env
nano .env
npm ci --omit=dev
npm i -g pm2
pm2 start server.js --name vita-crm
pm2 save && pm2 startup
```

Nginx :

```nginx
server {
  server_name leads.vitaformation.tn;
  location / {
    proxy_pass http://127.0.0.1:3000;
    proxy_http_version 1.1;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
  }
}
```

Puis Certbot pour HTTPS.

---

## Variables `.env` (production)

| Variable | Valeur |
|----------|--------|
| `NODE_ENV` | `production` |
| `JWT_SECRET` | ≥ 32 caractères |
| `ADMIN_PASSWORD` | Mot de passe fort |
| `SAMPLE_DATA` | `false` |
| `SHOW_DEMO_HINTS` | `false` |
| `DB_PATH` | `./data/vita-formation.db` |

Fichier modèle : **`.env.ovh.example`**

---

## Checklist

- [ ] Multisite = Node.js + script `server.js`
- [ ] `.env` présent sur le serveur
- [ ] `npm ci --omit=dev` via SSH
- [ ] Redémarrage daemon / PM2
- [ ] `/api/health` → `"status":"ok"`
- [ ] Login admin OK
