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
| Composant | Technologie | Rôle |
|---|---|---|
| Frontend | React 18 + TypeScript, servi par Nginx | Application (SPA) et site public |
| Backend | Symfony 7 + PHP 8.3 (PHP-FPM + Nginx dans le même conteneur) | API REST, tâches asynchrones (Messenger), planificateur |
| Base de données | PostgreSQL 15 + PostGIS 3.4 | Données métier et géographiques |
| Cache | Redis 7 | Cache applicatif, limitation de débit |
| Reverse proxy | Traefik 2.10 | HTTPS (Let's Encrypt) et routage par nom d'hôte |
| Documentation | Docusaurus, servi par Nginx | Ce site (docubemba.ucp-pch.org) |
| Journaux | Loki + Promtail | Conservation des journaux pendant un an |
Les serveurs
| Serveur | Adresse | Rôle | Noms d'hôte |
|---|---|---|---|
| Production | 51.75.79.112 (VPS OVH, Ubuntu) | Branche main | bemba.ucp-pch.org, mariacare.ucp-pch.org, ucp-pch.org, docubemba.ucp-pch.org |
| Préproduction | 51.75.77.220 (VPS OVH, Ubuntu) | Branche staging, tests | sig-preprod.ucp-pch.org, KoboToolbox (kf/kc/ee.kobo.ucp-pch.org), Survey Solutions, GitLab (gitlab.ucp-pch.org) |
| Secours (DR) | esclave axone-dr | Ré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.
-f avec docker composedocker 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
| Conteneur | Image | Rôle |
|---|---|---|
pch_traefik | traefik:v2.10 | Ports 80/443, certificats, redirections |
pch_frontend | nginx:alpine | Build React (bind-monté depuis frontend/build) |
pch_backend | image construite (backend/Dockerfile.prod) | PHP-FPM + Nginx + workers Messenger (supervisord) |
pch_postgres | postgis/postgis:15-3.4-alpine | Base pch_sig |
pch_redis | redis:7-alpine | Cache |
pch_documentation | nginx:alpine | Site de documentation |
pch_loki, pch_promtail | grafana/loki, grafana/promtail 2.9 | Collecte et conservation des journaux |
pch_cadvisor, pch_node_exporter, pch_postgres_exporter, pch_redis_exporter | exporteurs Prometheus | Métriques, ports liés à 127.0.0.1 |
pch_pg_dr_proxy | socat (hors compose) | Accès de l'esclave DR à PostgreSQL pour la réplication |
smtp_relay | boky/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
- Stack technique et architecture
- Développement local, conventions, environnements
- Installation : prérequis, Docker, configuration, premier démarrage
- Exploitation : déploiement, démarrage automatique, mise à jour, KoboToolbox auto-hébergé
- Maintenance : sauvegarde, restauration, surveillance, journaux, dépannage
- Sécurité : authentification JWT, HTTPS, bonnes pratiques