promovaweb-devops-review-evolution-go-stack
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-imagex-evolution-go-api-urlx-evolution-go-app-urlx-evolution-go-securityx-evolution-go-dbx-evolution-go-logsx-evolution-go-serverx-evolution-go-optionalx-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 compostgresql://e conter host, porta, usuário, senha e databasePOSTGRES_USERS_DB— deve começar compostgresql://e conter host, porta, usuário, senha e databaseDATABASE_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) sslmodedeve estar explicitamente definido (disable,require, etc.)
Logs (x-evolution-go-logs)
WADEBUG— deve serINFO,WARN,ERRORouDEBUG(alertar seDEBUGem produção)LOGTYPE— deve serconsoleoufileLOG_DIRECTORY— deve ser caminho absoluto (ex:/app/logs)LOG_MAX_SIZE— deve ser número positivoLOG_MAX_BACKUPS— deve ser número positivoLOG_MAX_AGE— deve ser número positivoLOG_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,NATSouMINIO) 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.imagedeve usar*evolution-go-image- A imagem não deve ficar em
latestem 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-urldeve existir e conter um domínio válido (não placeholder comoseudominio.com) - O domínio na âncora deve ser idêntico ao domínio dentro de
Host(...)na labeltraefik.http.routers.evolution_go.rule - Se não forem iguais, reportar como ❌ Erro: inconsistência entre
x-evolution-go-app-urle a regra Traefik
Labels obrigatórias:
traefik.enable=truetraefik.swarm.network=network_swarm_publictraefik.http.routers.evolution_go.rule— deve conterHost(...)com domínio válidotraefik.http.routers.evolution_go.entrypoints=websecuretraefik.http.routers.evolution_go.tls.certresolver=letsencryptresolvertraefik.http.routers.evolution_go.service=evolution_gotraefik.http.services.evolution_go.loadbalancer.server.port=4000traefik.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 comx-evolution-go-app-url x-evolution-go-app-urlnão deve conterhttps://(somente o domínio)
7. Replicas e Deploy
Verifique no serviço evolution_go:
deploy.mode— deve serreplicateddeploy.replicas— mínimo1placement.constraints— deve incluirnode.role == managerrestart_policy.condition— recomendadoon-failurerestart_policy.max_attempts— recomendado valor positivo
Alertar ausência de update_config com:
order: start-firstfailure_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.cpusdefinidoresources.limits.memorydefinido
9. Volumes
Verifique:
- Serviço
evolution_godeve montarevolution_go_data:/app/dbdata - Serviço
evolution_godeve montarevolution_go_logs:/app/logs - Volumes
evolution_go_dataeevolution_go_logsdevem existir na seçãovolumes - Ambos devem estar com
external: true
10. Redes
Verifique:
- Serviço
evolution_godeve estar na redenetwork_swarm_public - A rede deve existir na seção
networks - A rede deve estar com
external: true
11. Segurança
GLOBAL_API_KEYnão pode estar com placeholderPOSTGRES_AUTH_DBePOSTGRES_USERS_DBnão podem conterSENHA- 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
latestem 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.
More from promovaweb/skills-devops
promovaweb-devops-docker
Verifica o ambiente Docker do servidor — versão do Docker Engine, status do Swarm, nós do cluster, rede network_swarm_public, volumes externos e conformidade geral com as recomendações da Promovaweb.
10promovaweb-devops-docker-volumes
Implemente armazenamento persistente com Docker volumes, bind mounts e estratégias de backup
9promovaweb-devops-dockerfile-basics
Aprenda os fundamentos do Dockerfile e as melhores práticas para criar imagens de container prontas para produção
9promovaweb-devops-review-chatwoot-stack
Verifica a Stack do Chatwoot. Além disso analisa parâmetros, rotas Traefik, volumes, recursos e conformidade do stack Chatwoot de Acordo com as Recomendações da Promovaweb.
9promovaweb-devops-docker-networking
Configure a rede (networking) do Docker para containers, incluindo bridge, overlay e service discovery
9promovaweb-devops-review-kestra-stack
Verifica a Stack do Kestra. Além disso analisa parâmetros, rotas Traefik, volumes, recursos e conformidade do stack Kestra de Acordo com as Recomendações da Promovaweb.
9