3.6 KiB
3.6 KiB
Relatório de Diagnóstico e Pontos de Dor (Pain Points)
Este documento sumariza os problemas arquiteturais e técnicos identificados durante a tentativa de estabilizar o stack nginx-pathfinder-proxy. O objetivo é fornecer um contexto claro para um futuro Agente de IA simplificar a solução.
1. Arquitetura Excessivamente Complexa (Split Container)
Atualmente, temos dois containers NGINX separados:
- Frontend (
modsecurity): Recebe a internet, faz WAF, termina SSL. - Backend (
nginx-proxy): Recebe do WAF, faz roteamento, gerencia certificados (Certbot), roda scripts.
Problemas Causados:
- Inferno de Permissões (Permission Hell): O Backend (onde roda o Certbot) gera certificados no volume compartilhado como
root. O Frontend tenta ler esses arquivos e falha comPermission deniedporque roda com outro UID/GID. Tentar corrigir comchmodé frágil e inseguro. - Configuração Duplicada: É preciso configurar o Nginx duas vezes. Uma no Frontend (para saber onde estão os certs) e uma no Backend (para saber como tratar a requisição na porta 8080).
- SSL "Ping-Pong": O Backend gerencia a renovação, mas o Frontend é quem usa o certificado. Isso exige reload sincronizado em dois containers diferentes.
2. Problema do "Ovo e a Galinha" (SSL Bootstrap)
- O NGINX não sobe se o arquivo de certificado não existir.
- O Certbot não gera o certificado se o NGINX não estiver rodando (para responder o desafio HTTP-01).
- Solução Atual (Gambiarra): Criamos um script complexo (
pre-flight.sh+renew_ssl.sh) que gera certificados falsos (self-signed) só para o NGINX subir, e depois tenta baixar os reais. Isso adiciona muita lógica propensa a falhas.
3. Fragilidade de Deploy (Portainer / Docker)
- Mount Error: O Portainer falha ao tentar montar arquivos de configuração (
modsec_conf/...) que ainda não foram baixados pelo git no host. - Solução Atual: Tivemos que "assar" (bake) as configurações dentro da imagem Docker (
COPY conf.d ...). Isso tira a agilidade de alterar uma config no git e dar deploy rápido; agora exige rebuild da imagem.
4. Scripts de Automação Frágeis
- O script
pre-flight.shtenta fazergit clone/pulldentro do container. Isso gera erros de "Resource busy" quando tenta limpar pastas montadas via volume. - Lógica de
sed/greppara ler arquivos.confe achar domínios é suscetível a erros de sintaxe no arquivo de config.
Recomendação de Simplificação (Para o Próximo Agente)
Opção A: Single "Super" Container (Recomendada)
Unificar tudo em um único container.
- Base: Usar a imagem oficial com ModSecurity já compilado (ou compilar num multi-stage build).
- Benefício: Resolve problemas de permissão (mesmo processo lê e escreve). Resolve problema de setup (um único serviço). Remove complexidade de rede (sem proxy pass interno desnecessário).
Opção B: Caddy Server (Radical)
Substituir NGINX + Certbot por Caddy.
- Benefício: Caddy tem HTTPS automático (resolve o problema do Ovo/Galinha nativamente).
- WAF: Existe plugin de WAF para Caddy (Coraza), mas exige validação se atende os requisitos de segurança do Oestepan.
Opção C: NGINX Proxy Manager (GUI)
Usar uma solução pronta como NGINX Proxy Manager.
- Tem interface web.
- Gerencia SSL sozinho.
- Pode ser difícil integrar ModSecurity customizado.
Resumo do Pedido de Refatoração
"Simplificar a infraestrutura eliminando a separação Frontend/Backend. Criar um container único que faça WAF + Proxy + SSL Management, eliminando scripts complexos de bootstrap e problemas de permissão de volume."