# Déploiement MOVENTRA ERP sur IIS

IIS sert de proxy inverse vers le backend Node.js, accessible uniquement sur
`127.0.0.1:3000`. Les données sont enregistrées dans SQLite et sur le disque du
VPS.

## 1. Installer les prérequis

- Node.js 22.13 ou plus récent
- IIS avec Console IIS et WebSocket
- URL Rewrite 2.1 et Application Request Routing (ARR) 3
- un certificat HTTPS

Dans PowerShell administrateur :

```powershell
corepack enable
corepack prepare pnpm@11.16.0 --activate
```

## 2. Préparer l'application

Copier le projet dans `C:\Sites\MOVENTRA`, puis :

```powershell
cd "C:\Sites\MOVENTRA"
pnpm install --frozen-lockfile
pnpm db:migrate:local
pnpm build
$env:PORT = "3000"
$env:HOST = "127.0.0.1"
pnpm start
```

Dans un autre terminal, vérifier :

```powershell
curl.exe http://127.0.0.1:3000/api/health
```

La réponse doit contenir `"status":"ok"`.

## 3. Configurer IIS

Dans ARR, activer **Enable proxy**. Créer un site ou une application IIS dont le
chemin physique est `C:\Sites\MOVENTRA\deploy\iis`. Le fichier `web.config`
transmet les requêtes vers le port 3000 et utilise l'identité Windows.

Autoriser les variables de serveur :

```powershell
$appcmd = "$env:windir\System32\inetsrv\appcmd.exe"
& $appcmd set config "MOVENTRA ERP" /section:system.webServer/rewrite/allowedServerVariables /+"[name='HTTP_OAI_AUTHENTICATED_USER_ID']" /commit:apphost
& $appcmd set config "MOVENTRA ERP" /section:system.webServer/rewrite/allowedServerVariables /+"[name='HTTP_OAI_AUTHENTICATED_USER_EMAIL']" /commit:apphost
& $appcmd set config "MOVENTRA ERP" /section:system.webServer/rewrite/allowedServerVariables /+"[name='HTTP_X_FORWARDED_PROTO']" /commit:apphost
```

Activer **Anonymous Authentication**, désactiver **Windows Authentication** et
ajouter la liaison HTTPS. Moventra ERP utilise sa propre page de connexion et sa
matrice de droits. Ne pas ouvrir le port 3000 dans le pare-feu.

## Installation automatisée du package

Après extraction dans `C:\Sites\MOVENTRA`, ouvrir PowerShell en tant
qu’administrateur puis exécuter :

```powershell
Set-ExecutionPolicy -Scope Process Bypass
& "C:\Sites\MOVENTRA\deploy\iis\install-vps.ps1"
```

Le script installe les dépendances, applique les migrations sans effacer les
données, crée la tâche de démarrage automatique et vérifie `/api/health`.

## 4. Démarrage automatique

Créer une tâche planifiée exécutée au démarrage du VPS :

```powershell
powershell.exe -NoProfile -ExecutionPolicy Bypass -File "C:\Sites\MOVENTRA\deploy\iis\start-backend.ps1"
```

Configurer la tâche pour redémarrer après un échec.

## Sauvegarde

Arrêter le backend, puis sauvegarder :

- `db\moventra.sqlite`
- `db\moventra.sqlite-wal` et `db\moventra.sqlite-shm` s'ils existent
- `db\moventra-treasury.sqlite` (ainsi que ses fichiers `-wal` et `-shm` s'ils existent)
- `db\files\`

Après une mise à jour : arrêter la tâche, copier le code sans écraser `db`, puis
exécuter `pnpm install --frozen-lockfile`, `pnpm build` et redémarrer la tâche.

