Loading...
Loading...
Verifica a Stack do N8N. Além disso analisa parâmetros, rotas Traefik, volumes, recursos e conformidade do stack N8N de Acordo com as Recomendações da Promovaweb.
npx skill4agent add promovaweb/skills-devops promovaweb-devops-review-n8n-stackn8n.yamln8n.yamlx-n8n-*x-n8n-keysN8N_ENCRYPTION_KEYr3djGX2vPoeL9zKLN8N_RUNNERS_AUTH_TOKENr3djGX2YCWRTvPoeHGRFGHL9zKLYaq31x-n8n-dbDB_TYPEpostgresdbDB_POSTGRESDB_DATABASEn8nDB_POSTGRESDB_HOSTpostgresDB_POSTGRESDB_PORT"5432"DB_POSTGRESDB_USERpostgresDB_POSTGRESDB_PASSWORDSENHApostgres.yamlx-n8n-queueEXECUTIONS_MODEqueueQUEUE_BULL_REDIS_HOSTredisQUEUE_BULL_REDIS_PORT"6379"QUEUE_BULL_REDIS_DB"2"x-n8n-domainsN8N_PORT"5678"N8N_PROTOCOLhttpsN8N_HOSTworkflows.agenciasynca.com.brN8N_EDITOR_BASE_URLhttps:///WEBHOOK_URLhttps:///N8N_ENDPOINT_WEBHOOKwebhookx-n8n-runnersN8N_RUNNERS_MODEexternalN8N_RUNNERS_BROKER_LISTEN_ADDRESS0.0.0.0N8N_NATIVE_PYTHON_RUNNER"true"OFFLOAD_MANUAL_EXECUTIONS_TO_WORKERS"true"x-n8n-envNODE_ENVproductionGENERIC_TIMEZONEAmerica/Sao_PauloN8N_LOG_LEVELinfowarndebugN8N_METRICS"true"N8N_DIAGNOSTICS_ENABLED"false"N8N_PAYLOAD_SIZE_MAX"16"N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS"true"EXECUTIONS_TIMEOUT"3600"EXECUTIONS_TIMEOUT_MAXEXECUTIONS_TIMEOUT"7200"EXECUTIONS_DATA_PRUNE"true"EXECUTIONS_DATA_MAX_AGE"336"EXECUTIONS_DATA_PRUNE_HARD_DELETE_INTERVAL"15"NODE_FUNCTION_ALLOW_BUILTIN*NODE_FUNCTION_ALLOW_EXTERNALlodashN8N_COMMUNITY_PACKAGES_ENABLED"true"N8N_REINSTALL_MISSING_PACKAGES"true"N8N_NODE_PATH/home/node/.n8n/nodesN8N_BLOCK_ENV_ACCESS_IN_NODE"false"| Serviço | Obrigatório |
|---|---|
| Sim |
| Sim |
| Sim |
| Sim |
| Sim |
command| Serviço | Comando Esperado |
|---|---|
| |
| |
| |
| |
| |
| Serviço | Réplicas Mínimas | Observação |
|---|---|---|
| 1 | Não deve ter mais de 1 (sessão única) |
| 1 | Pode escalar para mais |
| 2 | Deve ter pelo menos 2 para HA |
| 1 | Deve ter ao menos 1 runner por worker |
| 1 | Separado do webhook principal |
n8n_editorn8n_webhookn8n_editorn8n_webhookn8n_mcp_apix-n8n-editor-app-urlworkflows.agenciasynca.com.brx-n8n-webhook-app-urlwebhooks.agenciasynca.com.brx-n8n-editor-app-urlHost(...)traefik.http.routers.n8n_editor.rulex-n8n-webhook-app-urlHost(...)traefik.http.routers.n8n_webhook.rulex-n8n-webhook-app-urlHost(...)traefik.http.routers.n8n_mcp_api.rulex-n8n-editor-app-urlN8N_HOSTN8N_EDITOR_BASE_URLx-n8n-webhook-app-urlWEBHOOK_URLtraefik.enable=truetraefik.swarm.network=network_swarm_publictraefik.http.routers.<nome>.ruleHost(...)traefik.http.routers.<nome>.entrypoints=websecuretraefik.http.routers.<nome>.tls.certresolver=letsencryptresolvertraefik.http.routers.<nome>.service=<nome>traefik.http.services.<nome>.loadbalancer.server.port=5678traefik.http.services.<nome>.loadbalancer.passHostHeader=truen8n_editorHost(...)n8n_webhookHost(...)n8n_mcp_apiHost(...) && PathPrefix('/mcp')n8n_editorn8n_webhookn8n_mcp_apin8n_webhook/mcpn8n_worker_01n8n_runners_01n8n_runners_01N8N_RUNNERS_TASK_BROKER_URIhttp://n8n_worker_01:5679N8N_RUNNERS_AUTH_TOKENx-n8n-keys.N8N_RUNNERS_AUTH_TOKENn8n_worker_01*n8n-env*n8n-runnersn8n_editor*n8n-envn8n_mcp_apin8n_webhookcommand: webhookstartworkerPathPrefix('/mcp')| Serviço | CPU Mínimo | Memória Mínima | Memória Máxima |
|---|---|---|---|
| "0.5" | 512M | 1024M |
| "0.5" | 512M | 1024M |
| "0.5" | 512M | 1024M |
| "0.5" | 512M | 1024M |
| "0.5" | 1024M | 2048M |
resources.limitsmode: replicatedreplicatedplacement.constraintsnode.role == managerupdate_config.order: start-firstupdate_config.failure_action: rollbackupdate_config.delay30snetwork_swarm_publicexternal: truenetworks:n8n_editorn8n_worker_01n8n_webhookn8n_mcp_api*n8n-imagen8n_runners_01*n8n-runners-imagelatestDB_POSTGRESDB_PASSWORDSENHAN8N_ENCRYPTION_KEYN8N_RUNNERS_AUTH_TOKENN8N_BLOCK_ENV_ACCESS_IN_NODE: "false"N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS: "true"N8N_RESTRICT_FILE_ACCESS_TO# Relatório de Auditoria — n8n.yaml
Data: <data atual>
## Resumo
- Total de checks: X
- ✅ OK: X
- ⚠️ Atenções: X
- ❌ Erros: X
## Resultados por Categoria
### 1. Variáveis de Ambiente
✅ N8N_ENCRYPTION_KEY: definido
❌ DB_POSTGRESDB_PASSWORD: usando placeholder SENHA — troque antes do deploy
...
### 2. Serviços
✅ n8n_editor: presente
✅ n8n_worker_01: presente
...
### 3. Comandos
✅ n8n_editor: comando `start` correto
✅ n8n_worker_01: comando `worker --concurrency=10` correto
...
### 4. Replicas
✅ n8n_webhook: 2 réplicas (HA ok)
⚠️ n8n_runners_01: 1 runner para 1 worker (proporcional, ok)
...
### 5. Rotas Traefik
✅ n8n_editor: rota Host correta, TLS ok
✅ n8n_mcp_api: PathPrefix(/mcp) configurado corretamente
...
### 6. Task Runners
✅ n8n_runners_01: BROKER_URI aponta para n8n_worker_01:5679
✅ AUTH_TOKEN consistente entre runner e keys
...
### 7. MCP
✅ n8n_mcp_api: serviço separado
✅ n8n_mcp_api: memória 2048M (maior que demais)
...
### 8. Recursos
✅ Todos os serviços com limits definidos
...
### 9. Deploy
✅ Todos com start-first e rollback
...
### 10. Redes e Imagens
⚠️ Imagens usando `latest` — considere fixar uma versão em produção
...
### 11. Segurança
❌ DB_POSTGRESDB_PASSWORD: placeholder SENHA detectado
❌ N8N_ENCRYPTION_KEY: usando valor padrão `r3djGX2vPoeL9zKL` — gere uma nova chave
❌ N8N_RUNNERS_AUTH_TOKEN: usando valor padrão `r3djGX2YCWRTvPoeHGRFGHL9zKLYaq31` — gere um novo token
⚠️ N8N_BLOCK_ENV_ACCESS_IN_NODE: false — permite acesso a variáveis de ambiente nos nodes
...
## Ações Recomendadas (por prioridade)
### Crítico (fazer antes do deploy)
1. ...
### Recomendado
1. ...
### Opcional
1. ...