promovaweb-devops-review-n8n-stack

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Review N8N Stack

N8N栈审核

Executa uma auditoria completa do arquivo
n8n.yaml
e reporta conformidade, problemas e sugestões.
n8n.yaml
文件执行完整审计,输出合规性结果、问题及优化建议。

Instruções de Execução

执行说明

Quando esta skill for invocada, siga exatamente este roteiro:
调用本技能时,请严格遵循以下流程:

Passo 1 — Ler o arquivo

步骤1 — 读取文件

Leia o arquivo
n8n.yaml
completo.
读取完整的
n8n.yaml
文件。

Passo 2 — Executar todos os checks abaixo

步骤2 — 执行所有以下检查项

Execute cada bloco de verificação e registre os resultados (✅ OK / ⚠️ Atenção / ❌ Erro).
逐个执行每个检查模块,并记录结果(✅ 正常 / ⚠️ 注意 / ❌ 错误)。

Passo 3 — Gravar o resultado

步骤3 — 保存结果

Grave o relatório completo em um arquivo chamado n8n.audit.md.

将完整审计报告保存为名为n8n.audit.md的文件。

Checks de Verificação

检查项

1. Variáveis de Ambiente Obrigatórias

1. 必填环境变量

Verifique se todas as variáveis abaixo estão definidas nos anchors YAML (
x-n8n-*
):
Segurança (
x-n8n-keys
)
  • N8N_ENCRYPTION_KEY
    — deve existir e não ser o valor padrão
    r3djGX2vPoeL9zKL
  • N8N_RUNNERS_AUTH_TOKEN
    — deve existir e não ser o valor padrão
    r3djGX2YCWRTvPoeHGRFGHL9zKLYaq31
    , deve ser o mesmo valor em todos os serviços
Banco de dados (
x-n8n-db
)
  • DB_TYPE
    — deve ser
    postgresdb
  • DB_POSTGRESDB_DATABASE
    — deve ser definido (padrão
    n8n
    )
  • DB_POSTGRESDB_HOST
    — deve ser definido (padrão:
    postgres
    )
  • DB_POSTGRESDB_PORT
    — deve ser
    "5432"
  • DB_POSTGRESDB_USER
    — deve ser definido (padrão:
    postgres
    )
  • DB_POSTGRESDB_PASSWORD
    — deve existir e não deve ser o placeholder
    SENHA
    , leia a senha que está no arquivo
    postgres.yaml
Fila Redis (
x-n8n-queue
)
  • EXECUTIONS_MODE
    — deve ser
    queue
  • QUEUE_BULL_REDIS_HOST
    — deve ser definido (ex:
    redis
    )
  • QUEUE_BULL_REDIS_PORT
    — deve ser
    "6379"
  • QUEUE_BULL_REDIS_DB
    — deve ser definido (ex:
    "2"
    )
Domínios (
x-n8n-domains
)
  • N8N_PORT
    — deve ser
    "5678"
  • N8N_PROTOCOL
    — deve ser
    https
  • N8N_HOST
    — deve ser um domínio válido (não localhost, não
    workflows.agenciasynca.com.br
    se placeholder)
  • N8N_EDITOR_BASE_URL
    — deve começar com
    https://
    e terminar com
    /
  • WEBHOOK_URL
    — deve começar com
    https://
    e terminar com
    /
  • N8N_ENDPOINT_WEBHOOK
    — deve ser
    webhook
Runners Externos (
x-n8n-runners
)
  • N8N_RUNNERS_MODE
    — deve ser
    external
  • N8N_RUNNERS_BROKER_LISTEN_ADDRESS
    — deve ser
    0.0.0.0
  • N8N_NATIVE_PYTHON_RUNNER
    — deve ser
    "true"
  • OFFLOAD_MANUAL_EXECUTIONS_TO_WORKERS
    — deve ser
    "true"
Ambiente Geral (
x-n8n-env
)
  • NODE_ENV
    — deve ser
    production
  • GENERIC_TIMEZONE
    — deve ser definido (ex:
    America/Sao_Paulo
    )
  • N8N_LOG_LEVEL
    — deve ser
    info
    ou
    warn
    (não
    debug
    em produção)
  • N8N_METRICS
    — deve ser
    "true"
  • N8N_DIAGNOSTICS_ENABLED
    — deve ser
    "false"
  • N8N_PAYLOAD_SIZE_MAX
    — deve ser definido (ex:
    "16"
    )
  • N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS
    — deve ser
    "true"
  • EXECUTIONS_TIMEOUT
    — deve ser um número positivo (ex:
    "3600"
    )
  • EXECUTIONS_TIMEOUT_MAX
    — deve ser maior que
    EXECUTIONS_TIMEOUT
    (ex:
    "7200"
    )
  • EXECUTIONS_DATA_PRUNE
    — deve ser
    "true"
  • EXECUTIONS_DATA_MAX_AGE
    — deve ser definido (ex:
    "336"
    )
  • EXECUTIONS_DATA_PRUNE_HARD_DELETE_INTERVAL
    — deve ser definido (ex:
    "15"
    )
  • NODE_FUNCTION_ALLOW_BUILTIN
    — deve ser
    *
  • NODE_FUNCTION_ALLOW_EXTERNAL
    — deve ser definido (ex:
    lodash
    )
  • N8N_COMMUNITY_PACKAGES_ENABLED
    — deve ser
    "true"
  • N8N_REINSTALL_MISSING_PACKAGES
    — deve ser
    "true"
  • N8N_NODE_PATH
    — deve ser
    /home/node/.n8n/nodes
  • N8N_BLOCK_ENV_ACCESS_IN_NODE
    — alertar se for
    "false"
    (risco de segurança)

检查以下所有变量是否在YAML锚点(
x-n8n-*
)中定义:
安全类(
x-n8n-keys
  • N8N_ENCRYPTION_KEY
    — 必须存在,且不能为默认值
    r3djGX2vPoeL9zKL
  • N8N_RUNNERS_AUTH_TOKEN
    — 必须存在,且不能为默认值
    r3djGX2YCWRTvPoeHGRFGHL9zKLYaq31
    ,所有服务中该值必须一致
数据库(
x-n8n-db
  • DB_TYPE
    — 必须为
    postgresdb
  • DB_POSTGRESDB_DATABASE
    — 必须定义(默认值
    n8n
  • DB_POSTGRESDB_HOST
    — 必须定义(默认值:
    postgres
  • DB_POSTGRESDB_PORT
    — 必须为
    "5432"
  • DB_POSTGRESDB_USER
    — 必须定义(默认值:
    postgres
  • DB_POSTGRESDB_PASSWORD
    — 必须存在,且不能为占位符
    SENHA
    ,请读取
    postgres.yaml
    文件中的密码
Redis队列(
x-n8n-queue
  • EXECUTIONS_MODE
    — 必须为
    queue
  • QUEUE_BULL_REDIS_HOST
    — 必须定义(例如:
    redis
  • QUEUE_BULL_REDIS_PORT
    — 必须为
    "6379"
  • QUEUE_BULL_REDIS_DB
    — 必须定义(例如:
    "2"
域名配置(
x-n8n-domains
  • N8N_PORT
    — 必须为
    "5678"
  • N8N_PROTOCOL
    — 必须为
    https
  • N8N_HOST
    — 必须为有效域名(不能是localhost,不能是占位符
    workflows.agenciasynca.com.br
  • N8N_EDITOR_BASE_URL
    — 必须以
    https://
    开头,以
    /
    结尾
  • WEBHOOK_URL
    — 必须以
    https://
    开头,以
    /
    结尾
  • N8N_ENDPOINT_WEBHOOK
    — 必须为
    webhook
外部运行器(
x-n8n-runners
  • N8N_RUNNERS_MODE
    — 必须为
    external
  • N8N_RUNNERS_BROKER_LISTEN_ADDRESS
    — 必须为
    0.0.0.0
  • N8N_NATIVE_PYTHON_RUNNER
    — 必须为
    "true"
  • OFFLOAD_MANUAL_EXECUTIONS_TO_WORKERS
    — 必须为
    "true"
通用环境配置(
x-n8n-env
  • NODE_ENV
    — 必须为
    production
  • GENERIC_TIMEZONE
    — 必须定义(例如:
    America/Sao_Paulo
  • N8N_LOG_LEVEL
    — 必须为
    info
    warn
    (生产环境不能用
    debug
  • N8N_METRICS
    — 必须为
    "true"
  • N8N_DIAGNOSTICS_ENABLED
    — 必须为
    "false"
  • N8N_PAYLOAD_SIZE_MAX
    — 必须定义(例如:
    "16"
  • N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS
    — 必须为
    "true"
  • EXECUTIONS_TIMEOUT
    — 必须为正整数(例如:
    "3600"
  • EXECUTIONS_TIMEOUT_MAX
    — 必须大于
    EXECUTIONS_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_EXTERNAL
    — 必须定义(例如:
    lodash
  • N8N_COMMUNITY_PACKAGES_ENABLED
    — 必须为
    "true"
  • N8N_REINSTALL_MISSING_PACKAGES
    — 必须为
    "true"
  • N8N_NODE_PATH
    — 必须为
    /home/node/.n8n/nodes
  • N8N_BLOCK_ENV_ACCESS_IN_NODE
    — 如果为
    "false"
    需发出告警(存在安全风险)

2. Serviços Obrigatórios

2. 必填服务

Verifique se todos estes serviços estão presentes:
ServiçoObrigatório
n8n_editor
Sim
n8n_worker_01
Sim
n8n_webhook
Sim
n8n_runners_01
Sim
n8n_mcp_api
Sim

检查是否包含以下所有服务:
服务是否必填
n8n_editor
n8n_worker_01
n8n_webhook
n8n_runners_01
n8n_mcp_api

3. Comandos dos Containers

3. 容器启动命令

Verifique o comando (
command
) de cada serviço:
ServiçoComando Esperado
n8n_editor
start
n8n_worker_01
worker --concurrency=10
(ou outro valor inteiro positivo)
n8n_webhook
webhook
n8n_runners_01
["javascript", "python"]
n8n_mcp_api
webhook
Se algum comando estiver ausente ou incorreto, reportar como ❌.

检查每个服务的启动命令(
command
):
服务预期命令
n8n_editor
start
n8n_worker_01
worker --concurrency=10
(或其他正整数值)
n8n_webhook
webhook
n8n_runners_01
["javascript", "python"]
n8n_mcp_api
webhook
如果任何命令缺失或不正确,标记为❌。

4. Replicas dos Serviços

4. 服务副本数

Verifique a quantidade de réplicas de cada serviço:
ServiçoRéplicas MínimasObservação
n8n_editor
1Não deve ter mais de 1 (sessão única)
n8n_worker_01
1Pode escalar para mais
n8n_webhook
2Deve ter pelo menos 2 para HA
n8n_runners_01
1Deve ter ao menos 1 runner por worker
n8n_mcp_api
1Separado do webhook principal
Alertar se
n8n_editor
tiver mais de 1 réplica (quebra sessões de usuário). Alertar se
n8n_webhook
tiver menos de 2 réplicas (falta de alta disponibilidade). Verificar se a quantidade de runners é proporcional aos workers.

检查每个服务的副本数量:
服务最小副本数说明
n8n_editor
1不能超过1个(单会话限制)
n8n_worker_01
1可扩容更多副本
n8n_webhook
2至少需要2个实现高可用
n8n_runners_01
1每个worker至少对应1个runner
n8n_mcp_api
1与主webhook分离
如果
n8n_editor
副本数超过1需告警(会导致用户会话异常)。 如果
n8n_webhook
副本数少于2需告警(缺少高可用能力)。 检查runner数量与worker数量是否成正比。

5. Rotas Traefik

5. Traefik路由

Para cada serviço com labels Traefik (
n8n_editor
,
n8n_webhook
,
n8n_mcp_api
), verifique:
Âncoras de endereço:
  • A âncora
    x-n8n-editor-app-url
    deve existir e conter o domínio do editor (não placeholder como
    workflows.agenciasynca.com.br
    )
  • A âncora
    x-n8n-webhook-app-url
    deve existir e conter o domínio dos webhooks (não placeholder como
    webhooks.agenciasynca.com.br
    )
  • O domínio em
    x-n8n-editor-app-url
    deve ser idêntico ao domínio dentro de
    Host(...)
    na label
    traefik.http.routers.n8n_editor.rule
  • O domínio em
    x-n8n-webhook-app-url
    deve ser idêntico ao domínio dentro de
    Host(...)
    na label
    traefik.http.routers.n8n_webhook.rule
  • O domínio em
    x-n8n-webhook-app-url
    deve ser idêntico ao domínio dentro de
    Host(...)
    na label
    traefik.http.routers.n8n_mcp_api.rule
    (MCP usa mesmo domínio de webhook)
  • Se houver inconsistência, reportar como ❌ Erro: âncora e regra Traefik não coincidem
  • O domínio em
    x-n8n-editor-app-url
    deve coincidir com
    N8N_HOST
    e com o domínio em
    N8N_EDITOR_BASE_URL
  • O domínio em
    x-n8n-webhook-app-url
    deve coincidir com o domínio em
    WEBHOOK_URL
Labels obrigatórias:
  • traefik.enable=true
  • traefik.swarm.network=network_swarm_public
  • traefik.http.routers.<nome>.rule
    — deve conter
    Host(...)
    com domínio válido
  • traefik.http.routers.<nome>.entrypoints=websecure
  • traefik.http.routers.<nome>.tls.certresolver=letsencryptresolver
  • traefik.http.routers.<nome>.service=<nome>
    — deve bater com o nome do serviço
  • traefik.http.services.<nome>.loadbalancer.server.port=5678
  • traefik.http.services.<nome>.loadbalancer.passHostHeader=true
Regras específicas:
  • n8n_editor
    : rule deve ser apenas
    Host(...)
    — sem PathPrefix
  • n8n_webhook
    : rule deve ser
    Host(...)
    com o domínio de webhook — sem PathPrefix
  • n8n_mcp_api
    : rule deve ter
    Host(...) && PathPrefix('/mcp')
    — separado do webhook
Verificar conflito de rotas:
  • Os domínios de
    n8n_editor
    e
    n8n_webhook
    não devem ser iguais
  • n8n_mcp_api
    deve usar o mesmo domínio de
    n8n_webhook
    com PathPrefix
    /mcp
  • Serviços sem Traefik (
    n8n_worker_01
    ,
    n8n_runners_01
    ) não devem ter labels Traefik

对每个带有Traefik标签的服务(
n8n_editor
n8n_webhook
n8n_mcp_api
),检查以下项:
地址锚点:
  • 必须存在锚点
    x-n8n-editor-app-url
    ,且包含编辑器域名(不能是
    workflows.agenciasynca.com.br
    这类占位符)
  • 必须存在锚点
    x-n8n-webhook-app-url
    ,且包含webhook域名(不能是
    webhooks.agenciasynca.com.br
    这类占位符)
  • x-n8n-editor-app-url
    中的域名必须与
    traefik.http.routers.n8n_editor.rule
    标签中
    Host(...)
    内的域名完全一致
  • x-n8n-webhook-app-url
    中的域名必须与
    traefik.http.routers.n8n_webhook.rule
    标签中
    Host(...)
    内的域名完全一致
  • x-n8n-webhook-app-url
    中的域名必须与
    traefik.http.routers.n8n_mcp_api.rule
    标签中
    Host(...)
    内的域名完全一致(MCP使用与webhook相同的域名)
  • 如果存在不一致,标记为❌ 错误:锚点与Traefik规则不匹配
  • x-n8n-editor-app-url
    中的域名必须与
    N8N_HOST
    以及
    N8N_EDITOR_BASE_URL
    中的域名一致
  • x-n8n-webhook-app-url
    中的域名必须与
    WEBHOOK_URL
    中的域名一致
必填标签:
  • traefik.enable=true
  • traefik.swarm.network=network_swarm_public
  • traefik.http.routers.<服务名>.rule
    — 必须包含带有效域名的
    Host(...)
  • traefik.http.routers.<服务名>.entrypoints=websecure
  • traefik.http.routers.<服务名>.tls.certresolver=letsencryptresolver
  • traefik.http.routers.<服务名>.service=<服务名>
    — 必须与服务名匹配
  • traefik.http.services.<服务名>.loadbalancer.server.port=5678
  • traefik.http.services.<服务名>.loadbalancer.passHostHeader=true
特定规则:
  • n8n_editor
    : rule只能是
    Host(...)
    — 不能带PathPrefix
  • n8n_webhook
    : rule必须是带webhook域名的
    Host(...)
    — 不能带PathPrefix
  • n8n_mcp_api
    : rule必须包含
    Host(...) && PathPrefix('/mcp')
    — 与webhook区分
路由冲突检查:
  • n8n_editor
    n8n_webhook
    的域名不能相同
  • n8n_mcp_api
    必须使用与
    n8n_webhook
    相同的域名,搭配
    /mcp
    路径前缀
  • 不需要Traefik的服务(
    n8n_worker_01
    n8n_runners_01
    )不能带有Traefik标签

6. Task Runners — Associação com Workers

6. Task Runners — 与Worker的关联

Verifique se os runners estão corretamente associados:
  • n8n_runners_01
    deve ter
    N8N_RUNNERS_TASK_BROKER_URI
    apontando para
    http://n8n_worker_01:5679
  • O
    N8N_RUNNERS_AUTH_TOKEN
    do runner deve ser idêntico ao definido em
    x-n8n-keys.N8N_RUNNERS_AUTH_TOKEN
  • O worker (
    n8n_worker_01
    ) deve ter as variáveis de runners via
    *n8n-env
    (que inclui
    *n8n-runners
    )
  • O editor (
    n8n_editor
    ) também deve ter as variáveis de runners via
    *n8n-env

检查runner是否正确关联:
  • n8n_runners_01
    N8N_RUNNERS_TASK_BROKER_URI
    必须指向
    http://n8n_worker_01:5679
  • runner的
    N8N_RUNNERS_AUTH_TOKEN
    必须与
    x-n8n-keys.N8N_RUNNERS_AUTH_TOKEN
    中定义的值完全一致
  • worker(
    n8n_worker_01
    )必须通过
    *n8n-env
    引入runner相关变量(
    *n8n-env
    包含
    *n8n-runners
  • 编辑器(
    n8n_editor
    )也必须通过
    *n8n-env
    引入runner相关变量

7. Serviço MCP Separado

7. 独立MCP服务

Verifique se o MCP está corretamente isolado:
  • n8n_mcp_api
    deve ser um serviço separado de
    n8n_webhook
  • Deve usar
    command: webhook
    (não
    start
    nem
    worker
    )
  • Deve ter rota Traefik com
    PathPrefix('/mcp')
    diferenciando do webhook geral
  • Deve ter limite de memória maior (2048M) em relação aos outros serviços (1024M)
  • Não deve ter mais de 1 réplica por padrão (MCP é stateful por sessão)

检查MCP是否正确隔离:
  • n8n_mcp_api
    必须是与
    n8n_webhook
    分离的独立服务
  • 必须使用
    command: webhook
    (不能是
    start
    worker
  • Traefik路由必须配置
    PathPrefix('/mcp')
    与通用webhook区分
  • 内存上限必须高于其他服务(2048M,其他服务为1024M)
  • 默认不能超过1个副本(MCP是会话有状态服务)

8. Recursos dos Containers

8. 容器资源配置

Para cada serviço, verifique os limites de recursos:
ServiçoCPU MínimoMemória MínimaMemória Máxima
n8n_editor
"0.5"512M1024M
n8n_worker_01
"0.5"512M1024M
n8n_webhook
"0.5"512M1024M
n8n_runners_01
"0.5"512M1024M
n8n_mcp_api
"0.5"1024M2048M
Alertar se algum serviço não tiver
resources.limits
definido.

检查每个服务的资源限制:
服务最低CPU配置最低内存配置最高内存配置
n8n_editor
"0.5"512M1024M
n8n_worker_01
"0.5"512M1024M
n8n_webhook
"0.5"512M1024M
n8n_runners_01
"0.5"512M1024M
n8n_mcp_api
"0.5"1024M2048M
如果任何服务没有定义
resources.limits
需发出告警。

9. Configuração de Deploy

9. 部署配置

Para cada serviço, verifique:
  • mode: replicated
    — todos devem ser
    replicated
  • placement.constraints
    — deve incluir
    node.role == manager
  • update_config.order: start-first
    — garante zero downtime
  • update_config.failure_action: rollback
    — garante reversão automática
  • update_config.delay
    — deve ser pelo menos
    30s

检查每个服务的部署配置:
  • mode: replicated
    — 所有服务都必须是
    replicated
    模式
  • placement.constraints
    — 必须包含
    node.role == manager
  • update_config.order: start-first
    — 保证零停机部署
  • update_config.failure_action: rollback
    — 保证自动回滚
  • update_config.delay
    — 至少为
    30s

10. Redes e Imagens

10. 网络与镜像配置

Redes:
  • Todos os serviços devem estar na rede
    network_swarm_public
  • A rede deve ser declarada como
    external: true
    na seção
    networks:
  • Não deve haver redes internas desnecessárias
Imagens:
  • n8n_editor
    ,
    n8n_worker_01
    ,
    n8n_webhook
    ,
    n8n_mcp_api
    — devem usar
    *n8n-image
    (anchor)
  • n8n_runners_01
    — deve usar
    *n8n-runners-image
    (anchor separado)
  • Verificar se alguma imagem usa tag específica de versão em vez de
    latest
    (recomendado em produção)

网络:
  • 所有服务必须加入
    network_swarm_public
    网络
  • 该网络必须在
    networks:
    节中声明为
    external: true
  • 不能存在不必要的内部网络
镜像:
  • n8n_editor
    n8n_worker_01
    n8n_webhook
    n8n_mcp_api
    — 必须使用
    *n8n-image
    (锚点)
  • n8n_runners_01
    — 必须使用
    *n8n-runners-image
    (独立锚点)
  • 检查是否有镜像使用特定版本标签而非
    latest
    (生产环境推荐固定版本)

11. Segurança

11. 安全检查

  • DB_POSTGRESDB_PASSWORD
    não deve ser
    SENHA
    (placeholder)
  • N8N_ENCRYPTION_KEY
    não deve ser o valor padrão de exemplo
  • N8N_RUNNERS_AUTH_TOKEN
    deve ter pelo menos 32 caracteres
  • N8N_BLOCK_ENV_ACCESS_IN_NODE: "false"
    — alertar como risco de segurança
  • N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS: "true"
    — deve estar presente
  • N8N_RESTRICT_FILE_ACCESS_TO
    — deve estar definido

  • DB_POSTGRESDB_PASSWORD
    不能是
    SENHA
    (占位符)
  • N8N_ENCRYPTION_KEY
    不能是示例默认值
  • N8N_RUNNERS_AUTH_TOKEN
    长度至少为32个字符
  • N8N_BLOCK_ENV_ACCESS_IN_NODE: "false"
    — 告警提示存在安全风险
  • N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS: "true"
    — 必须存在
  • N8N_RESTRICT_FILE_ACCESS_TO
    — 必须定义

Formato do Relatório de Saída

输出报告格式

Ao final, produza um relatório estruturado:
undefined
最终输出结构化报告:
undefined

Relatório de Auditoria — n8n.yaml

N8N.yaml审计报告

Data: <data atual>
日期: <当前日期>

Resumo

概览

  • Total de checks: X
  • ✅ OK: X
  • ⚠️ Atenções: X
  • ❌ Erros: X
  • 总检查项: X
  • ✅ 正常: X
  • ⚠️ 注意: X
  • ❌ 错误: X

Resultados por Categoria

分类检查结果

1. Variáveis de Ambiente

1. 环境变量

✅ N8N_ENCRYPTION_KEY: definido ❌ DB_POSTGRESDB_PASSWORD: usando placeholder SENHA — troque antes do deploy ...
✅ N8N_ENCRYPTION_KEY: 已定义 ❌ DB_POSTGRESDB_PASSWORD: 使用占位符SENHA — 部署前请修改 ...

2. Serviços

2. 服务检查

✅ n8n_editor: presente ✅ n8n_worker_01: presente ...
✅ n8n_editor: 已存在 ✅ n8n_worker_01: 已存在 ...

3. Comandos

3. 启动命令检查

✅ n8n_editor: comando
start
correto ✅ n8n_worker_01: comando
worker --concurrency=10
correto ...
✅ n8n_editor: 命令
start
正确 ✅ n8n_worker_01: 命令
worker --concurrency=10
正确 ...

4. Replicas

4. 副本数检查

✅ n8n_webhook: 2 réplicas (HA ok) ⚠️ n8n_runners_01: 1 runner para 1 worker (proporcional, ok) ...
✅ n8n_webhook: 2个副本(高可用正常) ⚠️ n8n_runners_01: 1个runner对应1个worker(比例合理,正常) ...

5. Rotas Traefik

5. Traefik路由检查

✅ n8n_editor: rota Host correta, TLS ok ✅ n8n_mcp_api: PathPrefix(/mcp) configurado corretamente ...
✅ n8n_editor: Host路由正确,TLS配置正常 ✅ n8n_mcp_api: PathPrefix(/mcp)配置正确 ...

6. Task Runners

6. Task Runners检查

✅ n8n_runners_01: BROKER_URI aponta para n8n_worker_01:5679 ✅ AUTH_TOKEN consistente entre runner e keys ...
✅ n8n_runners_01: BROKER_URI指向n8n_worker_01:5679 ✅ AUTH_TOKEN在runner和配置锚点中一致 ...

7. MCP

7. MCP服务检查

✅ n8n_mcp_api: serviço separado ✅ n8n_mcp_api: memória 2048M (maior que demais) ...
✅ n8n_mcp_api: 独立服务 ✅ n8n_mcp_api: 内存2048M(高于其他服务) ...

8. Recursos

8. 资源配置检查

✅ Todos os serviços com limits definidos ...
✅ 所有服务已定义资源限制 ...

9. Deploy

9. 部署配置检查

✅ Todos com start-first e rollback ...
✅ 所有服务配置了start-first和自动回滚 ...

10. Redes e Imagens

10. 网络与镜像检查

⚠️ Imagens usando
latest
— considere fixar uma versão em produção ...
⚠️ 镜像使用
latest
标签 — 生产环境建议固定具体版本 ...

11. Segurança

11. 安全检查

❌ 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 ...
❌ DB_POSTGRESDB_PASSWORD: 检测到占位符SENHA ❌ N8N_ENCRYPTION_KEY: 使用默认值
r3djGX2vPoeL9zKL
— 请生成新密钥 ❌ N8N_RUNNERS_AUTH_TOKEN: 使用默认值
r3djGX2YCWRTvPoeHGRFGHL9zKLYaq31
— 请生成新token ⚠️ N8N_BLOCK_ENV_ACCESS_IN_NODE: false — 允许节点访问环境变量 ...

Ações Recomendadas (por prioridade)

建议操作(按优先级排序)

Crítico (fazer antes do deploy)

Critical(部署前必须处理)

  1. ...
  1. ...

Recomendado

推荐处理

  1. ...
  1. ...

Opcional

可选优化

  1. ...
undefined
  1. ...
undefined