promovaweb-devops-review-evolution-go-stack

Installation
SKILL.md

Review Evolution Go Stack

Executa uma auditoria completa do arquivo evolution-go.yaml e reporta conformidade, problemas e sugestões.

Instruções de Execução

Quando esta skill for invocada, siga exatamente este roteiro:

Passo 1 — Ler o arquivo

Leia o arquivo evolution-go.yaml completo.

Passo 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 evolution-go.audit.md.


Checks de Verificação

1. Âncoras YAML Obrigatórias

Verifique se as âncoras abaixo existem e estão sendo utilizadas no serviço principal:

  • x-evolution-go-image
  • x-evolution-go-api-url
  • x-evolution-go-app-url
  • x-evolution-go-security
  • x-evolution-go-db
  • x-evolution-go-logs
  • x-evolution-go-server
  • x-evolution-go-optional
  • x-evolution-go-env

Verifique também se x-evolution-go-env faz merge (<<:) de todas as âncoras necessárias.


2. Variáveis de Ambiente Obrigatórias

Verifique se todas as variáveis abaixo estão definidas corretamente:

Segurança (x-evolution-go-security)

  • GLOBAL_API_KEY — deve existir, ter valor não vazio e não pode conter placeholder (ex: sua-chave-api-segura-aqui)

Banco de dados (x-evolution-go-db)

  • POSTGRES_AUTH_DB — deve começar com postgresql:// e conter host, porta, usuário, senha e database
  • POSTGRES_USERS_DB — deve começar com postgresql:// e conter host, porta, usuário, senha e database
  • DATABASE_SAVE_MESSAGES — deve ser "true" ou "false"

Verificar segurança das strings de conexão:

  • Não pode conter placeholder SENHA
  • Deve conter usuário e senha reais extraído do stack postgres.yaml
  • Deve apontar para host válido (ex: postgres)
  • sslmode deve estar explicitamente definido (disable, require, etc.)

Logs (x-evolution-go-logs)

  • WADEBUG — deve ser INFO, WARN, ERROR ou DEBUG (alertar se DEBUG em produção)
  • LOGTYPE — deve ser console ou file
  • LOG_DIRECTORY — deve ser caminho absoluto (ex: /app/logs)
  • LOG_MAX_SIZE — deve ser número positivo
  • LOG_MAX_BACKUPS — deve ser número positivo
  • LOG_MAX_AGE — deve ser número positivo
  • LOG_COMPRESS — deve ser "true" ou "false"

Servidor (x-evolution-go-server)

  • SERVER_PORT — deve ser "4000" (ou outra porta válida e consistente com Traefik)
  • CLIENT_NAME — deve estar definido (ex: evolution)
  • CONNECT_ON_STARTUP — deve ser "true" ou "false"
  • WEBHOOKFILES — deve ser "true" ou "false"
  • OS_NAME — deve estar definido (ex: Linux)

Opcionais (x-evolution-go-optional)

  • AMQP_GLOBAL_ENABLED — deve ser "true" ou "false"
  • NATS_GLOBAL_ENABLED — deve ser "true" ou "false"
  • MINIO_ENABLED — deve ser "true" ou "false"
  • MINIO_USE_SSL — deve ser "true" ou "false"
  • Alertar se integração estiver habilitada (AMQP, NATS ou MINIO) com variáveis críticas vazias

3. Serviço Obrigatório

Verifique se o serviço abaixo está presente:

Serviço Obrigatório
evolution_go Sim

4. Imagem e Versionamento

Verifique:

  • evolution_go.image deve usar *evolution-go-image
  • A imagem não deve ficar em latest em produção (⚠️ recomendar tag fixa, ex: evoapicloud/evolution-go:vX.Y.Z)

5. Porta e Consistência de Roteamento

Verifique consistência entre:

  • SERVER_PORT (ambiente)
  • traefik.http.services.evolution_go.loadbalancer.server.port

Ambos devem apontar para a mesma porta (esperado: 4000).


6. Rotas Traefik

Para o serviço evolution_go, verifique:

Âncora de endereço (x-evolution-go-app-url):

  • A âncora x-evolution-go-app-url deve existir e conter um domínio válido (não placeholder como seudominio.com)
  • O domínio na âncora deve ser idêntico ao domínio dentro de Host(...) na label traefik.http.routers.evolution_go.rule
  • Se não forem iguais, reportar como ❌ Erro: inconsistência entre x-evolution-go-app-url e a regra Traefik

Labels obrigatórias:

  • traefik.enable=true
  • traefik.swarm.network=network_swarm_public
  • traefik.http.routers.evolution_go.rule — deve conter Host(...) com domínio válido
  • traefik.http.routers.evolution_go.entrypoints=websecure
  • traefik.http.routers.evolution_go.tls.certresolver=letsencryptresolver
  • traefik.http.routers.evolution_go.service=evolution_go
  • traefik.http.services.evolution_go.loadbalancer.server.port=4000
  • traefik.http.services.evolution_go.loadbalancer.passhostheader=true

Regras:

  • Não deve haver domínio placeholder (seudominio.com)
  • O domínio em Host(...) deve ser coerente com x-evolution-go-app-url
  • x-evolution-go-app-url não deve conter https:// (somente o domínio)

7. Replicas e Deploy

Verifique no serviço evolution_go:

  • deploy.mode — deve ser replicated
  • deploy.replicas — mínimo 1
  • placement.constraints — deve incluir node.role == manager
  • restart_policy.condition — recomendado on-failure
  • restart_policy.max_attempts — recomendado valor positivo

Alertar ausência de update_config com:

  • order: start-first
  • failure_action: rollback

8. Recursos dos Containers

Verifique limites de recursos no serviço evolution_go:

Serviço CPU Mínimo Memória Mínima Memória Máxima Recomendada
evolution_go "0.5" 512M 2048M

No padrão atual, considerar OK se houver ao menos:

  • resources.limits.cpus definido
  • resources.limits.memory definido

9. Volumes

Verifique:

  • Serviço evolution_go deve montar evolution_go_data:/app/dbdata
  • Serviço evolution_go deve montar evolution_go_logs:/app/logs
  • Volumes evolution_go_data e evolution_go_logs devem existir na seção volumes
  • Ambos devem estar com external: true

10. Redes

Verifique:

  • Serviço evolution_go deve estar na rede network_swarm_public
  • A rede deve existir na seção networks
  • A rede deve estar com external: true

11. Segurança

  • GLOBAL_API_KEY não pode estar com placeholder
  • POSTGRES_AUTH_DB e POSTGRES_USERS_DB não podem conter SENHA
  • Alertar se DATABASE_SAVE_MESSAGES: "true" sem política de retenção clara (potencial aumento de dados sensíveis)
  • Alertar se domínio/API URL estiver com placeholder
  • Alertar uso de imagem latest em produção

Formato do Relatório de Saída

Ao final, produza um relatório estruturado:

# Relatório de Auditoria — evolution-go.yaml
Data: <data atual>

## Resumo
- Total de checks: X
- ✅ OK: X
- ⚠️ Atenções: X
- ❌ Erros: X

## Resultados por Categoria

### 1. Âncoras YAML
✅ x-evolution-go-env: merge configurado corretamente
...

### 2. Variáveis de Ambiente
❌ GLOBAL_API_KEY: placeholder detectado — gerar chave forte antes do deploy
❌ POSTGRES_AUTH_DB: contém placeholder SENHA
...

### 3. Serviço
✅ evolution_go: presente

### 4. Imagem
⚠️ Imagem usa `latest` — recomenda-se fixar versão

### 5. Porta
✅ SERVER_PORT e Traefik: ambos em 4000

### 6. Traefik
❌ Domínio em Host(...) ainda está em placeholder
...

### 7. Deploy
✅ mode: replicated
⚠️ update_config ausente (start-first/rollback)
...

### 8. Recursos
✅ limits de CPU e memória definidos
...

### 9. Volumes
✅ volumes externos configurados corretamente
...

### 10. Redes
✅ network_swarm_public externa configurada
...

### 11. Segurança
❌ GLOBAL_API_KEY placeholder
❌ Strings de conexão com SENHA placeholder
...

## Ações Recomendadas (por prioridade)

### Crítico (antes do deploy)
1. Substituir `GLOBAL_API_KEY` por segredo forte.
2. Atualizar credenciais de banco removendo `SENHA` de `POSTGRES_AUTH_DB` e `POSTGRES_USERS_DB`.
3. Trocar domínio placeholder em `x-evolution-go-api-url` e regra Traefik.

### Recomendado
1. Fixar tag da imagem em versão estável (evitar `latest`).
2. Adicionar `update_config` com `start-first` e `rollback`.
3. Revisar nível de log para evitar excesso em produção.

### Opcional
1. Definir integrações AMQP/NATS/MinIO somente quando forem realmente usadas.
2. Revisar retenção de dados caso `DATABASE_SAVE_MESSAGES` seja habilitado.
Related skills
Installs
9
GitHub Stars
4
First Seen
Mar 28, 2026