# Guide complet - Configuration Git et déploiement Ce guide vous accompagne pas à pas pour mettre votre code sur Git et le déployer sur votre serveur VPS. --- ## 📋 Prérequis - Un compte GitHub (gratuit) - https://github.com/signup - Git installé sur votre machine locale - Accès SSH à votre serveur VPS --- ## Étape 1️⃣ : Créer un compte GitHub (si vous n'en avez pas) 1. Aller sur https://github.com/signup 2. Créer un compte avec votre email 3. Vérifier votre email 4. Se connecter à GitHub --- ## Étape 2️⃣ : Créer un dépôt GitHub 1. **Se connecter à GitHub** - Aller sur https://github.com 2. **Créer un nouveau dépôt** - Cliquer sur le bouton **"+"** en haut à droite - Sélectionner **"New repository"** 3. **Configurer le dépôt** - **Repository name** : `formation-manager-itinova` - **Description** : "Gestion des formations Manager Itinova" - **Visibilité** : - ✅ **Private** (recommandé - seul vous pouvez voir le code) - ⚠️ Public (tout le monde peut voir le code) - **NE PAS** cocher "Add a README file" - **NE PAS** ajouter .gitignore (on l'a déjà) - **NE PAS** choisir de licence - Cliquer sur **"Create repository"** 4. **Noter l'URL du dépôt** - GitHub vous montre une page avec des instructions - Noter l'URL qui ressemble à : `https://github.com/VOTRE-USERNAME/formation-manager-itinova.git` --- ## Étape 3️⃣ : Télécharger le code depuis Manus 1. **Dans l'interface Manus** - Cliquer sur l'onglet **"Code"** (à droite) - Cliquer sur le bouton **"Download all files"** (en haut) - Un fichier ZIP sera téléchargé 2. **Extraire le ZIP** - Extraire le contenu dans un dossier sur votre ordinateur - Par exemple : `C:\Projets\formation-manager-itinova` (Windows) - Ou : `~/Projets/formation-manager-itinova` (Mac/Linux) --- ## Étape 4️⃣ : Configurer Git sur votre machine locale ### Sur Windows 1. **Installer Git** - Télécharger depuis https://git-scm.com/download/win - Installer avec les options par défaut - Redémarrer votre ordinateur 2. **Ouvrir Git Bash** - Chercher "Git Bash" dans le menu Démarrer - Ouvrir Git Bash ### Sur Mac 1. **Installer Git** - Ouvrir le Terminal (Applications > Utilitaires > Terminal) - Taper : `git --version` - Si Git n'est pas installé, suivre les instructions pour l'installer ### Sur Linux 1. **Installer Git** ```bash sudo apt update sudo apt install git ``` --- ## Étape 5️⃣ : Configurer votre identité Git Dans le terminal (Git Bash sur Windows, Terminal sur Mac/Linux) : ```bash # Configurer votre nom git config --global user.name "Votre Nom" # Configurer votre email (celui de votre compte GitHub) git config --global user.email "votre.email@example.com" # Vérifier la configuration git config --list ``` --- ## Étape 6️⃣ : Initialiser Git dans votre projet 1. **Aller dans le dossier du projet** ```bash cd /chemin/vers/formation-manager-itinova ``` Exemples : - Windows : `cd C:\Projets\formation-manager-itinova` - Mac/Linux : `cd ~/Projets/formation-manager-itinova` 2. **Initialiser Git** ```bash git init ``` Vous devriez voir : `Initialized empty Git repository` 3. **Ajouter tous les fichiers** ```bash git add . ``` 4. **Créer le premier commit** ```bash git commit -m "Initial commit - Formation Manager Itinova" ``` 5. **Renommer la branche en 'main'** ```bash git branch -M main ``` --- ## Étape 7️⃣ : Connecter votre projet à GitHub 1. **Ajouter le dépôt distant** ```bash git remote add origin https://github.com/VOTRE-USERNAME/formation-manager-itinova.git ``` ⚠️ **Remplacer** `VOTRE-USERNAME` par votre nom d'utilisateur GitHub 2. **Vérifier la connexion** ```bash git remote -v ``` Vous devriez voir deux lignes avec l'URL de votre dépôt --- ## Étape 8️⃣ : Pousser le code vers GitHub 1. **Pousser le code** ```bash git push -u origin main ``` 2. **S'authentifier** - GitHub va vous demander de vous authentifier - **Méthode recommandée** : Utiliser un Personal Access Token (PAT) ### Créer un Personal Access Token (PAT) 1. **Sur GitHub** - Aller dans **Settings** (icône de profil en haut à droite) - Cliquer sur **Developer settings** (tout en bas à gauche) - Cliquer sur **Personal access tokens** > **Tokens (classic)** - Cliquer sur **Generate new token** > **Generate new token (classic)** 2. **Configurer le token** - **Note** : "Formation Manager Itinova - Déploiement" - **Expiration** : 90 days (ou No expiration si vous êtes seul) - **Cocher les permissions** : - ✅ `repo` (tous les sous-éléments) - Cliquer sur **Generate token** 3. **Copier le token** - ⚠️ **IMPORTANT** : Copier le token et le sauvegarder dans un endroit sûr - Vous ne pourrez plus le voir après avoir quitté la page 4. **Utiliser le token** - Quand Git vous demande le mot de passe, coller le token (pas votre mot de passe GitHub) - Le token remplace votre mot de passe 5. **Vérifier sur GitHub** - Aller sur https://github.com/VOTRE-USERNAME/formation-manager-itinova - Vous devriez voir tous vos fichiers --- ## Étape 9️⃣ : Configurer Git sur le serveur VPS Maintenant que le code est sur GitHub, configurons le serveur VPS pour récupérer le code. ### Se connecter au serveur VPS ```bash ssh votre-utilisateur@votre-serveur.com ``` ### Installer Git sur le serveur (si pas déjà installé) ```bash # Vérifier si Git est installé git --version # Si pas installé, installer Git sudo apt update sudo apt install git -y ``` ### Cloner le dépôt sur le serveur ```bash # Aller dans le répertoire où vous voulez installer le projet cd /var/www # ou un autre répertoire # Cloner le dépôt git clone https://github.com/VOTRE-USERNAME/formation-manager-itinova.git # Entrer dans le dossier cd formation-manager-itinova ``` ### Configurer les variables d'environnement ```bash # Créer le fichier .env nano .env ``` Copier-coller vos variables d'environnement : ```env DATABASE_URL=mysql://user:password@host:port/database RESEND_API_KEY=votre_cle_resend JWT_SECRET=votre_secret_jwt # ... autres variables ``` Sauvegarder : `Ctrl+X`, puis `Y`, puis `Entrée` ### Installer les dépendances ```bash # Installer pnpm si pas déjà installé npm install -g pnpm # Installer les dépendances du projet pnpm install ``` ### Appliquer les migrations de base de données ```bash pnpm db:push ``` ### Compiler le projet ```bash pnpm build ``` ### Démarrer le serveur avec PM2 ```bash # Installer PM2 si pas déjà installé npm install -g pm2 # Démarrer le serveur pm2 start npm --name "formation-manager" -- start # Sauvegarder la configuration PM2 pm2 save # Configurer PM2 pour démarrer au boot pm2 startup # Suivre les instructions affichées ``` --- ## Étape 🔟 : Déployer les futures mises à jour Maintenant que tout est configuré, pour les futures mises à jour : ### Sur votre machine locale ```bash # 1. Télécharger le nouveau code depuis Manus # 2. Remplacer les fichiers dans votre dossier local # 3. Ajouter les modifications git add . # 4. Créer un commit git commit -m "Description des modifications" # 5. Pousser vers GitHub git push origin main ``` ### Sur le serveur VPS ```bash # Se connecter au serveur ssh votre-utilisateur@votre-serveur.com # Aller dans le dossier du projet cd /var/www/formation-manager-itinova # Exécuter le script de mise à jour ./deploy-update.sh ``` Le script `deploy-update.sh` va automatiquement : - ✅ Sauvegarder la base de données - ✅ Arrêter le serveur - ✅ Récupérer le nouveau code depuis GitHub (`git pull`) - ✅ Installer les nouvelles dépendances - ✅ Appliquer les migrations - ✅ Recompiler le projet - ✅ Redémarrer le serveur --- ## 🔒 Sécurité - Fichiers à ne PAS pousser sur Git Le fichier `.gitignore` est déjà configuré pour exclure : - ❌ `.env` (variables d'environnement sensibles) - ❌ `node_modules/` (dépendances) - ❌ `dist/` (fichiers compilés) - ❌ Fichiers de backup de la base de données **⚠️ IMPORTANT** : Ne JAMAIS pousser le fichier `.env` sur Git ! --- ## 📞 Aide et dépannage ### Problème : "Permission denied (publickey)" **Solution** : Utiliser HTTPS au lieu de SSH pour le dépôt ```bash git remote set-url origin https://github.com/VOTRE-USERNAME/formation-manager-itinova.git ``` ### Problème : "Authentication failed" **Solution** : Utiliser un Personal Access Token au lieu du mot de passe (voir Étape 8) ### Problème : "git: command not found" **Solution** : Installer Git (voir Étape 4) ### Problème : Le script deploy-update.sh ne fonctionne pas **Solution** : Vérifier les permissions ```bash chmod +x deploy-update.sh ``` --- ## 📚 Ressources utiles - Documentation Git : https://git-scm.com/doc - Documentation GitHub : https://docs.github.com - Tutoriel Git interactif : https://learngitbranching.js.org --- ## ✅ Checklist finale Avant de déployer en production : - [ ] Code poussé sur GitHub - [ ] Serveur VPS configuré avec Git - [ ] Dépôt cloné sur le serveur - [ ] Variables d'environnement configurées (.env) - [ ] Dépendances installées (pnpm install) - [ ] Base de données migrée (pnpm db:push) - [ ] Projet compilé (pnpm build) - [ ] Serveur démarré avec PM2 - [ ] Script deploy-update.sh testé - [ ] Backup de la base de données effectué --- **Bon déploiement ! 🚀**