promovaweb-devops-review-postgres-stack
Original:🇺🇸 English
Translated
Verifica a Stack do PostgreSQL. Além disso analisa parâmetros, rotas Traefik, volumes, recursos e conformidade do stack PostgreSQL de Acordo com as Recomendações da Promovaweb.
9installs
Sourcepromovaweb/skills-devops
Added on
NPX Install
npx skill4agent add promovaweb/skills-devops promovaweb-devops-review-postgres-stackTags
Translated version includes tags in frontmatterSKILL.md Content
View Translation Comparison →Review PostgreSQL Stack
Executa uma auditoria completa do arquivo e reporta conformidade, problemas e sugestões.
postgres.yamlInstruções de Execução
Quando esta skill for invocada, siga exatamente este roteiro:
Passo 1 — Ler o arquivo
Leia o arquivo completo.
postgres.yamlPasso 2 — Executar todos os checks abaixo
Execute cada bloco de verificação e registre os resultados (✅ OK / ⚠️ Atenção / ❌ Erro).
Passo 3 — Gravar o resultado
Grave o relatório completo em um arquivo chamado postgres.audit.md.
Checks de Verificação
1. Imagem
- Verificar se a imagem usada é (ou variante com suporte a pgvector)
pgvector/pgvector:pg18 - Alertar se estiver usando sem suporte a pgvector, chatwoot precisa de pgvector para funcionar
postgres:latest - Alertar se a tag não fixar uma versão major (ex: é aceitável,
pg18não é recomendado)latest - Verificar se a versão do PostgreSQL é compatível com os outros stacks que a utilizam (n8n, chatwoot, metabase, kestra)
2. Variáveis de Ambiente
- — deve existir e não deve ser o placeholder
POSTGRES_PASSWORDSENHA - — verificar se contém
POSTGRES_INITDB_ARGS(autenticação segura)--auth-host=scram-sha-256 - Alertar se não estiver definido (usa padrão
POSTGRES_USER)postgres - Alertar se não houver definido (banco padrão é
POSTGRES_DB)postgres
3. Comando de Inicialização
Verifique os parâmetros do comando :
postgres- — deve ser definido e adequado para a carga esperada
--max_connections=200 - — aceitável para setup sem replicação; alertar se replicação for necessária
--wal_level=minimal - — consistente com
--max_wal_senders=0; alertar se replicação for necessáriawal_level=minimal - — deve ser a porta padrão
--port=5432
4. Portas Expostas
- — verificar se a porta está exposta externamente
5432:5432 - Alertar se a porta 5432 estiver exposta em produção (risco de segurança — acesso externo ao banco), habilitar somente caso o firewall esteja configurado para bloquear acesso externo
- Recomendar uso de rede interna Docker Swarm sem exposição de porta se não for necessário acesso externo
5. Volumes
- — deve ser declarado como
postgres_dataexternal: true - Verificar se o volume está montado em
/var/lib/postgresql/data - Alertar se o volume não for externo (dados perdidos em redeploy)
- Verificar comentário sobre volume externo em VPS (alternativa )
/mnt/VOLUME/pasta
6. Réplicas
| Serviço | Réplicas Esperadas | Observação |
|---|---|---|
| 1 | PostgreSQL standalone — não deve ter mais de 1 réplica sem configuração de cluster |
Alertar se houver mais de 1 réplica (pode causar corrupção de dados sem configuração de replicação adequada).
7. Recursos do Container
| Serviço | CPU Mínimo | Memória Máxima |
|---|---|---|
| "1" | 1024M |
- Alertar se memória for inferior a 512M (PostgreSQL pode ser instável)
- Verificar se os limites são adequados para o número de conexões configurado ()
max_connections=200
8. Configuração de Deploy
- — deve ser
mode: replicatedreplicated - — deve incluir
placement.constraintsnode.role == manager - Verificar se há constraints adicionais de hostname para fixar o banco em um nó específico
- — deve estar presente
entrypoint: docker-entrypoint.sh
9. Redes
- O serviço deve estar na rede
network_swarm_public - A rede deve ser declarada como
external: true - Verificar se a exposição na rede pública do swarm é necessária ou se poderia ser uma rede interna
10. Segurança
- não deve ser
POSTGRES_PASSWORD(placeholder)SENHA - deve incluir
POSTGRES_INITDB_ARGSpara autenticação segurascram-sha-256 - Porta 5432 exposta externamente — alertar como risco se não houver firewall configurado
- Verificar se é adequado (impede Point-in-Time Recovery)
--wal_level=minimal
Formato do Relatório de Saída
Ao final, produza um relatório estruturado:
# Relatório de Auditoria — postgres.yaml
Data: <data atual>
## Resumo
- Total de checks: X
- ✅ OK: X
- ⚠️ Atenções: X
- ❌ Erros: X
## Resultados por Categoria
### 1. Imagem
✅ pgvector/pgvector:pg18: suporte a pgvector disponível
⚠️ Tag `pg18` é aceitável mas considere fixar versão completa (ex: pg18.3)
...
### 2. Variáveis de Ambiente
❌ POSTGRES_PASSWORD: usando placeholder SENHA — troque antes do deploy
✅ POSTGRES_INITDB_ARGS: scram-sha-256 configurado
...
### 3. Comando
✅ max_connections=200: definido
⚠️ wal_level=minimal: sem suporte a PITR — adequado apenas se backup alternativo existir
...
### 4. Portas
⚠️ Porta 5432 exposta externamente — garanta que firewall está configurado
...
### 5. Volumes
✅ postgres_data: volume externo configurado
...
### 6. Réplicas
✅ postgres: 1 réplica (correto para standalone)
...
### 7. Recursos
✅ 1024M de memória configurada
...
### 8. Deploy
✅ node.role == manager: placement correto
...
### 9. Redes
⚠️ Serviço exposto na rede pública do swarm — considere rede interna se acesso externo não for necessário
...
### 10. Segurança
❌ POSTGRES_PASSWORD: placeholder SENHA detectado
⚠️ Porta 5432 exposta: certifique-se de que firewall bloqueia acesso externo
...
## Ações Recomendadas (por prioridade)
### Crítico (fazer antes do deploy)
1. ...
### Recomendado
1. ...
### Opcional
1. ...