Pular para o conteúdo principal

Guia de Administração do Bemba

Este guia destina-se aos administradores de sistema encarregados de instalar, implantar, salvaguardar e monitorizar o Bemba, o sistema de informação de gestão do Projeto Capital Humano.

Visão geral​

ComponenteTecnologiaFunção
FrontendReact 18 + TypeScript, servido por NginxAplicação (SPA) e site público
BackendSymfony 7 + PHP 8.3 (PHP-FPM + Nginx no mesmo contentor)API REST, tarefas assíncronas (Messenger), planificador
Base de dadosPostgreSQL 15 + PostGIS 3.4Dados de negócio e geográficos
CacheRedis 7Cache da aplicação, limitação de pedidos
Proxy inversoTraefik 2.10HTTPS (Let's Encrypt) e encaminhamento por nome de anfitrião
DocumentaçãoDocusaurus, servido por NginxEste site (docubemba.ucp-pch.org)
RegistosLoki + PromtailConservação dos registos durante um ano

Arquitetura de implantação

Os servidores​

ServidorEndereçoFunçãoNomes de anfitrião
Produção51.75.79.112 (VPS OVH, Ubuntu)Ramo mainbemba.ucp-pch.org, mariacare.ucp-pch.org, ucp-pch.org, docubemba.ucp-pch.org
Pré-produção51.75.77.220 (VPS OVH, Ubuntu)Ramo staging, testessig-preprod.ucp-pch.org, KoboToolbox (kf/kc/ee.kobo.ucp-pch.org), Survey Solutions, GitLab (gitlab.ucp-pch.org)
Recuperação (DR)servidor escravo axone-drRéplica PostgreSQL da produção e cópias cifradas (restic)—

Os dois servidores usam Docker nativo (sem máquina virtual intermédia). O projeto está em ~/pch-sig.

Sempre -f com docker compose

O docker compose carrega compose.yaml antes de docker-compose.yml. Executado sem -f a partir de ~/pch-sig, arranca o esqueleto Symfony (base de dados com a palavra-passe por defeito) em vez da aplicação. Sempre:

docker compose -f docker-compose.prod.yml … # produção
docker compose -f docker-compose.preprod.yml … # pré-produção

Contentores da produção​

ContentorImagemFunção
pch_traefiktraefik:v2.10Portas 80/443, certificados, redirecionamentos
pch_frontendnginx:alpineBuild React (montado a partir de frontend/build)
pch_backendimagem construída (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 documentação
pch_loki, pch_promtailgrafana/loki, grafana/promtail 2.9Recolha e conservação dos registos
pch_cadvisor, pch_node_exporter, pch_postgres_exporter, pch_redis_exporterexportadores PrometheusMétricas, portas ligadas a 127.0.0.1
pch_pg_dr_proxysocat (fora do compose)Acesso do servidor DR ao PostgreSQL para a replicação
smtp_relayboky/postfix (~/smtp-relay)Relé SMTP reservado ao servidor 220 (KoboToolbox)

Acesso​

O acesso aos servidores faz-se por SSH com chave (utilizador ubuntu). As credenciais (contas da aplicação, base de dados, chaves de API) nunca figuram na documentação: estão no gestor de segredos. O inventário dos segredos e a sua rotação estão descritos em docs/ROTATION_SECRETS.md do repositório.

Secções deste guia​