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
| Componente | Tecnologia | Função |
|---|---|---|
| Frontend | React 18 + TypeScript, servido por Nginx | Aplicação (SPA) e site público |
| Backend | Symfony 7 + PHP 8.3 (PHP-FPM + Nginx no mesmo contentor) | API REST, tarefas assíncronas (Messenger), planificador |
| Base de dados | PostgreSQL 15 + PostGIS 3.4 | Dados de negócio e geográficos |
| Cache | Redis 7 | Cache da aplicação, limitação de pedidos |
| Proxy inverso | Traefik 2.10 | HTTPS (Let's Encrypt) e encaminhamento por nome de anfitrião |
| Documentação | Docusaurus, servido por Nginx | Este site (docubemba.ucp-pch.org) |
| Registos | Loki + Promtail | Conservação dos registos durante um ano |
Os servidores
| Servidor | Endereço | Função | Nomes de anfitrião |
|---|---|---|---|
| Produção | 51.75.79.112 (VPS OVH, Ubuntu) | Ramo main | bemba.ucp-pch.org, mariacare.ucp-pch.org, ucp-pch.org, docubemba.ucp-pch.org |
| Pré-produção | 51.75.77.220 (VPS OVH, Ubuntu) | Ramo staging, testes | sig-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-dr | Ré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.
-f com docker composeO 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
| Contentor | Imagem | Função |
|---|---|---|
pch_traefik | traefik:v2.10 | Portas 80/443, certificados, redirecionamentos |
pch_frontend | nginx:alpine | Build React (montado a partir de frontend/build) |
pch_backend | imagem construída (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 documentação |
pch_loki, pch_promtail | grafana/loki, grafana/promtail 2.9 | Recolha e conservação dos registos |
pch_cadvisor, pch_node_exporter, pch_postgres_exporter, pch_redis_exporter | exportadores Prometheus | Métricas, portas ligadas a 127.0.0.1 |
pch_pg_dr_proxy | socat (fora do compose) | Acesso do servidor DR ao PostgreSQL para a replicação |
smtp_relay | boky/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
- Stack técnica e arquitetura
- Desenvolvimento local, convenções, ambientes
- Instalação: pré-requisitos, Docker, configuração, primeiro arranque
- Exploração: implantação, arranque automático, atualização, KoboToolbox auto-alojado
- Manutenção: salvaguarda, restauro, monitorização, registos, resolução de problemas
- Segurança: autenticação JWT, HTTPS, boas práticas