Aller au contenu principal

Guide d'Administration Bemba

Ce guide s'adresse aux administrateurs système chargés d'installer, de déployer, de sauvegarder et de surveiller Bemba, le système d'information de gestion du Projeto Capital Humano.

Vue d'ensemble​

ComposantTechnologieRôle
FrontendReact 18 + TypeScript, servi par NginxApplication (SPA) et site public
BackendSymfony 7 + PHP 8.3 (PHP-FPM + Nginx dans le même conteneur)API REST, tâches asynchrones (Messenger), planificateur
Base de donnéesPostgreSQL 15 + PostGIS 3.4Données métier et géographiques
CacheRedis 7Cache applicatif, limitation de débit
Reverse proxyTraefik 2.10HTTPS (Let's Encrypt) et routage par nom d'hôte
DocumentationDocusaurus, servi par NginxCe site (docubemba.ucp-pch.org)
JournauxLoki + PromtailConservation des journaux pendant un an

Architecture de déploiement

Les serveurs​

ServeurAdresseRôleNoms d'hôte
Production51.75.79.112 (VPS OVH, Ubuntu)Branche mainbemba.ucp-pch.org, mariacare.ucp-pch.org, ucp-pch.org, docubemba.ucp-pch.org
Préproduction51.75.77.220 (VPS OVH, Ubuntu)Branche staging, testssig-preprod.ucp-pch.org, KoboToolbox (kf/kc/ee.kobo.ucp-pch.org), Survey Solutions, GitLab (gitlab.ucp-pch.org)
Secours (DR)esclave axone-drRéplique PostgreSQL de la production et copies chiffrées (restic)—

Les deux serveurs utilisent Docker natif (pas de machine virtuelle intermédiaire). Le projet est dans ~/pch-sig.

Toujours -f avec docker compose

docker compose charge compose.yaml avant docker-compose.yml. Lancé sans -f depuis ~/pch-sig, il démarre le squelette Symfony (base de données au mot de passe par défaut) au lieu de l'application. Toujours :

docker compose -f docker-compose.prod.yml … # production
docker compose -f docker-compose.preprod.yml … # préproduction

Conteneurs de la production​

ConteneurImageRôle
pch_traefiktraefik:v2.10Ports 80/443, certificats, redirections
pch_frontendnginx:alpineBuild React (bind-monté depuis frontend/build)
pch_backendimage construite (backend/Dockerfile.prod)PHP-FPM + Nginx + workers Messenger (supervisord)
pch_postgrespostgis/postgis:15-3.4-alpineBase pch_sig
pch_redisredis:7-alpineCache
pch_documentationnginx:alpineSite de documentation
pch_loki, pch_promtailgrafana/loki, grafana/promtail 2.9Collecte et conservation des journaux
pch_cadvisor, pch_node_exporter, pch_postgres_exporter, pch_redis_exporterexporteurs PrometheusMétriques, ports liés à 127.0.0.1
pch_pg_dr_proxysocat (hors compose)Accès de l'esclave DR à PostgreSQL pour la réplication
smtp_relayboky/postfix (~/smtp-relay)Relais SMTP réservé au serveur 220 (KoboToolbox)

Accès​

L'accès aux serveurs se fait en SSH avec clé (utilisateur ubuntu). Les identifiants (comptes applicatifs, base de données, clés d'API) ne figurent jamais dans la documentation : ils sont dans le gestionnaire de secrets. L'inventaire des secrets et leur rotation sont décrits dans docs/ROTATION_SECRETS.md du dépôt.

Sections de ce guide​