Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions RELEASE.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,29 @@
- [ ] TLS terminando no proxy reverso, com `Api__RedirecionarHttps` coerente
- [ ] Administrador inicial criado e a senha do `.env` trocada pelo endpoint de usuários

## Exposição de portas — pendente até a primeira publicação

O `docker-compose.yml` de hoje serve a desenvolvimento local, onde publicar porta na máquina não expõe
nada. **Num host acessível pela rede, três coisas precisam mudar antes de subir**, e nenhuma delas está
feita:

- [ ] **`api` deixa de ser publicada.** O nginx do contêiner `web` já a alcança pela rede interna
(`location /api/` e `location /hangfire`). Publicada, a API atende HTTP puro direto da internet
com `Api__RedirecionarHttps: "false"` — o token de sessão e a senha do certificado no upload
viajariam em texto claro para quem falasse com ela sem passar pelo proxy.
- [ ] **`postgres` preso ao loopback** (`127.0.0.1:5432:5432`), não removido: o `dotnet ef` e os
clientes de banco continuam funcionando por túnel SSH. Único ponto público deve ser o `web`.
- [ ] **`ASPNETCORE_ENVIRONMENT` definido explicitamente.** O padrão do compose é `Development`, e com
ele o Swagger sobe público — o mapa inteiro da API, rotas administrativas incluídas.

> **O Docker fura o firewall.** Ele insere as próprias regras na cadeia `DOCKER` do iptables, avaliadas
> **antes** do UFW: um `ufw deny 5432` **não** bloqueia uma porta publicada pelo Docker. Prender ao
> `127.0.0.1` no próprio compose é o que funciona, porque aí o socket nem chega a abrir na interface
> externa. Conferir com `ufw status` dá falsa segurança; confira com `ss -tlnp` ou de outra máquina.

Nenhuma dessas mudanças perde dado: todas recriam contêiner, e `pgdata` e `miniodata` são volumes
nomeados. Ainda assim, tire o dump antes — o custo é um comando.

## Verificação funcional

- [ ] Login, e `Operador` recebendo 403 nas rotas administrativas
Expand Down
Loading