u1timate
发布于 2025-11-15 / 20 阅读
0
0

n8n

n8n(发音类似于“n-eight-n”)是一个开源、可扩展的工作流自动化平台。它允许用户通过可视化界面连接各种应用程序和服务,实现数据自动流转和业务流程自动化。n8n 支持超过400种预配置的集成节点,并且允许使用代码节点(JavaScript/Python)进行自定义扩展,满足复杂的自动化需求

  • 连接多达400+应用和服务(邮箱、CRM、数据库、云服务、社交媒体等)。

  • 开源社区强大,官方不支持的节点,在社区中也能找到响应的替代方式。

  • 设计复杂的条件判断、循环、数据转换流程。

  • 使用代码节点实现个性化逻辑。

  • 通过触发器(HTTP/Webhook/时间调度等)启动工作流,支持手动和自动执行。

  • 内置AI辅助节点,支持内容摘要、生成等智能功能。

SOAR

SOAR(安全编排自动化与响应),其概念从诞生起就是为了解决自动化安全运营需求。在SOAR中设计AI节点,即可实现提示词的随时迭代,优秀的SOAR产品通常支持单节点调试,可快速摸排提示词效果。AI节点可无成本地加入任意安全运营剧本中快速探索在任意安全运营场景中的AI提效可行性。

AI与SOAR结合的可玩性很高,既可以探索安全运营剧本的AI能力补充,也可以从AI自身角度探索SOAR剧本的整体优化。

1.2 场景解析

AI Agents(智能代理构建)

  • 结合OpenAI/Deepseek

  • 实时转录AI分析

  • RAG聊天机器人

  • 角色扮演和模拟训练

  • 自动化内容创作

 IT 自动化运维

  • 事件和告警自动处理

  • 定时任务和批量操作自动化

  • 配置与变更管理

  • 多工具集成及数据同步

 安全运营自动化

  • 安全告警聚合与通知

  • 威胁情报自动化处理

  • 安全事件响应自动化

 业务流程自动化

自动化审批、通知、报表生成等流程

 跨系统数据同步与集成

连接CRM、ERP、营销平台等系统

 数据采集与处理管道

从多源收集数据并处理

多AI agent

多角色AI Agent是指由多个专门化AI智能体组成的系统,每个智能体都有特定的角色和功能,通过协作来增强安全监控、威胁检测和响应能力。角色分配如下:

主要应用场景:

  • 实时威胁检测 - 持续监控网络流量和系统行为

  • 事件响应 - 自动化处理安全事件

  • 漏洞管理 - 识别和优先处理安全漏洞

  • 威胁情报分析 - 整合分析多方威胁数据

角色分工协作:

  • 威胁分析员 - 识别和分析潜在风险

  • 响应执行者 - 执行缓解措施和修复操作

  • 协调调度员 - 协调各角色间的协作

  • 报告生成员 - 生成安全报告和告警

1 主角色配置

user prompt

system prompt

2 添加角色代理

新建一个AI agent的工作流即可

总结

n8n扩展机制:

  • JavaScript/TypeScript自定义节点

  • 社区节点库共享

  • 工作流内部代码节点

  • 可自由引入npm包

n8n的集成生态:

  • 400+预构建节点,覆盖CRM、数据库、云服务等

  • HTTP请求节点可调用任意REST API

  • 社区贡献的节点包和模板

  • 代码节点支持JavaScript自定义逻辑

n8n的AI集成能力:

1. 通过专用节点调用AI服务(如OpenAI、HuggingFace)

2. 利用LangChain节点构建AI工作流

3. AI Agent节点支持多种Agent类型和工具

4. 需手动组装RAG流程,但集成灵活

n8n优势

1. 广泛的集成能力:400+预构建节点,覆盖各类服务和系统

2. 高度灵活性:通过JavaScript/自定义节点支持几乎任何逻辑

3. 部署简便:单服务架构,易于部署和维护

4. 成熟的社区:长期发展的活跃社区和丰富资源

5. 免费自托管:社区版无功能限制,适合各种规模使用

n8n局限

1. AI能力非核心:需要通过节点和组合实现AI功能,非AI原生

2. 学习曲线较陡:复杂工作流需要理解节点系统和表达式

3. 需要技术背景:高级功能需要JavaScript知识

0x03 配置说明

docker master 部署(开源版本)

docker volume create n8n_data

docker run -it --rm \
 --name n8n \
 -p 5678:5678 \
 -p 5679:5679 \
 -e GENERIC_TIMEZONE="Asia/Chongqing" \
 -e TZ="Asia/Chongqing" \
 -e N8N_LISTEN_ADDRESS=0.0.0.0 \
 -e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true \
 -e DB_TYPE=postgresdb \
 -e DB_POSTGRESDB_DATABASE=n8n \
 -e DB_POSTGRESDB_HOST=***** \
 -e DB_POSTGRESDB_PORT=5432 \
 -e DB_POSTGRESDB_USER=srv_n8n_rw \
 -e DB_POSTGRESDB_SCHEMA=dev \
 -e N8N_PERSONALIZATION_ENABLED=false \
 -e DB_POSTGRESDB_PASSWORD=***** \
 -e N8N_LICENSE_ACTIVATION_KEY=********** \
 -e N8N_RUNNERS_ENABLED=true \
 -e N8N_RUNNERS_MODE=external \
 -e N8N_RUNNERS_BROKER_LISTEN_ADDRESS=0.0.0.0 \
 -e N8N_RUNNERS_AUTH_TOKEN=********** \
 -e N8N_NATIVE_PYTHON_RUNNER=true \
 -e N8N_HIDE_USAGE_PAGE=true \
 -e N8N_LOG_FILE_COUNT_MAX=5 \
 -e N8N_SECURE_COOKIE=false \
 -v n8n_data:/home/node/.n8n \
  192.168.9.37:80/security/n8n:1.114.3
  • N8N_ENCRYPTION_KEY提供一个自定义密钥用于加密 n8n 数据库中的凭证。默认情况下,n8n 在首次启动时生成一个随机密钥。

  • N8N_USER_FOLDER : 提供 n8n 创建 .n8n 文件夹的路径。此目录存储用户特定数据,例如数据库文件和加密密钥。 默认在家目录中创建

  • N8N_PATH: n8n 部署的路径。默认为/

  • N8N_HOST: n8n 运行的域名。默认为localhost

  • N8N_PORT: 默认5678

  • N8N_LISTEN_ADDRESS: 监听的地址,默认为::

  • N8N_PERSONALIZATION_ENABLED: 是否询问用户个性化问题,然后相应地自定义 n8n。默认为true, 应该设置为false

  • N8N_DIAGNOSTICS_ENABLED: 是否与 n8n 共享选定的匿名遥测数据。请注意,如果你将此设置为 false ,你将无法在代码节点中启用 Ask AI 功能。默认为true,建议生产环境中设置为false

  • N8N_PUBLIC_API_SWAGGERUI_DISABLED: 是否禁用 Swagger UI (true) 或不禁用 (false)。默认为false, 生产环境建议设置为false

  • N8N_GRACEFUL_SHUTDOWN_TIMEOU:n8n 进程应在组件关闭前等待多长时间(以秒为单位)才退出进程。

  • N8N_DEV_RELOAD:在处理 n8n 源代码时,将其设置为 true ,以便在源代码文件发生变化时自动重新加载或重启应用程序。建议开发环境中使用

  • N8N_DISABLE_PRODUCTION_MAIN_PROCESS: 禁用主进程中的生产 webhooks。这有助于确保在使用特定于 webhook 的进程时,不会对主进程产生 HTTP 流量负载。默认为false。生产环境中建议为true

  • WEBHOOK_URL:在反向代理后面运行 n8n 时,用于手动提供 Webhook URL。建议生产环境中使用

  • EXECUTIONS_MODE:执行是否应直接运行或使用队列,需要指定为queue模式,默认为reglar(master-worker模式),参考https://docs.n8n.io/hosting/scaling/queue-mode/#worker-server

  • EXECUTIONS_DATA_PRUNE: 是否定期删除过去的执行数据。默认为true

  • EXECUTIONS_DATA_MAX_AGE:执行前被删除的时长(小时)。默认为336小时,生产环境可适当延长配置

  • EXECUTIONS_DATA_PRUNE_MAX_COUNT:数据库中保留的最大执行次数。0 = 无限制,默认为10000

  • N8N_LOG_FORMAT:使用的日志格式。 text 打印人类可读的消息。 json 每行打印一个包含消息、级别、时间戳和所有元数据的 JSON 对象。这对于生产监控和调试都很有用。生产建议用json

  • N8N_LOG_FILE_LOCATION:日志文件位置。需要将 N8N_LOG_OUTPUT 设置为 file 。默认为/logs/n8n.log

  • N8N_LOG_OUTPUT:日志输出位置。以逗号分隔的形式提供多个值。 默认为console。 生产环境建议设置为file

  • NODE_FUNCTION_ALLOW_BUILTIN:允许用户在 Code 节点中导入特定的内置模块。使用 * 允许所有模块。n8n 默认禁用导入模块

  • NODE_FUNCTION_ALLOW_EXTERNAL:允许用户在 Code 节点中导入特定的外部模块(来自 n8n/node_modules )。n8n 默认禁用导入模块。

  • N8N_NATIVE_PYTHON_RUNNER=true 环境变量来启用 Python 运行器。

docker-compose.yaml

services:
  n8n:
    image: n8nio/n8n:1.114.3
    container_name: n8n-main
    environment:
      - N8N_RUNNERS_ENABLED=true
      - N8N_RUNNERS_MODE=external
      - N8N_LISTEN_ADDRESS=0.0.0.0
      - N8N_RUNNERS_BROKER_LISTEN_ADDRESS=0.0.0.0
      - N8N_RUNNERS_AUTH_TOKEN=*****
      - N8N_NATIVE_PYTHON_RUNNER=true
      - GENERIC_TIMEZONE="Asia/Chongqing" 
      - TZ="Asia/Chongqing" 
      - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true 
      - DB_TYPE=postgresdb 
      - DB_POSTGRESDB_DATABASE=n8n 
      - DB_POSTGRESDB_HOST=******** 
      - DB_POSTGRESDB_PORT=5432 
      - DB_POSTGRESDB_USER=******** 
      - DB_POSTGRESDB_SCHEMA=dev 
      - N8N_PERSONALIZATION_ENABLED=false 
      - DB_POSTGRESDB_PASSWORD=******** 
      - N8N_LICENSE_ACTIVATION_KEY=*************
      - N8N_HIDE_USAGE_PAGE=true
      - N8N_LOG_FILE_COUNT_MAX=5
    ports:
      - "5678:5678"
      - "5679:5679"
    volumes:
      - n8n_data:/home/node/.n8n
  
  task-runners:
    image: n8nio/runners:1.114.3
    container_name: n8n-runners
    environment:
      - N8N_RUNNERS_TASK_BROKER_URI=http://192.168.10.117:5679
      - N8N_RUNNERS_AUTH_TOKEN=***********
    depends_on:
      - n8n

volumes:
  n8n_data:

参考

https://docs.n8n.io/hosting/

https://community.n8n.io/t/how-i-built-a-multi-agent-ai-system-in-n8n-using-sub-workflows-example/120176


评论