Portas e exposição
O que precisa ser exposto
Seção intitulada “O que precisa ser exposto”Uma porta. A do proxy reverso.
| Porta | Serviço | Exposta a |
|---|---|---|
| 443 | Proxy reverso (HTTPS) | Rede corporativa e, se houver acesso externo, internet |
| 80 | Proxy reverso (HTTP) | Somente para redirecionar a 443, ou em rede interna sem TLS |
Todo o resto conversa por rede interna de contêineres e não deve ter porta publicada no hospedeiro.
O que não deve ser exposto
Seção intitulada “O que não deve ser exposto”| Porta | Serviço | Por quê |
|---|---|---|
| 5432 | PostgreSQL | Contém tudo. Publicar no hospedeiro é oferecer o banco à rede. |
| 9000 | API do armazenamento de objetos | Alcançável pelos agentes através do proxy, não direto. |
| 9001 | Console do armazenamento de objetos | Administração. Acesse por túnel ou rede restrita. |
| 8080 | Evolution API, se usada | Só a aplicação precisa alcançá-la. |
| 80 (contêiner) | Aplicação | Quem publica é o proxy. |
Em Docker Compose, isso significa não escrever ports: nos serviços de apoio. Serviços na mesma rede se
alcançam por nome — postgres:5432, minio:9000 — sem publicar nada.
De onde os agentes precisam alcançar o quê
Seção intitulada “De onde os agentes precisam alcançar o quê”O agente de endpoint conecta sempre de dentro para fora. Duas saídas:
| Destino | Protocolo | Para quê |
|---|---|---|
| Endereço público da aplicação | HTTPS 443 | Sinal de vida, busca de trabalho, telemetria, resultado |
| Armazenamento de objetos | HTTPS 443 | Envio de evidência por URL assinada |
O endereço que os agentes usam vem de AGENT_PUBLIC_API_BASE_URL. Deixá-la vazia faz o produto derivar o
endereço do cabeçalho Host da requisição — que funciona em teste local e falha atrás de proxy que não
repassa o host original, com um sintoma difícil de rastrear: o agente registra, e depois tenta se conectar
a um endereço que não existe.
Nada precisa alcançar a estação de trabalho. Acesso remoto e terminal também partem da máquina: ela busca o trabalho e abre a sessão. Não há porta a abrir no cliente, nem rota da rede da empresa para o endereço do usuário.
Rede interna dos contêineres
Seção intitulada “Rede interna dos contêineres”Uma rede só, e o proxy participando de duas:
networks: openscale: # aplicação, banco, armazenamento traefik-network: # apenas aplicação + proxy external: trueA aplicação está nas duas. Banco e armazenamento, apenas na primeira — assim o proxy não tem rota até eles nem por engano.
Verificar a exposição
Seção intitulada “Verificar a exposição”# O que está publicado no hospedeirodocker compose ps --format '{{.Service}}\t{{.Ports}}'
# Nada além do proxy deve aparecer com 0.0.0.0 ou [::]ss -tlnp | grep -E '0\.0\.0\.0|\[::\]'Se o Postgres ou o armazenamento aparecerem em 0.0.0.0, remova o ports: do serviço e recrie:
docker compose up -d --force-recreate.
Saídas que a aplicação faz
Seção intitulada “Saídas que a aplicação faz”Para configurar firewall de saída sem quebrar o produto:
| Destino | Quando |
|---|---|
| Servidor de e-mail (SMTP) | Notificação, chamado por e-mail, redefinição de senha |
| Servidor LDAP / Active Directory | Autenticação por diretório |
| Evolution API | Mensageria de WhatsApp |
| Destinos de backup (S3, SMB) | Execução de rotina de backup |
Fora disso, o produto não chama serviço de terceiro. Não há telemetria de uso, nem verificação de licença, nem rastreador — inclusive neste site, que não carrega script externo algum.
