Instalação completa¶
Como executar uma instalação completa em uma infraestrutura própria?¶
Este guia é voltado a um administrador de infraestrutura responsável por colocar o DSP em produção, migrando dados reais de uma organização (o "adotante").
Requisitos de infraestrutura¶
| Requisito | Detalhe |
|---|---|
| Shell Bash | Os scripts do core são bash puro — nativo em Linux e macOS; no Windows requer WSL2 (sem suporte nativo via PowerShell/cmd) |
| Git | se os repositórios irmãos ainda não estiverem clonados; os scripts podem cloná-los automaticamente |
| Docker | 24+ com Compose v2 |
| Python | Python 3 (usado pelo wizard ./config.sh) |
| Porta principal | Gateway 8026 — única entrada HTTP (frontend, API, GeoServers). Bancos no host, só para admin: 20654 (dsp-db), 20656 (dsp-geoserver-db); com object storage, 8333 (SeaweedFS) |
| Armazenamento | Volumes persistentes para os 2 bancos Postgres/PostGIS (dsp-db, dsp-geoserver-db); metadados Spring Batch nos schemas data_migration e geo_file_generation dentro do dsp-db |
Fluxo de instalação¶
flowchart LR
r["Passo 1<br/>Organizar os repositórios"] --> e["Passo 2<br/>Entrar no dsp-core"]
e --> a["Passo 3<br/>./config.sh (wizard)"]
a --> b["gera adopter-config.yaml<br/>e arquivos operacionais"]
b --> c["Passo 4<br/>./setup.sh (opção 2)"]
c --> d["Passo 5<br/>./start.sh — sobe a stack"]
Passo 1 — Organizar os repositórios¶
O DSP é dividido em repositórios irmãos no GitHub. Recomendamos criar uma pasta dsp e clonar tudo no mesmo nível.
Os scripts procuram cada módulo nesta ordem: primeiro a pasta curta (backend, frontend, job-data-migration, job-geo-file-generation) e, se o código não estiver lá, a pasta com o nome do repositório (dsp-backend, dsp-frontend, dsp-job-data-migration, dsp-job-geo-file-generation). Se as duas faltarem, o download automático cria a pasta com o nome do repositório. A publicação automática no CI continua usando a pasta curta.
Opção A — fluxo mais simples (recomendado)¶
Crie a pasta, clone só o core e entre nele. Os scripts ./config.sh, ./setup.sh e ./start.sh detectam repositórios irmãos ausentes e oferecem cloná-los automaticamente ao lado do core:
mkdir dsp && cd dsp
git clone https://github.com/Rural-Environmental-Registry/dsp-core.git
cd dsp-core
Depois que você aceitar o clone automático nos scripts, a árvore típica fica assim:
dsp/
├── dsp-core/ ← você trabalha aqui (config.sh, setup.sh, start.sh)
├── dsp-backend/
├── dsp-frontend/
├── dsp-job-data-migration/
└── dsp-job-geo-file-generation/
Opção B — clone manual¶
Clone todos os repositórios de aplicação como pastas irmãs dentro de dsp:
mkdir dsp && cd dsp
git clone https://github.com/Rural-Environmental-Registry/dsp-core.git
git clone https://github.com/Rural-Environmental-Registry/dsp-backend.git
git clone https://github.com/Rural-Environmental-Registry/dsp-frontend.git
git clone https://github.com/Rural-Environmental-Registry/dsp-job-data-migration.git
git clone https://github.com/Rural-Environmental-Registry/dsp-job-geo-file-generation.git
Resultado:
dsp/
├── dsp-core/
├── dsp-backend/
├── dsp-frontend/
├── dsp-job-data-migration/
└── dsp-job-geo-file-generation/
Passo 2 — Entrar no core¶
Se você ainda não estiver dentro do core:
Não é necessário criar nem copiar o .env manualmente. O arquivo é gerado automaticamente na primeira execução de ./config.sh ou ./setup.sh, a partir de .env.example, quando ainda não existir.
Passo 3 — ./config.sh¶
A pessoa que executa o script será guiada por perguntas no terminal: em cada estágio o wizard explica o campo, onde o valor é usado e mostra o padrão ou o valor já salvo (Enter mantém o que está entre colchetes). Assim é possível configurar tudo o que o adotante precisa — origem dos dados, ETL, textos, mapa, KPIs e personalizar a interface sem editar JSON/YAML à mão.
O fluxo tem 6 etapas guiadas (a última, About, é opcional):
| Etapa | Conteúdo |
|---|---|
| 1 | Banco de origem (JDBC) |
| 2 | Tabelas, colunas, SRID e camadas genéricas |
| 3 | Textos de aplicação, formatos de data |
| 4 | Interface: hierarquia, telas, mapa, estilos das camadas fixas |
| 5 | KPIs (cores, unidade de área, temas 0–4). A área numérica não vem da origem: o kpiCalculationJob calcula dsp.area_of_interest.area e os temas em dsp.kpi_measure depois da migração |
| 6 | About opcional (abas em Markdown) |
O ./config.sh grava a fonte de verdade do adotante em config/adopter/adopter-config.yaml — este é o arquivo pensado para edição manual ou importação de YAML pronto. Na reaplicação (wizard ou opção 1 — Reaplicar), o ./config.sh gera os arquivos operacionais consumidos pelo backend, GeoServers e jobs. Não edite esses operacionais à mão: eles são sobrescritos a cada ./config.sh.
Sem o wizard: copie um adopter-config.yaml pronto para config/adopter/ (use o .example como referência) ou edite somente esse YAML. O DSP não lê o adotante na runtime — backend, GeoServers e jobs usam os JSON/YAML gerados.
Edição manual: só adopter-config.yaml + reaplicar
Alterações de configuração devem ir em config/adopter/adopter-config.yaml. Os demais arquivos em config/ gerados pelo ./config.sh não devem ser editados à mão — serão substituídos ao rodar ./config.sh (opção 1 — Reaplicar ou 2 — Editar).
Depois de mudar o YAML do adotante, rode ./config.sh para regenerar os operacionais. Em seguida, faça rebuild da stack (./setup.sh / ./start.sh) para as imagens Docker incorporarem os arquivos novos.
Rebuild após configurar
Os arquivos gerados são copiados para as imagens Docker no build. Depois de ./config.sh, rode ./setup.sh ou ./start.sh para que backend, GeoServers e job usem a configuração nova.
Passo 4 — ./setup.sh¶
No Step 3 — Setup mode, escolha:
- Opção 1 — Demonstração (veja também Começando rápido):
- Carrega dados de exemplo (mapa do Brasil simplificado) nos bancos locais.
- Sobe os bancos, aplica o seed e publica as camadas do mapa nos dois GeoServers.
- Não conecta ao banco da sua organização e não liga os jobs de importação em segundo plano.
-
Ao final, indica rodar
./start.shpara abrir o site e a API. -
Opção 2 — Adotante real (dados da organização): exige
./config.shantes. O script confere se a configuração de importação está pronta e pergunta como os dados da fonte vão mudar ao longo do tempo (texto em inglês no terminal: How will your source data be updated over time?):
| Escolha no script | Comportamento |
|---|---|
| 1 — One-time load | Importa os dados agora, durante este ./setup.sh, do banco de origem para os bancos do DSP. Publica as camadas do mapa ao terminar. O job de importação desliga depois — não há sincronização automática com a fonte. |
| 2 — Living source | Faz a primeira importação como no item 1 e publica o mapa. Depois pergunta de quanto em quanto tempo buscar dados novos na fonte (por exemplo todo dia, a cada poucas horas ou minutos) e de quanto em quanto tempo gerar arquivos prontos para download, se você usa armazenamento de objetos. Mantém os jobs rodando em segundo plano conforme essas agendas. |
| 3 — Deferred first load | Você informa dia e hora da primeira importação (e o fuso horário). Os bancos ficam vazios até lá; os GeoServers sobem sem camadas no mapa até o job rodar. O job de importação fica aguardando. Em seguida o script pergunta: (a) depois dessa carga os dados não mudam mais — importa uma vez no horário, publica o mapa e pode gerar downloads prontos uma vez após essa importação; (b) depois da primeira carga a fonte continua mudando — no horário escolhido começa a importar e, a partir daí, o mesmo tipo de agenda do item 2 (sincronização e geração de downloads). |
Ao final do fluxo real, o setup salva as agendas escolhidas no arquivo .env. Rodar ./setup.sh de novo com opção 2 repete as perguntas, usando o que já estiver salvo como padrão.
- Opção 3 — Stack status / cleanup / exit:
- Lista status dos containers do projeto e URLs conhecidas.
- Opcionalmente remove containers, volumes e imagens deste projeto (confirmação explícita).
- Não executa seed, migração nem sobe backend/frontend.
Passo 5 — ./start.sh¶
Usado depois do ./setup.sh, com bancos, GeoServers e jobs (quando existirem) já rodando. O ./start.sh sobe somente o site, a API e o ponto de entrada HTTP — não importa dados de novo nem republica camadas. Importação e demo ficam no ./setup.sh ou nas agendas salvas no setup.
Ao final, abra no navegador http://localhost:8026/dsp/ (ou a URL que o próprio ./start.sh mostrar se você mudou porta ou endereço no .env).
Detalhamento completo de cada opção e sub-fluxo: dsp-core.
Próximos passos¶
| Quero... | Página |
|---|---|
| Entender o fluxo de dados detalhado | Fluxo de dados |
| Ver todas as variáveis de ambiente do core | dsp-core |