Deploiement Portail FRONT ET BACKEND DE SERVICE BUPLIC

Checklists / Deploiement Portail FRONT ET BACKEND DE SERVICE BUPLIC
XFlow sp Opérateur : Olivier BESSAN Créée le : 08/04/2026 03:36 Déploiement : 2026-04-08 — XFlow — Production — V1 En cours
74/126 (58%)

Phase 1 — Prérequis & Infrastructure

Vérifier que MongoDB démarre automatiquement au boot
Vérifier le bind IP (ne pas exposer 0.0.0.0 en prod)
Vérifier l'activation de l'authentification (security.authorization: enabled)
Vérifier l'initialisation du Replica Set (rs.initiate())
Vérifier si PostgreSQL est installé sur le(s) serveur(s)/Installer PostgreSQL si absent
Vérifier que PostgreSQL démarre automatiquement au boot ⚠️ CRITIQUE
Vérifier HAProxy (primary/replica)
Tester la connexion depuis app
Vérifier le cluster Redis cluster
Tester les connections
Vérifier la mémoire disponible
Vérifier le cluster Redis cluster
Tester les connections
Vérifier la mémoire disponible
Vérifier le nœud actif
Vérifier les exchanges et queues existants
Tester la connexion AMQP
Heartbeat configuré (60s)

heartbeat: 60 dans amqplib config

GLOBAL_DEFAULT_RABBITMQ_ENABLED=true
GLOBAL_DEFAULT_RABBITMQ_URL=amqp://user:pass@host:5672/vhost
GLOBAL_DEFAULT_RABBITMQ_EXCHANGE=atd.topic
GLOBAL_DEFAULT_RABBITMQ_QUEUE_PREFIX=atd
Vérifier le nœud actif
Vérifier les exchanges et queues existants
Tester la connexion AMQP
Heartbeat configuré (60s)

heartbeat: 60 dans amqplib config

GLOBAL_DEFAULT_RABBITMQ_ENABLED=true
GLOBAL_DEFAULT_RABBITMQ_URL=amqp://user:pass@host:5672/vhost
GLOBAL_DEFAULT_RABBITMQ_EXCHANGE=atd.topic
GLOBAL_DEFAULT_RABBITMQ_QUEUE_PREFIX=atd
Vérifier les brokers cluster
Vérifier Schema Registry
Créer les topics manquants

10 topics: bpmn.commands, bpmn.events, notifications, notifications.in-app, workflow.notifications, payment.commands, payment.events, admin.dynamics.data.push, admin.constants.data.push, immigration.eligibility

Tester SASL/OAUTHBEARER
KAFKA_BROKERS=host1:9092,host2:9092,host3:9092
KAFKA_SCHEMA_REGISTRY_URL=http://schema-registry:8081
KAFKA_SASL_MECHANISM=OAUTHBEARER
KAFKA_CLIENT_ID=atd-service
Vérifier les brokers cluster
Vérifier Schema Registry
Créer les topics manquants

10 topics: bpmn.commands, bpmn.events, notifications, notifications.in-app, workflow.notifications, payment.commands, payment.events, admin.dynamics.data.push, admin.constants.data.push, immigration.eligibility

Tester SASL/OAUTHBEARER
KAFKA_BROKERS=host1:9092,host2:9092,host3:9092
KAFKA_SCHEMA_REGISTRY_URL=http://schema-registry:8081
KAFKA_SASL_MECHANISM=OAUTHBEARER
KAFKA_CLIENT_ID=atd-service
Vérifier le cluster MinIO cluster
FILE_STORAGE_PROVIDER
FILE_STORAGE_ENDPOINT
FILE_STORAGE_ACCESS_KEY
FILE_STORAGE_SECRET_KEY
FILE_STORAGE_BUCKET
FILE_STORAGE_REGION
FILE_STORAGE_USE_SSL
FILE_STORAGE_PORT
FILE_STORAGE_LOCAL_PATH
TEMPLATE_BUCKET_NAME
Tester l'accès aux buckets
Vérifier les politiques d'accès
MINIO_ENDPOINT=http://minio:9000
MINIO_ACCESS_KEY=...
MINIO_SECRET_KEY=...
MINIO_BUCKET_NAME=atd
Vérifier le cluster MinIO cluster
Tester l'accès aux buckets
Vérifier les politiques d'accès
MINIO_ENDPOINT=http://minio:9000
MINIO_ACCESS_KEY=...
MINIO_SECRET_KEY=...
MINIO_BUCKET_NAME=atd
Vérifier la configuration KrakenD
Tester les endpoints exposés
Vérifier les certificats SSL
Recharger la config si modifiée
Vérifier la configuration KrakenD
Tester les endpoints exposés
Vérifier les certificats SSL
Recharger la config si modifiée
Vérifier les vhosts configurés
Tester les certificats SSL (expiration)
Recharger la config Nginx

Phase 2 — Dépendances Applicatives

Vérifier la disponibilité du serveur
Vérifier le realm et le client admin

realm: gnspd, grant_type: client_credentials

Vérifier les Service Account Roles (view-users, view-realm, view-clients)
Tester l'obtention d'un token client_credentials
LIB_KEYCLOAK_URL=https://auth.example.com
LIB_KEYCLOAK_PUBLIC_KEY=MIIBIjAN...
LIB_KEYCLOACK_ALGORITHM=RS256
LIB_KEYCLOAK_GNSPD_REALM=gnspd
LIB_KEYCLOAK_GNSPD_CLIENT_ID=admin-service
LIB_KEYCLOAK_GNSPD_CLIENT_SECRET=secret
LIB_KEYCLOAK_GRANT_TYPE=client_credentials
LIB_KEYCLOAK_REALMS_SYNC_ENABLED=true
LIB_KEYCLOAK_USERS_SYNC_ENABLED=true
Vérifier la clé publique RS256
Vérifier la disponibilité du serveur citoyen
Vérifier le realm citoyen
Tester l'obtention d'un token
LIB_CITIZEN_KEYCLOAK_URL=https://auth-citizen.example.com
LIB_CITIZEN_KEYCLOAK_PUBLIC_KEY=MIIBIjAN...
LIB_CITIZEN_KEYCLOACK_ALGORITHM=RS256
LIB_CITIZEN_KEYCLOAK_GNSPD_REALM=citoyens
LIB_CITIZEN_KEYCLOAK_GNSPD_CLIENT_ID=citizen-service
LIB_CITIZEN_KEYCLOAK_GNSPD_CLIENT_SECRET=secret
LIB_CITIZEN_KEYCLOAK_GRANT_TYPE=client_credentials
LIB_CITIZEN_KEYCLOAK_USERS_SYNC_ENABLED=true
Vérifier remapCitizenKeycloakEnv() au démarrage

LIB_CITIZEN_KEYCLOAK_* est remappé en LIB_KEYCLOAK_* au démarrage

Vérifier la connexion XML-RPC
Tester l'authentification
ODOO_URL=http://odoo:8069
ODOO_DB=atd
ODOO_USER=api_user
ODOO_PASSWORD=secret
ODOO_ENABLED=true
Vérifier les modules requis activés
Tester l'envoi d'un email test
SMTP_HOST=mail.example.com
SMTP_PORT=587
SMTP_PASSWORD=secret
SMTP_SECURE=true
Vérifier les credentials SMTP
Tester l'envoi d'un SMS test
SMS_GATEWAY_URL=https://sms.example.com/api
SMS_API_KEY=...
SMS_SENDER=ATD
SMS_ENABLED=true
Vérifier le solde/quota
Vérifier l'accès au Vault
Vérifier les secrets SOPS/Age Keys disponibles

SOPS + Age keys requis pour déchiffrer la config payment-gateway-service

Vérifier les fichiers .env par application
Vérifier PAYMENT_DB_SYNCHRONIZE=false en production ⚠️ CRITIQUE

CRITICAL: ne jamais mettre true en production — risque de perte de données

Vérifier les variables spécifiques à l'environnement (SP vs Voyage)

Phase 3 — Déploiement Applications

Vérifier Node.js v22.22.0 v22.22.0 / pnpm 10.33.0 / PM2 6.0.14

nvm use 22 ou node --version

Vérifier pnpm 10.33.0 v22.22.0 / pnpm 10.33.0 / PM2 6.0.14
Vérifier PM2 6.0.14 v22.22.0 / pnpm 10.33.0 / PM2 6.0.14
Vérifier Git 2.43.0 v22.22.0 / pnpm 10.33.0 / PM2 6.0.14
git pull + pnpm install
pnpm build
PM2 restart/reload
Vérifier les logs de démarrage (pas d'erreur)
Tester l'endpoint de healthcheck
Vérifier la connexion Kafka OAUTHBEARER

nécessite Keycloak Admin disponible

git pull + pnpm install
pnpm build
PM2 restart/reload
Vérifier les logs de démarrage
Tester l'endpoint de healthcheck
Vérifier remapCitizenKeycloakEnv() dans les logs
git pull + pnpm install
pnpm build
PM2 restart (1 instance UNIQUEMENT) ⚠️ CRITIQUE

CRITICAL: démarrer avec 1 seule instance — le service WebSocket est stateful. Ne PAS utiliser cluster mode PM2.

Vérifier les 4 WebSocket gateways actives
Vérifier les 7 Kafka consumers actifs
git pull
PM2 restart/reload
Vérifier les logs
Tester un événement BPMN
git pull
Déchiffrer la config SOPS ⚠️ CRITIQUE
PM2 restart
Tester un paiement sandbox
npm install
npm build

npm run portail:web:build pour la prod npm run portail:web:build:sandbox pour la sandbox

Copier les assets dans le dossier Nginx
Recharger Nginx
Variable d'environnement ⚠️ CRITIQUE
production
ENABLE_LOGGER
ENABLE_ROLE
envName
API_URL
Legacy_API_URL
PAYMENT_SOCKET_URL
TASK_SOCKET_URL
NOTIFICATION_SOCKET_URL
ZPAY_SDK_URL
ZPAY_PROVIDER_ID
PAYMENT_NOTIFICATION_URL
keycloak
CHATBOT_URL

Phase 4 — Validation Post-déploiement

Tester l'authentification agent (admin)
Tester l'authentification citoyen
Tester la création d'une demande
Tester la liste des demandes
Vérifier les consumers connectés dans Kafka UI
Tester la publication d'un événement bpmn.commands
Vérifier le traitement dans workflow-engine
Vérifier les logs messaging-service
Vérifier les queues dans RabbitMQ Management
Tester un message RPC
Vérifier les heartbeats (60s)
Tester la connexion WebSocket depuis le portail citoyen
Vérifier les 4 namespaces (/notifications, /chat, etc.)
Tester un paiement complet en sandbox
Vérifier les Kafka events payment.events
Vérifier les callbacks webhook
Vérifier les métriques PM2 (pm2 monit)
Vérifier Kafka UI (0.7.2) accessible
Configurer les alertes si nouveaux seuils
Vérifier les logs d'erreur des 30 premières minutes post-déploiement
Mettre à jour la version installée dans le gestionnaire
Documenter les incidents rencontrés
Notifier les équipes du succès du déploiement
Archiver les logs de déploiement