# Déploiement Caplogg sur o2switch (Cas 1 – Node.js disponible)

En **Cas 1**, un seul processus Node sert à la fois l’API et le frontend (fichiers statiques). Tu peux ensuite faire pointer Apache vers ce processus.

## 1. En local : build + test

```bash
npm run start:prod
```

Cela exécute `npm run build` puis `npm run start`. Le backend sert l’API et le front (depuis `frontend/dist`). Ouvre http://localhost:3000 pour vérifier.

## 2. Sur o2switch (SSH)

### Prérequis

- Node.js disponible (`node -v`).
- PM2 pour garder le processus actif : `npm install -g pm2`

### Étapes

1. **Build en local** (optionnel si tu build sur le serveur) :
   ```bash
   npm run build
   ```

2. **Envoi des fichiers** (FTP/SFTP ou git) :
   - Dossier **`backend/`** (avec son `package.json`, sans `node_modules`).
   - Dossier **`frontend/dist/`** (contenu du build).
   - Structure sur le serveur, par exemple :
     ```
     ~/caplogg/
       backend/     (server.js, package.json, routes, data, …)
       frontend/
         dist/      (index.html, assets/, etc.)
     ```

3. **Installation des dépendances backend** :
   ```bash
   cd ~/caplogg/backend
   npm install --production
   ```

4. **Lancement avec PM2** :
   ```bash
   cd ~/caplogg/backend
   PORT=3000 pm2 start server.js --name caplogg
   pm2 save
   pm2 startup   # à exécuter une fois pour relancer au boot
   ```

5. **Variables d’environnement** (si besoin) :  
   Créer un fichier `.env` dans `backend/` (ou définir les variables dans l’environnement utilisé par PM2).

## 3. Apache (proxy vers Node)

Dans la config du site (virtualhost ou `.htaccess` si autorisé), faire proxy vers le port utilisé par Node (ex. 3000) :

```apache
ProxyPreserveHost On
ProxyPass /api http://127.0.0.1:3000/api
ProxyPassReverse /api http://127.0.0.1:3000/api
ProxyPass / http://127.0.0.1:3000/
ProxyPassReverse / http://127.0.0.1:3000/
```

Ainsi tout le trafic (front + API) passe par Node.  
Si `mod_proxy` ou `mod_proxy_http` ne sont pas activés, les demander au support o2switch.

### WebSockets (sessions en direct)

Si tu utilises les sessions en direct avec chrono :

```apache
RewriteEngine On
RewriteCond %{HTTP:Upgrade} websocket [NC]
RewriteCond %{HTTP:Connection} upgrade [NC]
RewriteRule ^/?(api/ws.*)$ ws://127.0.0.1:3000/$1 [P,L]
```

## 4. Vérification

- Page d’accueil : `https://ton-domaine.fr/`
- API : `https://ton-domaine.fr/api/health` → `{"ok":true}`

En cas de souci : logs PM2 avec `pm2 logs caplogg`.
