# 🔧 Fix Portainer Deployment Issues ## ProblĂšmes IdentifiĂ©s ### 1. ❌ Registry Mismatch (CRITIQUE) **ProblĂšme**: Portainer essaie de pull les images depuis DockerHub au lieu de Scaleway Registry. **Dans `docker/portainer-stack.yml`:** ```yaml # ❌ INCORRECT (ligne 77): image: weworkstudio/xpeditis-backend:preprod # ❌ INCORRECT (ligne 136): image: weworkstudio/xpeditis-frontend:latest ``` **CORRECTION REQUISE:** ```yaml # ✅ CORRECT: image: rg.fr-par.scw.cloud/weworkstudio/xpeditis-backend:preprod # ✅ CORRECT: image: rg.fr-par.scw.cloud/weworkstudio/xpeditis-frontend:preprod ``` --- ### 2. ❌ Tag Frontend Incorrect (CRITIQUE) **ProblĂšme**: Portainer demande `:latest` mais CI/CD ne crĂ©e ce tag QUE si `preprod` est la branche par dĂ©faut. **CORRECTION REQUISE:** ```yaml # Remplacer :latest par :preprod image: rg.fr-par.scw.cloud/weworkstudio/xpeditis-frontend:preprod ``` --- ### 3. ⚠ Bucket S3 pour CSV Rates **ProblĂšme**: Le code backend utilise `xpeditis-csv-rates` par dĂ©faut, mais Portainer configure `xpeditis-preprod-documents`. **CORRECTION REQUISE dans `portainer-stack.yml`:** ```yaml environment: # Ajouter cette ligne: AWS_S3_BUCKET: xpeditis-preprod-documents # OU crĂ©er un bucket dĂ©diĂ© CSV: AWS_S3_CSV_BUCKET: xpeditis-csv-rates ``` **Option 1 - Utiliser le mĂȘme bucket:** Pas de changement de code, juste s'assurer que `AWS_S3_BUCKET=xpeditis-preprod-documents` est bien dĂ©fini. **Option 2 - Bucket sĂ©parĂ© pour CSV (recommandĂ©):** 1. CrĂ©er le bucket `xpeditis-csv-rates` dans MinIO 2. Ajouter `AWS_S3_CSV_BUCKET: xpeditis-csv-rates` dans les env vars 3. Modifier le code backend pour utiliser `AWS_S3_CSV_BUCKET` --- ## 📝 Fichier CorrigĂ©: portainer-stack.yml ```yaml # Backend API (NestJS) xpeditis-backend: image: rg.fr-par.scw.cloud/weworkstudio/xpeditis-backend:preprod # ← FIXÉ restart: unless-stopped environment: NODE_ENV: preprod PORT: 4000 # Database DATABASE_HOST: xpeditis-db DATABASE_PORT: 5432 DATABASE_USER: xpeditis DATABASE_PASSWORD: 9Lc3M9qoPBeHLKHDXGUf1 DATABASE_NAME: xpeditis_preprod # Redis REDIS_HOST: xpeditis-redis REDIS_PORT: 6379 REDIS_PASSWORD: hXiy5GMPswMtxMZujjS2O # JWT JWT_SECRET: 4C4tQC8qym/evv4zI5DaUE1yy3kilEnm6lApOGD0GgNBLA0BLm2tVyUr1Lr0mTnV # S3/MinIO AWS_S3_ENDPOINT: http://xpeditis-minio:9000 AWS_REGION: us-east-1 AWS_ACCESS_KEY_ID: minioadmin_preprod_CHANGE_ME AWS_SECRET_ACCESS_KEY: RBJfD0QVXC5JDfAHCwdUW AWS_S3_BUCKET: xpeditis-csv-rates # ← FIXÉ pour CSV rates # CORS CORS_ORIGIN: https://app.preprod.xpeditis.com,https://www.preprod.xpeditis.com # App URLs FRONTEND_URL: https://app.preprod.xpeditis.com API_URL: https://api.preprod.xpeditis.com networks: - xpeditis_internal - traefik_network # ... labels inchangĂ©s ... # Frontend (Next.js) xpeditis-frontend: image: rg.fr-par.scw.cloud/weworkstudio/xpeditis-frontend:preprod # ← FIXÉ restart: unless-stopped environment: NODE_ENV: preprod NEXT_PUBLIC_API_URL: https://api.preprod.xpeditis.com NEXT_PUBLIC_WS_URL: wss://api.preprod.xpeditis.com networks: - traefik_network # ... labels inchangĂ©s ... ``` --- ## 🚀 Étapes pour DĂ©ployer ### 1. VĂ©rifier que les images existent dans Scaleway Registry ```bash # Login au registry Scaleway docker login rg.fr-par.scw.cloud/weworkstudio # VĂ©rifier les images disponibles (via Scaleway Console) # https://console.scaleway.com/registry ``` ### 2. Mettre Ă  jour Portainer Stack 1. Ouvre Portainer: https://portainer.ton-domaine.com 2. Va dans **Stacks** → **xpeditis** 3. Clique sur **Editor** 4. Remplace les lignes 77 et 136 avec les images corrigĂ©es 5. **Deploy the stack** (ou **Update the stack**) ### 3. CrĂ©er le bucket MinIO pour CSV ```bash # AccĂšde Ă  MinIO Console # https://minio.preprod.xpeditis.com # Login avec: # User: minioadmin_preprod_CHANGE_ME # Password: RBJfD0QVXC5JDfAHCwdUW # CrĂ©er le bucket "xpeditis-csv-rates" # Settings → Public Access: Private ``` ### 4. VĂ©rifier le dĂ©ploiement ```bash # VĂ©rifier les containers docker ps | grep xpeditis # VĂ©rifier les logs backend docker logs xpeditis-backend -f --tail=100 # VĂ©rifier les logs frontend docker logs xpeditis-frontend -f --tail=100 ``` --- ## 🐛 Debugging si ça ne fonctionne toujours pas ### VĂ©rifier l'accĂšs au registry ```bash # Teste manuellement le pull de l'image docker pull rg.fr-par.scw.cloud/weworkstudio/xpeditis-backend:preprod docker pull rg.fr-par.scw.cloud/weworkstudio/xpeditis-frontend:preprod ``` ### VĂ©rifier que les tags existent Regarde dans GitHub Actions → DerniĂšre exĂ©cution → Backend job: ``` Build and push Backend Docker image tags: rg.fr-par.scw.cloud/weworkstudio/xpeditis-backend:preprod ``` ### Erreur commune: "manifest unknown" Si tu vois cette erreur, c'est que le tag n'existe pas. Solutions: 1. Push manuellement vers la branche `preprod` pour dĂ©clencher le CI/CD 2. VĂ©rifier que le workflow GitHub Actions s'est bien exĂ©cutĂ© 3. VĂ©rifier le secret `REGISTRY_TOKEN` dans GitHub Settings --- ## 📋 Checklist de DĂ©ploiement - [ ] Corriger `portainer-stack.yml` lignes 77 et 136 avec le registry Scaleway - [ ] Changer le tag frontend de `:latest` Ă  `:preprod` - [ ] CrĂ©er le bucket MinIO `xpeditis-csv-rates` - [ ] Mettre Ă  jour la stack dans Portainer - [ ] VĂ©rifier que les containers dĂ©marrent correctement - [ ] Tester l'upload d'un fichier CSV via le dashboard admin - [ ] VĂ©rifier que le CSV apparaĂźt dans MinIO --- ## 🔐 Note sur les Credentials Les credentials dans `portainer-stack.yml` contiennent: - Passwords de production (PostgreSQL, Redis, MinIO) - JWT Secret de production - Access Keys MinIO **IMPORTANT**: Change ces credentials IMMÉDIATEMENT si ce repo est public ou accessible par des tiers!