Aller au contenu principal

Configuration

Deux fichiers, deux rôles​

Fichier (sur le serveur)Lu parEffet d'une modification
~/pch-sig/.env.prodDocker Compose, injecté dans l'environnement des conteneursdocker compose -f … up -d --no-deps backend
~/pch-sig/backend/.envcopié dans l'image (/app/.env), valeurs par défaut de Symfonyreconstruction de l'image obligatoire

Règle de précédence : une variable présente dans l'environnement du conteneur l'emporte sur /app/.env, même si elle est vide. Vérifier la valeur réellement utilisée :

docker exec pch_backend php bin/console debug:dotenv

Aucun de ces fichiers n'est dans le dépôt Git. Les secrets sont dans le gestionnaire de secrets ; leur rotation est décrite dans docs/ROTATION_SECRETS.md.

Variables principales​

VariableOùRôle
APP_ENV, APP_DEBUGcomposeprod, 0
APP_SECRET.env.prodsecret Symfony
POSTGRES_USER, POSTGRES_PASSWORD.env.prodbase pch_sig
JWT_PASSPHRASE.env.prodphrase de passe des clés JWT (backend/config/jwt/, propres au serveur)
MAILER_USER, MAILER_PASSWORD.env.prodcompte SMTP OVH noreply@ucp-pch.org ; le DSN utilisé est smtp://…@ssl0.ovh.net:587
MAILER_SENDERcomposenoreply@ucp-pch.org
MESSENGER_TRANSPORT_DSNcomposedoctrine://default : file des e-mails et tâches asynchrones
REDIS_URLcomposeredis://redis:6379
FRONTEND_URL, DEFAULT_URIcomposehttps://bemba.ucp-pch.org (liens des e-mails, avec /#/)
CORS_ALLOW_ORIGINcomposedomaines autorisés
ANTHROPIC_API_KEY, CLAUDE_MODELbackend/.envassistant Bemba (modèle par défaut défini dans services.yaml)
COHERE_API_KEYbackend/.envrecherche sémantique de l'assistant, regroupement des plaintes
DOCUMENTATION_BUILD_DIR, DOCUMENTATION_URLcomposebase documentaire de l'assistant (build Docusaurus monté en lecture seule)
KOBO_API_URL, KOBO_API_TOKENcompose / .env.prodKoboToolbox (les comptes par projet sont aussi configurables dans l'application)
SENTRY_DSN.env.prodremontée d'erreurs
Survey Solutions

Les variables SUSO_* ne sont pas utilisées : la connexion à Survey Solutions est lue dans la table survey_solutions_config, modifiable depuis l'application.

Frontend​

FichierUtilisé parContenu
frontend/.env.development.localnpm startREACT_APP_API_URL=http://localhost:8000/api, badge « LOCAL »
frontend/.env.productionnpm run buildREACT_APP_API_URL=/api, REACT_APP_DOCS_URL=https://docubemba.ucp-pch.org

Les variables REACT_APP_* sont figées au moment du build : changer une valeur impose de reconstruire et redéployer le frontend.

Nginx du frontend​

~/pch-sig/nginx/frontend.conf est monté dans pch_frontend. Il sert le build React (HashRouter, toutes les routes renvoient index.html), met en cache les ressources versionnées et applique la politique de sécurité du contenu (CSP) : connect-src limité au domaine, à KoboToolbox et à Sentry. Ajouter un service tiers appelé depuis le navigateur impose de l'ajouter à la CSP.

Configuration dans l'application​

Une grande partie du paramétrage se fait dans Paramètres, sans redéploiement : rôles et permissions, institutions et rattachements, projets et programmes, méthodes PMT, nomenclature des identifiants, workflows et délais des plaintes (Workflow & SLA), équipes, comptes Kobo et Survey Solutions par projet, contenus du site public.

E-mails​

Tous les e-mails partent de façon asynchrone (Messenger) : une requête ne contacte jamais le serveur SMTP. Les messages en échec vont dans la file failed :

docker exec pch_backend php bin/console messenger:failed:show
docker exec pch_backend php bin/console messenger:failed:retry # production uniquement

En préproduction, l'envoi échoue volontairement (SMTP injoignable) : ne pas relancer la file failed.

Journalisation​

Monolog écrit sur la sortie d'erreur du conteneur ; Promtail collecte ces journaux et les envoie à Loki (rétention un an). Voir Logs.