# Guide de déploiement manuel sur VPS (sans Git)

Ce guide vous permet de déployer votre application sur un serveur VPS sans utiliser Git.

---

## 📋 Prérequis

- Accès SSH au serveur VPS
- Client SFTP (FileZilla ou WinSCP)
- Fichiers téléchargés depuis Manus

---

## Étape 1 : Télécharger les fichiers depuis Manus

1. Dans Manus, onglet "Code" → "Download all files"
2. Extraire le ZIP dans un dossier temporaire
3. Supprimer ces dossiers avant transfert :
   - `node_modules/`
   - `dist/` ou `build/`
   - `.env`
   - `backups/`

---

## Étape 2 : Transférer les fichiers via SFTP

### Avec FileZilla

1. Télécharger : https://filezilla-project.org
2. Connexion SFTP :
   - Hôte : votre-serveur.com
   - Port : 22
   - Utilisateur : votre-user
   - Mot de passe : votre-password
3. Transférer les fichiers vers `/var/www/formation-manager-itinova/`

---

## Étape 3 : Se connecter en SSH

```bash
ssh votre-utilisateur@votre-serveur.com
cd /var/www/formation-manager-itinova
```

---

## Étape 4 : Configuration (première installation)

```bash
# Installer Node.js 22
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt-get install -y nodejs

# Installer pnpm et PM2
npm install -g pnpm pm2

# Créer le fichier .env
nano .env
```

Copier vos variables d'environnement, sauvegarder (Ctrl+X, Y, Entrée)

---

## Étape 5 : Installation

```bash
# Installer les dépendances
pnpm install

# Appliquer les migrations
pnpm db:push

# Compiler
pnpm build

# Démarrer
pm2 start npm --name "formation-manager" -- start
pm2 save
pm2 startup
```

---

## Étape 6 : Mise à jour (installations suivantes)

```bash
# 1. Sauvegarder la base de données
mkdir -p backups
mysqldump -h HOST -P PORT -u USER -pPASSWORD DATABASE > backups/backup-$(date +%Y%m%d-%H%M%S).sql

# 2. Arrêter le serveur
pm2 stop formation-manager

# 3. Transférer les nouveaux fichiers via SFTP

# 4. Mettre à jour
pnpm install
pnpm db:push
pnpm build

# 5. Redémarrer
pm2 restart formation-manager
```

---

## Vérification

```bash
pm2 status
pm2 logs formation-manager
```

---

**Bon déploiement ! 🚀**
