# 🚀 Guide de Déploiement Rapide - Xpeditis ## 📋 TL;DR Pour déployer sur Portainer avec les migrations automatiques : ```bash # 1. Rendre le script exécutable (une seule fois) chmod +x deploy-to-portainer.sh # 2. Build et push les images ./deploy-to-portainer.sh all # 3. Aller sur Portainer et update le stack # https://portainer.weworkstudio.com # Stacks → xpeditis-preprod → Update → ✅ Re-pull image → Update ``` --- ## 📚 Documentation Complète ### Documents Disponibles 1. **DEPLOYMENT_CHECKLIST.md** ⭐ **À LIRE EN PREMIER** - Checklist complète étape par étape - Tests de vérification - Troubleshooting détaillé 2. **PORTAINER_MIGRATION_AUTO.md** - Explication technique des migrations automatiques - Guide de rollback - Métriques de performance 3. **CHANGES_SUMMARY.md** - Liste exhaustive des fichiers modifiés - Problèmes résolus - Impact des changements 4. **DOCKER_FIXES_SUMMARY.md** - 7 problèmes Docker résolus - Tests effectués - Configuration finale --- ## 🎯 Ce qui a été corrigé ### ✅ Migrations Automatiques - Les migrations de base de données s'exécutent automatiquement au démarrage - Plus besoin d'exécuter manuellement `npm run migration:run` - Fonctionne aussi bien en local qu'en production ### ✅ CSS Tailwind Compilé - Le CSS se charge correctement (plus de texte brut) - Tailwind CSS compilé avec JIT dans le build Docker ### ✅ Configuration Docker Complète - Toutes les variables d'environnement ajoutées - CORS configuré correctement - JWT, Redis, Database, S3/MinIO configurés ### ✅ Problèmes Base de Données Résolus - Enum UserRole en UPPERCASE - Organization foreign key correct - Password hashing avec Argon2 --- ## 🛠️ Utilisation du Script de Déploiement ### Déployer Backend + Frontend ```bash ./deploy-to-portainer.sh all ``` ### Déployer Backend Seulement ```bash ./deploy-to-portainer.sh backend ``` ### Déployer Frontend Seulement ```bash ./deploy-to-portainer.sh frontend ``` ### Que fait le script ? 1. ✅ Vérifie que Docker est démarré 2. 🔨 Build l'image Docker (backend et/ou frontend) 3. 📤 Push l'image vers le registry Scaleway 4. 📋 Affiche les prochaines étapes --- ## 🧪 Tester en Local Avant Déploiement ```bash # 1. Démarrer le stack complet docker-compose -f docker-compose.dev.yml up -d # 2. Vérifier les logs des migrations docker logs xpeditis-backend-dev -f # Vous devriez voir : # ✅ PostgreSQL is ready # ✅ Database migrations completed # ✅ Starting NestJS application... # 3. Tester l'API curl http://localhost:4001/api/v1/auth/login -X POST \ -H "Content-Type: application/json" \ -d '{"email":"admin@xpeditis.com","password":"AdminPassword123!"}' # 4. Ouvrir le frontend open http://localhost:3001 # 5. Se connecter # Email: admin@xpeditis.com # Password: AdminPassword123! ``` --- ## ⚠️ Checklist Avant Déploiement ### Tests Locaux - [ ] `docker-compose up -d` fonctionne sans erreur - [ ] Migrations s'exécutent automatiquement - [ ] Backend répond sur http://localhost:4001 - [ ] Frontend charge avec CSS sur http://localhost:3001 - [ ] Login fonctionne avec admin@xpeditis.com - [ ] Dashboard se charge sans erreur 500 ### Préparation Déploiement - [ ] Git branch `preprod` est à jour - [ ] Toutes les modifications sont committées - [ ] Docker Desktop est démarré - [ ] Connexion au registry Scaleway est active ### Post-Déploiement - [ ] Vérifier les logs backend sur Portainer - [ ] Vérifier que les migrations sont exécutées - [ ] Tester login sur https://app.preprod.xpeditis.com - [ ] Vérifier le dashboard sur https://app.preprod.xpeditis.com/dashboard --- ## 🔑 Identifiants par Défaut ### Utilisateurs de Test **Admin** : - Email : `admin@xpeditis.com` - Password : `AdminPassword123!` - Role : ADMIN **Manager** : - Email : `manager@xpeditis.com` - Password : `AdminPassword123!` - Role : MANAGER **User** : - Email : `user@xpeditis.com` - Password : `AdminPassword123!` - Role : USER ⚠️ **IMPORTANT** : Changer ces mots de passe en production ! --- ## 📊 Fichiers de Configuration ### Docker Compose (Local) - `docker-compose.dev.yml` - Configuration locale complète ### Portainer (Production) - `docker/portainer-stack.yml` - Stack Portainer avec toutes les variables ### Backend - `apps/backend/Dockerfile` - Build image avec migrations automatiques - `apps/backend/startup.js` - Script de démarrage (migrations + NestJS) ### Frontend - `apps/frontend/Dockerfile` - Build image avec CSS Tailwind compilé - `apps/frontend/.dockerignore` - Inclut les configs Tailwind --- ## 🆘 Problèmes Courants ### Backend crash en boucle ```bash # Vérifier que PostgreSQL est healthy docker ps | grep postgres # Redémarrer PostgreSQL docker restart xpeditis-db # Redémarrer backend docker restart xpeditis-backend ``` ### Erreur "relation does not exist" ```bash # Redémarrer backend pour forcer les migrations docker restart xpeditis-backend # Vérifier les logs docker logs xpeditis-backend -f ``` ### CSS ne se charge pas ```bash # Rebuild l'image frontend cd apps/frontend docker build -t rg.fr-par.scw.cloud/weworkstudio/xpeditis-frontend:preprod . docker push rg.fr-par.scw.cloud/weworkstudio/xpeditis-frontend:preprod # Update le stack Portainer avec Re-pull image ``` ### Login échoue (401) ```bash # Vérifier que les utilisateurs existent docker exec xpeditis-db psql -U xpeditis -d xpeditis_preprod -c "SELECT email, role FROM users;" # Si absent, vérifier les logs de migration docker logs xpeditis-backend | grep SeedTestUsers ``` **Plus de détails** : Voir `DEPLOYMENT_CHECKLIST.md` section Troubleshooting --- ## 📞 Support ### Documentation 1. **DEPLOYMENT_CHECKLIST.md** - Guide complet étape par étape 2. **PORTAINER_MIGRATION_AUTO.md** - Détails techniques migrations 3. **CHANGES_SUMMARY.md** - Liste des changements ### Logs ```bash # Backend docker logs xpeditis-backend -f # Frontend docker logs xpeditis-frontend -f # Database docker logs xpeditis-db -f # Tous docker-compose -f docker-compose.dev.yml logs -f ``` --- ## ✅ Statut Actuel | Composant | Local | Portainer | Statut | |-----------|-------|-----------|--------| | Migrations automatiques | ✅ | ⚠️ À déployer | Prêt | | CSS Tailwind | ✅ | ⚠️ À déployer | Prêt | | Variables environnement | ✅ | ⚠️ À déployer | Prêt | | UserRole UPPERCASE | ✅ | ⚠️ À déployer | Prêt | | Organization FK | ✅ | ⚠️ À déployer | Prêt | | CSV Upload | ✅ | ⚠️ À déployer | Prêt | | Documentation | ✅ | ✅ | Complet | --- ## 🎯 Prochaines Étapes 1. ✅ **Tester en local** - Vérifier que tout fonctionne 2. 🚀 **Build & Push** - Exécuter `./deploy-to-portainer.sh all` 3. 🔄 **Update Portainer** - Mettre à jour le stack avec re-pull 4. 🧪 **Tester Production** - Vérifier login et dashboard 5. 📊 **Monitorer** - Surveiller les logs pendant 1h --- **Date** : 2025-11-19 **Version** : 1.0 **Statut** : ✅ Prêt pour déploiement