E-SERVICE INH
BADABON · 29/05/2026 21:10
30%
17 / 55 items
Vérifier Node.js v22.22.0 infra_version

nvm use 22 ou node --version Version attendue : v22.22.0 / pnpm 10.33.0 / PM2 6.0.14

⚙️ Node.js ≥ v22.22.0 / pnpm 10.33.0 / PM2 6.0.14
Vérifier pnpm 10.33.0 infra_version

Version attendue : v22.22.0 / pnpm 10.33.0 / PM2 6.0.14

⚙️ pnpm ≥ v22.22.0 / pnpm 10.33.0 / PM2 6.0.14
Vérifier PM2 6.0.14 infra_version

Version attendue : v22.22.0 / pnpm 10.33.0 / PM2 6.0.14

⚙️ PM2 ≥ v22.22.0 / pnpm 10.33.0 / PM2 6.0.14
Vérifier Git 2.43.0 infra_version

Version attendue : v22.22.0 / pnpm 10.33.0 / PM2 6.0.14

⚙️ Git ≥ v22.22.0 / pnpm 10.33.0 / PM2 6.0.14
Vérifier la disponibilité du mongo et Replica Set manual_check
Vérification manuelle requise
Vérifier la version du mongo infra_version
🗄️ MongoDB ≥ 8.0.19
Vérifier la connectivité à la base de donnée manual_check
Vérification manuelle requise
Vérifier la disponibilité du postgres manual_check
Vérification manuelle requise
Vérifier la version du postgres infra_version
🗄️ PostgreSQL ≥ 18
Vérifier la connectivité à la base de donnée manual_check
Vérification manuelle requise
Vérifier la disponibilité du keycloak depuis le serveur d'application unit_test
ping auth-kafka.service-public.gouv.tg
Vérifier le realm et le client id manual_check

realm: gnspd, grant_type: client_credentials

Vérification manuelle requise
Vérifier la disponibilité du keycloak depuis le serveur d'application unit_test
ping kafka.service-public.gouv.tg
Vérifier le realm et le client id manual_check
Vérification manuelle requise
Vérifier l'état ou installer Redis unit_test
systemctl status redis
Vérifier la version du Redis infra_version
🗄️ Redis ≥ 7.0.15
Tester les connections unit_test
redis-cli ping
Vérifier l'état ou installer RabbitMQ unit_test
systemctl status rabbitmq-server
Vérifier la version du RabbitMQ infra_version
📨 RabbitMQ ≥ 4.2.5
Tester la connexion à l'interface manual_check
Vérification manuelle requise
Vérifier la connexion au broker manual_check

_Check cluster_

Vérification manuelle requise
Vérifier la version du broker infra_version
📨 Kafka Broker ≥ 4.2.0
Vérifier le consumer connecté dans Kafka UI manual_check

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

Vérification manuelle requise
Vérifier la connexion au Schema Registry dans les logs manual_check
Vérification manuelle requise
Vérifier la version du KrakenD infra_version
🌐 KrakenD ≥ 2.13.1
Vérifier la configuration KrakenD manual_check

s'assurer que les domaines du portail front et celui des odoo sont renseigner dans le .env

Vérification manuelle requise
Tester les endpoints exposés manual_check
Vérification manuelle requise
Vérifier le status MinIO manual_check
Vérification manuelle requise
Vérifier la version du MinIO infra_version
🪣 MinIO ≥ RELEASE.2024-11-07T00-52-20Z
Tester l'accès à l'interface manual_check
Vérification manuelle requise
Le fichier .env général CRITIQUE env_file

S'assurer que qu'il ai tous ces variable dans le fichier .env

📄 .env
environnement général
# ============================================================================ # GLOBAL — Variables partagées par toutes les applications # ============================================================================ # Nom global de l'application GLOBAL_APP_NAME=GNDAG-XFLOW-BACKEND # Fonction du nœud applicatif (xflow | xportal) GLOBAL_NODE_FUNCTION=xflow # Origines CORS autorisées (* = toutes) GLOBAL_CORS=* # Désactiver l'authentification Keycloak (true = désactivée, false = activée) GLOBAL_AUTHENTICATION_DISABLED=true # Identifiant unique du peer (pour déploiements multi-instances) GLOBAL_PEER_ID=peer-xflow-local-sp # URL du portail citoyen (utilisée pour les liens dans les notifications) APP_CITIZEN_PORTAL_URL=http://0.0.0.0:3001 # ============================================================================ # ADA — Synchronisation de la configuration dynamique # ============================================================================ # ============================================================================ # DATABASE — MongoDB partagée # ============================================================================ # URI de connexion MongoDB principale (données applicatives) GLOBAL_MAIN_DATABASE_URI=mongodb://127.0.0.1:27017/xflow_main_db # URI de connexion MongoDB pour le journal d'audit GLOBAL_JOURNAL_DATABASE_URI=mongodb://127.0.0.1:27017/xflow_journal_db # Hôte MongoDB utilisé pour les bases de données tenant APP_TENANT_DB_HOST=mongodb://127.0.0.1:27017 # Utilisateur MongoDB pour les bases de données tenant (optionnel, vide si pas d'auth) APP_TENANT_DB_USER= # Mot de passe MongoDB pour les bases de données tenant (optionnel, vide si pas d'auth) APP_TENANT_DB_PASSWORD= # ============================================================================ # RABBITMQ — Broker de messages # ============================================================================ # Activer RabbitMQ (true | false) GLOBAL_DEFAULT_RABBITMQ_ENABLED=true # Hôte du serveur RabbitMQ GLOBAL_DEFAULT_RABBITMQ_HOST=localhost # Port du serveur RabbitMQ GLOBAL_DEFAULT_RABBITMQ_PORT=5672 # Nom d'utilisateur RabbitMQ GLOBAL_DEFAULT_RABBITMQ_USERNAME=guest # Mot de passe RabbitMQ GLOBAL_DEFAULT_RABBITMQ_PASSWORD=guest # URL complète de connexion AMQP GLOBAL_DEFAULT_RABBITMQ_URL=amqp://guest:guest@localhost:5672 # ============================================================================ # KEYCLOAK — Authentification / Autorisation (Admin) # ============================================================================ # Clé publique Keycloak pour la vérification des JWT LIB_KEYCLOAK_PUBLIC_KEY=mock-public-key # Algorithme de signature JWT (RS256) LIB_KEYCLOACK_ALGORITHM=RS256 # Realm GNSPD LIB_KEYCLOAK_GNSPD_REALM=gnspd # Client ID de l'application dans Keycloak LIB_KEYCLOAK_GNSPD_CLIENT_ID=xflow-backend # Client Secret de l'application dans Keycloak LIB_KEYCLOAK_GNSPD_CLIENT_SECRET=mock-secret # Rôle par défaut attribué aux nouveaux utilisateurs LIB_KEYCLOAK_GNSPD_DEFAULT_ROLE=user # URL de base du serveur Keycloak LIB_KEYCLOAK_URL=http://localhost:8080 # Realm par défaut LIB_KEYCLOAK_DEFAULT_REALM=master # URI de redirection après authentification LIB_KEYCLOAK_REDIRECT_URI=http://localhost:3000 # Identifiants admin Keycloak (pour les opérations de gestion) LIB_KEYCLOAK_USERNAME=admin LIB_KEYCLOAK_PASSWORD=admin # Type de grant OAuth2 (client_credentials | password) LIB_KEYCLOAK_GRANT_TYPE=client_credentials # --- Synchronisation des rôles --- # Activer la sync des rôles Keycloak → base locale (true | false) LIB_KEYCLOAK_ROLES_SYNC_ENABLED=false # Expression cron pour la sync des rôles LIB_KEYCLOAK_ROLES_SYNC_CRON_EXPRESSION=0 0 * * * # Taille du batch pour la sync des rôles LIB_KEYCLOAK_ROLES_BATCH_SIZE=100 # --- Synchronisation des rôles composites --- # Activer la sync des rôles composites (true | false) LIB_KEYCLOAK_COMPOSITE_ROLES_SYNC_ENABLED=false # Expression cron pour la sync des rôles composites LIB_KEYCLOAK_COMPOSITE_ROLES_SYNC_CRON_EXPRESSION=0 0 * * * # Taille du batch pour la sync des rôles composites LIB_KEYCLOAK_COMPOSITE_ROLES_BATCH_SIZE=100 # --- Synchronisation des realms --- # Activer la sync des realms Keycloak (true | false) LIB_KEYCLOAK_REALMS_SYNC_ENABLED=false # Expression cron pour la sync des realms LIB_KEYCLOAK_REALMS_SYNC_CRON_EXPRESSION=0 0 * * * # Taille du batch pour la sync des realms LIB_KEYCLOAK_REALMS_BATCH_SIZE=10 # --- Synchronisation des utilisateurs --- # Activer la sync des utilisateurs Keycloak → base locale (true | false) LIB_KEYCLOAK_USERS_SYNC_ENABLED=false # Expression cron pour la sync des utilisateurs LIB_KEYCLOAK_USERS_SYNC_CRON_EXPRESSION=0 0 * * * # Taille du batch pour la sync des utilisateurs LIB_KEYCLOAK_USERS_BATCH_SIZE=100 # ============================================================================ # NOTIFICATION — Email, SMS, Mailers # ============================================================================ # Système asynchrone utilisé pour envoyer les notifications (cron | rabbitmq) LIB_NOTIFICATION_ASYNC_SYSTEM=cron # Activer l'envoi d'emails (true | false) LIB_NOTIFICATION_EMAIL_ENABLED=false # Activer l'envoi de SMS (true | false) LIB_NOTIFICATION_SMS_ENABLED=false # Client mailer actif (mailhog | mailtrap | sendgrid | zimbra) LIB_NOTIFICATION_MAILER_CLIENT_NAME=zimbra # Activer le chargement dynamique des données de notification LIB_NOTIFICATION_DATA_LOADER_ENABLED=false # Activer le chargement dynamique des templates LIB_TEMPLATE_DATA_LOADER_ENABLED=false # --- Job cron de notification --- # Activer le job cron d'envoi des notifications en attente (true | false) LIB_NOTIFICATION_JOB_ENABLED=false # Expression cron du job de notification LIB_NOTIFICATION_JOB_CRON=0 0 * * * # --- RabbitMQ Notification --- # Activer RabbitMQ comme transport de notifications (true | false) LIB_NOTIFICATION_RABBITMQ_ENABLED=true # Nom de la queue RabbitMQ pour les notifications LIB_NOTIFICATION_RABBITMQ_QUEUE=notifications # Nom de l'exchange RabbitMQ pour les notifications LIB_NOTIFICATION_RABBITMQ_EXCHANGE=notifications # Routing key pour les notifications LIB_NOTIFICATION_RABBITMQ_ROUTING_KEY=notifications # --- SMS TG --- # API ID du fournisseur TG SMS LIB_NOTIFICATION_TG_SMS_CLIENT_API_ID=test # Clé API du fournisseur TG SMS LIB_NOTIFICATION_TG_SMS_CLIENT_API_KEY=test # URL de l'endpoint API TG SMS LIB_NOTIFICATION_TG_SMS_CLIENT_API_ENDPOINT=http://localhost:8080 # --- SMS Twilio --- # Account SID Twilio LIB_NOTIFICATION_TWILIO_ACCOUNT_SID=AC123 # Token d'authentification Twilio LIB_NOTIFICATION_TWILIO_AUTH_TOKEN=test # SID du service de messagerie Twilio LIB_NOTIFICATION_TWILIO_MESSAGING_SERVICE_SID=MG123 # Numéro de téléphone Twilio pour l'envoi LIB_NOTIFICATION_TWILIO_MESSAGING_PHONE_NUMBER=+19097643915 # Codes pays restreints pour l'envoi alphanumérique (séparés par virgule) LIB_NOTIFICATION_TWILIO_ALPHANUM_SID_RESTRICTED_COUNTRY_CODES=US ## Zimbra LIB_NOTIFICATION_MAILER_CLIENT_NAME=zimbra LIB_NOTIFICATION_MAILER_ZIMBRA_ENABLED=true LIB_NOTIFICATION_MAILER_ZIMBRA_ENABLE_TLS=true LIB_NOTIFICATION_MAILER_ZIMBRA_HOST=mail.gouv.tg LIB_NOTIFICATION_MAILER_ZIMBRA_PORT=465 LIB_NOTIFICATION_MAILER_ZIMBRA_USERNAME=noreply@service-public.gouv.tg LIB_NOTIFICATION_MAILER_ZIMBRA_PASSWORD= LIB_NOTIFICATION_MAILER_ZIMBRA_DEFAULT_MAIL_FROM=noreply@service-public.gouv.tg # --- Mailer Mailtrap (désactivé par défaut) --- # Activer Mailtrap (true | false) LIB_NOTIFICATION_MAILER_MAILTRAP_ENABLED=false # Activer TLS pour Mailtrap (true | false) LIB_NOTIFICATION_MAILER_MAILTRAP_ENABLE_TLS=false # --- Mailer SendGrid (désactivé par défaut) --- # Activer SendGrid (true | false) LIB_NOTIFICATION_MAILER_SENDGRID_ENABLED=false # Activer TLS pour SendGrid (true | false) LIB_NOTIFICATION_MAILER_SENDGRID_ENABLE_TLS=false # --- Mailer Mailhog (activé par défaut en dev) --- # Activer Mailhog (true | false) LIB_NOTIFICATION_MAILER_MAILHOG_ENABLED=true # Activer TLS pour Mailhog (true | false) LIB_NOTIFICATION_MAILER_MAILHOG_ENABLE_TLS=false # Hôte du serveur Mailhog LIB_NOTIFICATION_MAILER_MAILHOG_HOST=localhost # Port du serveur Mailhog LIB_NOTIFICATION_MAILER_MAILHOG_PORT=1025 # Adresse email expéditeur par défaut LIB_NOTIFICATION_MAILER_MAILHOG_DEFAULT_MAIL_FROM=test@example.com # --- SMTP générique --- # Activer le mode sécurisé SMTP (true | false) LIB_MAILER_SMTP_SECURE=false # Port SMTP LIB_MAILER_SMTP_PORT=587 # ============================================================================ # STOCKAGE DE FICHIERS — MinIO / S3 # ============================================================================ # Fournisseur de stockage (minio | s3 | contabo | local) FILE_STORAGE_PROVIDER=minio # Endpoint du serveur de stockage FILE_STORAGE_ENDPOINT=localhost # Clé d'accès au stockage FILE_STORAGE_ACCESS_KEY=minioadmin # Clé secrète du stockage FILE_STORAGE_SECRET_KEY=minioadmin # Nom du bucket principal FILE_STORAGE_BUCKET=files # Région du stockage FILE_STORAGE_REGION=us-east-1 # Activer SSL pour le stockage (true | false) FILE_STORAGE_USE_SSL=false # Port du serveur de stockage FILE_STORAGE_PORT=9000 # Chemin local de stockage (fallback) FILE_STORAGE_LOCAL_PATH=./storage/files # Nom du bucket pour les templates TEMPLATE_BUCKET_NAME=templates # Nom du bucket pour les vouchers générés FILE_VOUCHER_BUCKET_NAME=generated # --- Synchronisation de fichiers --- # Activer la sync de fichiers entre instances (true | false) FILE_SYNC_ENABLED=false # Taille du batch de sync FILE_SYNC_BATCH=10 # Expression cron pour la sync de fichiers FILE_SYNC_EXPRESSION=0 0 * * * # Endpoint de l'API de sync FILE_SYNC_ENDPOINT=http://localhost:4002/api/v1/admin # ============================================================================ # KAFKA / AutoMQ — Streaming de messages # ============================================================================ # Activer Kafka (true | false) LIB_KAFKA_ENABLED=true # Client ID Kafka (identifie cette application auprès du broker) LIB_KAFKA_CLIENT_ID=xflow-message-service # Liste des brokers Kafka (séparés par virgule) LIB_KAFKA_BROKERS=localhost:19092 # Topics Kafka à consommer (séparés par virgule) LIB_KAFKA_TOPICS=payment.events,payment.commands,bpmn.commands,notifications,messages,events,workflow.notifications # ID du groupe de consommateurs Kafka LIB_KAFKA_CONSUMER_GROUP_ID=xflow-group-xflow # ID du groupe cible pour le routage inter-instances LIB_KAFKA_TARGET_GROUP_ID=xportal-group-portal # Activer SSL pour Kafka (true | false) LIB_KAFKA_SSL=false # --- SASL Authentication --- # Mécanisme SASL (plain | scram-sha-256 | scram-sha-512 | oauthbearer) LIB_KAFKA_SASL_MECHANISM=oauthbearer # Identifiants SASL (pour plain/scram) LIB_KAFKA_SASL_USERNAME= LIB_KAFKA_SASL_PASSWORD= # --- SASL OAUTHBEARER (Keycloak) --- # URL du endpoint token pour OAuth Bearer LIB_KAFKA_SASL_OAUTHBEARER_TOKEN_URL=https://auth26-gnspd.sandbox.gouv.tg/realms/portail/protocol/openid-connect/token # Client ID OAuth Bearer LIB_KAFKA_SASL_OAUTHBEARER_CLIENT_ID=portail_api # Client Secret OAuth Bearer LIB_KAFKA_SASL_OAUTHBEARER_CLIENT_SECRET= # --- Kafka Docker --- # Hostname/IP pour KAFKA_ADVERTISED_LISTENERS (Docker) KAFKA_EXTERNAL_HOST=localhost # --- Kafka Tuning --- # Timeout de connexion au broker (ms) LIB_KAFKA_CONNECTION_TIMEOUT=10000 # Timeout des requêtes Kafka (ms) LIB_KAFKA_REQUEST_TIMEOUT=30000 # Nombre de tentatives de retry LIB_KAFKA_RETRY_COUNT=5 # Activer le mode idempotent du producteur (true | false) LIB_KAFKA_PRODUCER_IDEMPOTENT=true # --- Schema Registry (Confluent) --- # URL du Schema Registry LIB_KAFKA_SCHEMA_REGISTRY_URL=http://localhost:8081 # Identifiants du Schema Registry LIB_KAFKA_SCHEMA_REGISTRY_USERNAME=admin LIB_KAFKA_SCHEMA_REGISTRY_PASSWORD=admin # CHATWOOT CHATWOOT_URL=https://chatwoot.sandbox.gouv.tg CHATWOOT_ACCOUNT_ID=2 CHATWOOT_API_TOKEN=smMpw9V5QXN2D24RVRrs21Qb CHATWOOT_INBOX_ID=7 # ============================================================================ # ODOO — API Tourisme (événements pour le bordereau de voyage) # ============================================================================ # URL de base de l'API Odoo tourisme (événements, tours, activités) ODOO_API_BASE_URL=https://odoo-api.destination-togo.com/odoo
Le fichier .env.administration_api CRITIQUE env_file

S'assurer que qu'il ai tous ces variable dans le fichier

📄 .env.administration_api — Administration-api
# ============================================================================ # GLOBAL # ============================================================================ # Environnement d'exécution (development | production | staging | test) NODE_ENV=development # ============================================================================ # APP — Administration API # ============================================================================ # Nom de l'application (utilisé comme identifiant RabbitMQ, logs, etc.) APP_NAME=administration-api # Hôte d'écoute du serveur HTTP APP_ADMIN_API_HOST=0.0.0.0 # Port d'écoute du serveur HTTP APP_ADMIN_API_PORT=4002 # URL de base publique de l'API (utilisée pour les liens, CORS, etc.) APP_ADMIN_API_BASE_URL=http://0.0.0.0:4002 # Préfixe des routes API (ex: api/v1/) APP_ADMIN_API_PREFIX=api/v1/ # Répertoire de stockage des fichiers de logs APP_ADMIN_API_LOGS_DIRECTORY=logs/administration-api # Rejeter les publications directes ERP/pStudio sur un noeud xportal (true | false) APP_REJECT_DIRECT_ERP_PUBLISH=false # ============================================================================ # LIBS — Les variables partagées sont dans .env.sample (global) # ============================================================================ # ============================================================================ # CRON — Dynamics # ============================================================================ # Activer le cron de synchronisation dynamics (true | false) DYNAMICS_CRON_ENABLED=true # Expression cron pour la synchronisation dynamics (5 champs) DYNAMICS_CRON_EXPRESSION=*/1 * * * *
Le fichier .env.citizen_portal_api CRITIQUE env_file

S'assurer que qu'il ai tous ces variable dans le fichier

📄 .env.citizen_portal_api — Citizen-api
# ============================================================================ # GLOBAL # ============================================================================ # Environnement d'exécution (development | production | staging | test) NODE_ENV=development # ============================================================================ # APP — Citizen Portal API # ============================================================================ # Nom de l'application (utilisé comme identifiant RabbitMQ, logs, etc.) APP_NAME=citizen-portal-api # Hôte d'écoute du serveur HTTP APP_CITIZEN_PORTAL_API_HOST=0.0.0.0 # Port d'écoute du serveur HTTP APP_CITIZEN_PORTAL_API_PORT=4001 # URL de base publique de l'API APP_CITIZEN_PORTAL_API_BASE_URL=http://0.0.0.0:4001 # Préfixe des routes API APP_CITIZEN_PORTAL_API_PREFIX=api/v1/ # Répertoire de stockage des fichiers de logs APP_CITIZEN_PORTAL_API_LOGS_DIRECTORY=logs/citizen-portal-api # ============================================================================ # DATABASE — PostgreSQL (Payment) # ============================================================================ # Hôte du serveur PostgreSQL PAYMENT_DB_HOST=localhost # Port du serveur PostgreSQL PAYMENT_DB_PORT=5432 # Utilisateur PostgreSQL PAYMENT_DB_USER=postgres # Mot de passe PostgreSQL PAYMENT_DB_PASSWORD=postgres # Nom de la base de données de paiement PAYMENT_DB_NAME=xflow_payment_db # Synchroniser le schéma TypeORM automatiquement (true | false) — NE PAS activer en production PAYMENT_DB_SYNCHRONIZE=true # Activer les logs SQL TypeORM (true | false) PAYMENT_DB_LOGGING=true # Activer SSL pour PostgreSQL (true | false) PAYMENT_DB_SSL=false # ============================================================================ # LIBS — Payment # ============================================================================ # Clé de chiffrement pour les données sensibles de paiement (AES) LIB_PAYMENT_ENCRYPTION_KEY= # ============================================================================ # ODOO — Intégration ERP # ============================================================================ # URL du endpoint JSON-RPC Odoo ODOO_URL=http://localhost:8069/jsonrpc # Clé secrète API Odoo ODOO_API_SECRET_KEY= # Utilisateur Odoo ODOO_USER=admin # Nom de la base de données Odoo ODOO_DB=odoo_db # ============================================================================ # XPORTAL — Intégration partage de fichiers # ============================================================================ # URL du endpoint xPortal pour le partage de fichiers XPORTAL_SHARE_FILES_URL=https://integration.xportal.gouv.tg/sharefiles/xportal # ============================================================================ # CHATWOOT — Intégration support client # ============================================================================ # URL de l'instance Chatwoot CHATWOOT_URL=https://chatwoot.sandbox.gouv.tg # ID du compte Chatwoot CHATWOOT_ACCOUNT_ID=2 # Token API Chatwoot CHATWOOT_API_TOKEN= # ID de la boîte de réception Chatwoot CHATWOOT_INBOX_ID=7 # ============================================================================ # CHATBOT — API Python RAG streaming # ============================================================================ # URL de l'API chatbot CHATBOT_API_URL=http://localhost:8000 # Clé d'authentification API chatbot CHATBOT_API_KEY= # ============================================================================ # KPI — Base de données dashboard # ============================================================================ # Hôte du serveur PostgreSQL KPI KPI_DB_HOST=localhost # Port du serveur PostgreSQL KPI KPI_DB_PORT=5432 # Nom de la base de données KPI KPI_DB_NAME=kpi_db # Utilisateur PostgreSQL KPI KPI_DB_USER=kpi_user # Mot de passe PostgreSQL KPI KPI_DB_PASSWORD= # Activer SSL pour PostgreSQL KPI (true | false) KPI_DB_SSL=false # ============================================================================ # CAL.COM — Intégration prise de rendez-vous # ============================================================================ # URL de l'API Cal.com CALCOM_API_URL=https://api.cal.com # Clé API Cal.com CALCOM_API_KEY= # Version API pour les réservations CALCOM_API_VERSION_BOOKINGS=2026-02-25 # Version API pour les créneaux CALCOM_API_VERSION_SLOTS=2024-09-04 # Version API pour les types d'événements CALCOM_API_VERSION_EVENT_TYPES=2024-06-14 # Secret pour la vérification des webhooks Cal.com CALCOM_WEBHOOK_SECRET=change_me_in_production # ============================================================================ # VECTOR SEARCH — Qdrant + Embeddings locaux # ============================================================================ # Activer la recherche vectorielle (true | false) VECTOR_SEARCH_ENABLED=true # Hôte du serveur Qdrant QDRANT_HOST=localhost # Port du serveur Qdrant QDRANT_PORT=6333 # Nom du modèle d'embeddings VECTOR_SEARCH_MODEL_NAME=Xenova/paraphrase-multilingual-MiniLM-L12-v2 # Seuil de score de similarité (0.0 à 1.0) VECTOR_SEARCH_SCORE_THRESHOLD=0.5 # ============================================================================ # CRON — Dynamics # ============================================================================ # Activer le cron de synchronisation dynamics (true | false) DYNAMICS_CRON_ENABLED=true # Expression cron pour la synchronisation dynamics (5 champs) DYNAMICS_CRON_EXPRESSION=*/1 * * * *
Le fichier .env.messaging_service CRITIQUE env_file

S'assurer que qu'il ai tous ces variable dans le fichier

📄 .env.messaging_service — Messaging-api
# ============================================================================ # GLOBAL # ============================================================================ # Environnement d'exécution (development | production | staging | test) NODE_ENV=development # ============================================================================ # APP — Messaging Service # ============================================================================ # Nom de l'application (utilisé comme identifiant RabbitMQ, logs, etc.) APP_NAME=messaging-service # Port d'écoute du serveur HTTP et WebSocket APP_MESSAGING_SERVICE_PORT=4100 # Hôte d'écoute du serveur APP_MESSAGING_SERVICE_HOST=0.0.0.0 # Préfixe des routes API REST APP_MESSAGING_SERVICE_API_PREFIX=api/v1/message # URL de base publique du service APP_MESSAGING_SERVICE_APP_BASE_URL=http://localhost:3100 # Répertoire de stockage des fichiers de logs APP_MESSAGING_SERVICE_API_LOGS_DIRECTORY=./logs/messaging-service # ============================================================================ # REDIS — Partagé entre tous les services (déduplication cross-instance) # ============================================================================ # Hôte Redis utilisé pour le cache et la déduplication inter-instances GLOBAL_DEFAULT_REDIS_HOST=localhost # Port Redis GLOBAL_DEFAULT_REDIS_PORT=6379 # ============================================================================ # LIBS — Kafka # ============================================================================ # Topics Kafka à consommer (séparés par virgule) LIB_KAFKA_TOPICS=payment.events,payment.commands,bpmn.commands,notifications,messages,events,workflow.notifications # ============================================================================ # LIBS — RabbitMQ (spécifique au messaging service) # ============================================================================ # Nom de l'exchange RabbitMQ pour le routage des messages entrants MESSAGING_SERVICE_RABBITMQ_EXCHANGE_NAME=xflow.messages # Préfixe de la routing key pour les messages entrants MESSAGING_SERVICE_RABBITMQ_ROUTING_KEY_PREFIX=inbound # Identifiant du peer pour le routage inter-instances (optionnel) MESSAGING_SERVICE_PEER_ID= # ============================================================================ # IMMIGRATION — DGDN (Direction Générale de la Documentation Nationale) # ============================================================================ # URL de l'API de vérification de visa DGDN IMMIGRATION_DGDN_CHECK_VISA_API_URL=http://localhost:8080/api/visa/check # Nom d'utilisateur pour l'API DGDN IMMIGRATION_DGDN_CHECK_VISA_USERNAME=dgdn_user # Mot de passe pour l'API DGDN IMMIGRATION_DGDN_CHECK_VISA_PASSWORD=dgdn_password
Le fichier .env.payment_gateway_service CRITIQUE env_file

S'assurer que qu'il ai tous ces variable dans le fichier

📄 .env.payment_gateway_service — Payment_gateway
# ============================================================================ # GLOBAL # ============================================================================ # Environnement d'exécution (development | production | staging | test) NODE_ENV=development # ============================================================================ # APP — Payment Gateway Service # ============================================================================ # Nom de l'application (utilisé comme identifiant RabbitMQ, logs, etc.) APP_NAME=payment-gateway-service # Port d'écoute du serveur HTTP APP_PAYMENT_GATEWAY_PORT=3200 # URL de base publique du service APP_PAYMENT_GATEWAY_BASE_URL=http://0.0.0.0:3200 # Préfixe des routes API REST APP_PAYMENT_GATEWAY_PREFIX=api/v1/payment # Hôte d'écoute du serveur APP_PAYMENT_GATEWAY_HOST=0.0.0.0 # Répertoire de stockage des fichiers de logs APP_PAYMENT_GATEWAY_LOGS_DIRECTORY=./logs/payment-gateway-service # ============================================================================ # DATABASE — PostgreSQL (Payment) # ============================================================================ # Hôte du serveur PostgreSQL PAYMENT_DB_HOST=localhost # Port du serveur PostgreSQL PAYMENT_DB_PORT=5432 # Utilisateur PostgreSQL PAYMENT_DB_USER=postgres # Mot de passe PostgreSQL PAYMENT_DB_PASSWORD=postgres # Nom de la base de données de paiement PAYMENT_DB_NAME=xflow_payment_db # Synchroniser le schéma TypeORM automatiquement (true | false) — NE PAS activer en production PAYMENT_DB_SYNCHRONIZE=true # Activer les logs SQL TypeORM (true | false) PAYMENT_DB_LOGGING=true # Activer SSL pour PostgreSQL (true | false) PAYMENT_DB_SSL=false # ============================================================================ # LIBS — Payment # ============================================================================ # Clé de chiffrement pour les données sensibles de paiement (AES) LIB_PAYMENT_ENCRYPTION_KEY= # ============================================================================ # LIBS — Journal # ============================================================================ # Activer le journal d'audit applicatif (true | false) LIB_JOURNAL_ENABLED=false # Activer le journal d'audit du moteur BPMN (true | false) LIB_ENGINE_JOURNAL_ENABLED=false # ============================================================================ # SOPS — Déchiffrement des credentials de paiement # ============================================================================ # Chemin vers la clé privée age pour déchiffrer config/payment_configs.enc.yaml # En dev : config/.keys/dev.key | En prod : /etc/xflow/age.key SOPS_AGE_KEY_FILE=config/.keys/dev.key # ============================================================================ # GOUV REGISTRY — Registre gouvernemental # ============================================================================ # URL du registre gouvernemental GOUV_REGISTRY_URL=http://localhost:8080/registry # Clé API pour l'accès au registre GOUV_REGISTRY_API_KEY=your-api-key # Schéma du registre à utiliser GOUV_REGISTRY_SCHEMA=default
Le fichier .env.workflow_engine_service CRITIQUE env_file

S'assurer que qu'il ai tous ces variable dans le fichier

📄 .env.workflow_engine_service — Workflow_engine
# ============================================================================ # GLOBAL # ============================================================================ # Environnement d'exécution (development | production | staging | test) NODE_ENV=development # ============================================================================ # APP — Workflow Engine Service (moteur BPMN) # ============================================================================ # Nom de l'application (utilisé comme identifiant RabbitMQ, logs, etc.) APP_NAME=workflow-engine-service # Hôte d'écoute du serveur HTTP APP_WORKFLOW_ENGINE_SERVICE_HOST=0.0.0.0 # Port d'écoute du serveur HTTP APP_WORKFLOW_ENGINE_SERVICE_PORT=4300 # URL de base publique du service APP_WORKFLOW_ENGINE_SERVICE_BASE_URL=http://0.0.0.0:4300 # Répertoire de stockage des fichiers de logs APP_WORKFLOW_ENGINE_SERVICE_LOGS_DIRECTORY=logs/workflow-engine-service # Clé API pour sécuriser les endpoints du moteur BPMN APP_WORKFLOW_ENGINE_API_KEY=202bfa815b00 # ============================================================================ # REDIS — Cache du moteur BPMN # ============================================================================ # Hôte du serveur Redis APP_WORKFLOW_ENGINE_SERVICE_REDIS_HOST=localhost # Port du serveur Redis APP_WORKFLOW_ENGINE_SERVICE_ENGINE_REDIS_PORT=6379 # Activer Redis pour le cache du moteur (true | false) APP_WORKFLOW_ENGINE_SERVICE_ENGINE_REDIS_ENABLED=false # ============================================================================ # BPMN ENGINE — Configuration du moteur de workflow # ============================================================================ # Chemin vers les définitions BPMN (fichiers .bpmn) APP_WORKFLOW_ENGINE_SERVICE_DEFINITIONS_PATH=models-definitions/ # URL du Workflow Registry Service (pour récupérer les définitions) APP_WORKFLOW_REGISTRY_SERVICE_BASE_URL=http://0.0.0.0:4301 # --- MongoDB spécifique au moteur BPMN --- # URI de connexion MongoDB dédiée au moteur BPMN (instances, tokens, logs) APP_WORKFLOW_ENGINE_SERVICE_DATABASE_URI=mongodb://localhost:27017/portail_workflow_engine_db # Nom de la base MongoDB du moteur BPMN APP_WORKFLOW_ENGINE_SERVICE_DATABASE_NAME=portail_workflow_engine_db # --- DataStore du moteur BPMN --- # Activer les save points pour permettre engine.restart() (true | false) APP_WORKFLOW_ENGINE_SERVICE_ENABLE_SAVE_POINTS=true # Sauvegarder les logs d'exécution dans le DataStore (true | false) APP_WORKFLOW_ENGINE_SERVICE_SAVE_LOGS=true # Sauvegarder le source BPMN dans le DataStore (true | false) — false réduit la taille en base APP_WORKFLOW_ENGINE_SERVICE_SAVE_SOURCE=false # Activer la sortie console du logger BPMN interne (true | false) APP_WORKFLOW_ENGINE_SERVICE_LOG_TO_CONSOLE=true
Le fichier .env.workflow_registry_service CRITIQUE env_file

S'assurer que qu'il ai tous ces variable dans le fichier

📄 .env.workflow_registry_service — Workflow_registry
# ============================================================================ # GLOBAL # ============================================================================ # Environnement d'exécution (development | production | staging | test) NODE_ENV=development # ============================================================================ # APP — Workflow Registry Service # ============================================================================ # Nom de l'application (utilisé comme identifiant RabbitMQ, logs, etc.) APP_NAME=workflow-registry-service # Hôte d'écoute du serveur HTTP APP_WORKFLOW_REGISTRY_SERVICE_HOST=0.0.0.0 # Port d'écoute du serveur HTTP APP_WORKFLOW_REGISTRY_SERVICE_PORT=4301 # URL de base publique du service APP_WORKFLOW_REGISTRY_SERVICE_BASE_URL=http://0.0.0.0:4301 # Répertoire de stockage des fichiers de logs APP_WORKFLOW_REGISTRY_SERVICE_LOGS_DIRECTORY=logs/workflow-registry-service # Préfixe des routes API REST APP_WORKFLOW_REGISTRY_SERVICE_PREFIX=api/v1/ # ============================================================================ # DATABASE — MongoDB spécifique au registry # ============================================================================ # URI de connexion MongoDB pour le registre des workflows APP_WORKFLOW_REGISTRY_SERVICE_DATABASE_URI=mongodb://localhost:27017/portail_workflow_registry_db # Hôte MongoDB pour les bases de données tenant APP_TENANT_DB_HOST=mongodb://127.0.0.1:27017 # ============================================================================ # LIBS — Les variables partagées sont dans .env.sample (global) # ============================================================================
Le fichier .env.workflow_service_task_execution CRITIQUE env_file

S'assurer que qu'il ai tous ces variable dans le fichier

📄 .env.workflow_service_task_execution — Workflow_service_task_execution
# ============================================================================ # GLOBAL # ============================================================================ # Environnement d'exécution (development | production | staging | test) NODE_ENV=development # ============================================================================ # APP — Workflow Service Task Execution (BPMN Workers) # ============================================================================ # Nom de l'application (utilisé comme identifiant RabbitMQ, logs, etc.) APP_NAME=workflow-service-task-execution # Port d'écoute du serveur HTTP APP_WORKFLOW_SERVICE_TASK_EXECUTION_PORT=4302 # Hôte d'écoute du serveur APP_WORKFLOW_SERVICE_TASK_EXECUTION_HOST=0.0.0.0 # URL de base publique du service APP_WORKFLOW_SERVICE_TASK_EXECUTION_BASE_URL=http://0.0.0.0:4302 # Répertoire de stockage des fichiers de logs APP_WORKFLOW_SERVICE_TASK_EXECUTION_LOGS_DIRECTORY=./logs/workflow-service-task-execution # ============================================================================ # OPERATORS — Certificats électroniques # ============================================================================ # Mode production pour la signature de certificats (true | false) FLOW_CERT_SIGN_IS_PROD=false # Durée de validité des certificats en jours (0-365) FLOW_CERT_SIGN_VALIDITY=365 # ============================================================================ # WORKFLOW — Configuration du moteur # ============================================================================ # Moteur de workflow par défaut LIB_DEFAULT_ENGINE=camunda # Activer le journal d'audit applicatif (true | false) LIB_JOURNAL_ENABLED=false # Activer le journal d'audit du moteur BPMN (true | false) LIB_ENGINE_JOURNAL_ENABLED=false # ============================================================================ # LIBS — Les variables partagées sont dans .env.sample (global) # ============================================================================
git pull + pnpm install command
pnpm run build command
pm2 restart/reload command
Vérifier les logs de démarrage (pas d'erreur) manual_check
Vérification manuelle requise
Tester l'endpoint de healthcheck manual_check
Vérification manuelle requise
Vérifier la connexion Kafka, redis, rabbitmq, minio manual_check

nécessite Keycloak Admin disponible

Vérification manuelle requise
Déchiffrer la config SOPS manual_check
Vérification manuelle requise
Commande pour lancer le api_administration CRITIQUE command
APP_ENV_PATHS="/opt/.PROD/gndad-x-backend/.env.administration_api" NODE_APP=administration_api pm2 start dist/apps/administration-api/main.js --name administration-api --log /var/log/administration-api.log --merge-logs
📂 /opt/.PROD/gndad-x-backend
Commande pour lancer le messaging_service CRITIQUE command
APP_ENV_PATHS="/opt/.PROD/gndad-x-backend/.env.messaging_service" NODE_APP=messaging_service pm2 start dist/apps/messaging-service/main.js --name messaging-service --log /var/log/messaging-service.log --merge-logs
📂 /opt/.PROD/gndad-x-backend
Commande pour lancer le payment_gateway_service CRITIQUE command
APP_ENV_PATHS="/opt/.PROD/gndad-x-backend/.env.payment_gateway_service" NODE_APP=payment_gateway_service pm2 start dist/apps/payment-gateway-service/main.js --name payment-gateway-service --log /var/log/payment-gateway-service.log --merge-logs
📂 /opt/.PROD/gndad-x-backend
Commande pour lancer le workflow_engine_service CRITIQUE command
APP_ENV_PATHS="/opt/.PROD/gndad-x-backend/.env.workflow_engine_service" NODE_APP=workflow_engine_service pm2 start dist/apps/workflow-engine-service/main.js --name workflow-engine-service --log /var/log/workflow-engine-service.log --merge-logs
📂 /opt/.PROD/gndad-x-backend
Commande pour lancer le workflow_registry_service CRITIQUE command
APP_ENV_PATHS="/opt/.PROD/gndad-x-backend/.env.workflow_registry_service" NODE_APP=workflow_registry_service pm2 start dist/apps/workflow-registry-service/main.js --name workflow-registry-service --log /var/log/workflow-registry-service.log --merge-logs
📂 /opt/.PROD/gndad-x-backend
Commande pour lancer le workflow_service_task_execution CRITIQUE command
APP_ENV_PATHS="//opt/.PROD/gndad-x-backend/.env.workflow_service_task_execution" NODE_APP=workflow_service_task_execution pm2 start dist/apps/workflow-service-task-execution/main.js --name workflow-service-task-execution --log /var/log/workflow-service-task-execution.log --merge-logs
📂 /opt/.PROD/gndad-x-backend
Cree rediriger domain de api-gateway-"Instance".xflow.gouv.tg CRITIQUE manual_check
Vérification manuelle requise
Cree rediriger domain de api-messaging-"Instance".xflow.gouv.tg CRITIQUE manual_check
Vérification manuelle requise
Cree rediriger domain de api-payment-"Instance".xflow.gouv.tg CRITIQUE manual_check
Vérification manuelle requise
Cree rediriger domain de administration-"Instance".xflow.gouv.tg CRITIQUE manual_check
Vérification manuelle requise