Visão geral
Tudo que aparece no diagrama está dentro de uma única rede Docker chamadaserver_net. Containers nessa rede se enxergam pelo nome (postgres, redis, n8n, etc.) sem precisar de IP.
Como o tráfego entra
- Cliente bate em
algo.example.com:443. - DNS resolve para o IP do servidor.
- NPM (único container com portas expostas no host) recebe na porta 443.
- NPM consulta seus “Proxy Hosts” configurados via UI e encaminha para o container certo (ex.:
n8n:5678). - NPM termina o TLS — o tráfego dentro de
server_neté HTTP em texto claro (rede privada do Docker).
Por que rede external
Cada docker-compose.yml declara:
bootstrap.sh na primeira execução. Esse padrão permite que múltiplos composes (um por serviço) compartilhem a mesma rede sem disputar a “posse” dela.
Portas expostas no host
| Serviço | Portas no host | Para quê |
|---|---|---|
| NPM | 80, 443, 81 | HTTP, HTTPS, UI de admin |
| Postgres | nenhuma | só interno (postgres:5432) |
| Redis | nenhuma | só interno (redis:6379) |
| n8n | nenhuma | acessado via NPM (n8n.example.com) |
Persistência
Cada serviço usa bind mounts para sua pastadata/:
tar czf backup.tar.gz /opt/server/infra/*/data/ /opt/server/infra/npm/letsencrypt/.