菜单

配置和部署

相关源文件

本文档涵盖了 n8n 的配置系统和部署选项。它解释了如何为不同环境配置 n8n、可用的部署方法以及扩展方法。有关与外部系统的特定集成信息,请参阅“外部钩子”和“外部密钥”文档。

配置系统概述

n8n 使用一个强大的配置系统,该系统按照优先级顺序从多个来源检索设置。整个配置由 GlobalConfig 类管理,该类将配置组织成逻辑类别。

来源

配置源和优先级

n8n 按以下优先级顺序检索配置值

  1. 环境变量:最高优先级,直接在环境中设置
  2. 环境变量文件引用:通过带有 _FILE 后缀的环境变量引用的文件加载的值
  3. JSON 配置文件:通过 N8N_CONFIG_FILES 环境变量指定的 JSON 文件加载的值
  4. 默认值:在配置类中定义

例如,要设置 PostgreSQL 密码

  • 通过环境变量:DB_POSTGRESDB_PASSWORD=mypassword
  • 通过文件:DB_POSTGRESDB_PASSWORD_FILE=/path/to/password/file

使用 JSON 配置文件

此方法允许安全地处理敏感值,尤其是在容器化环境中。

来源

核心配置类别

数据库配置

n8n 支持多种数据库后端

数据库类型环境变量描述
SQLiteDB_TYPE=sqlite默认选项,将数据存储在文件中
PostgreSQLDB_TYPE=postgresdb适用于生产环境
MySQL/MariaDBDB_TYPE=mysqldb备用的生产选项

PostgreSQL 配置示例

来源

执行模式

n8n 支持两种执行模式

  1. 常规模式 (EXECUTIONS_MODE=regular)

    • 所有工作流都在主进程中执行
    • 设置简单,适用于小型部署
    • 可扩展性有限
  2. 队列模式 (EXECUTIONS_MODE=queue)

    • 工作流被排队并通过单独的工作进程执行
    • 支持水平扩展
    • 需要 Redis 进行队列管理
    • 更好的资源利用率和容错性

来源

部署选项

n8n 可根据您的需求以多种方式进行部署

部署 n8n 的最简单方法是使用 Docker

此命令将

  • 创建一个持久化的 Docker 卷 n8n_data
  • 将容器的 5678 端口映射到主机的 5678 端口
  • 挂载卷以存储工作流数据

Docker 镜像使用入口点脚本 docker/images/n8n/docker-entrypoint.sh,该脚本管理启动。

来源

NPM 安装

对于开发或简单的设置,通过 npm 安装 n8n

这将使用默认配置启动 n8n,并将数据存储在用户的主目录中。

来源

自定义 Docker 镜像

对于专业的部署,您可以构建自定义 Docker 镜像

当您需要包含其他依赖项或自定义 n8n 安装时,这很有用。

来源

数据库配置详情

SQLite (默认)

对于简单的安装,SQLite 提供了一个无需额外依赖的简单设置

其他选项

  • DB_SQLITE_POOL_SIZE:连接池大小(默认:0,禁用)
  • DB_SQLITE_ENABLE_WAL:启用写前日志,以提高性能
  • DB_SQLITE_VACUUM_ON_STARTUP:启动时运行 VACUUM 以优化数据库

来源

对于生产环境部署,推荐使用 PostgreSQL

用于安全连接的 SSL 选项

来源

执行模式和扩展

n8n 支持不同的执行模式,以适应各种部署场景,从简单的单实例设置到复杂的分布式系统。

常规模式

默认执行模式在单个进程中运行所有工作流

适用于小型部署或开发,但可扩展性有限。

队列模式

队列模式将工作流执行分发到多个进程

启动工作进程

concurrency 参数控制工作进程可以同时执行多少个工作流。实际并发可以通过环境变量设置

启动专用 webhook 进程

来源

多主节点设置

对于高可用性部署,n8n 支持运行多个主实例

通过此配置

  • 一个实例通过领导者选举成为领导者
  • 只有领导者才会激活带有触发器和轮询器的工作流
  • 如果领导者发生故障,另一个实例将接管

多主节点设置需要启用 MULTIPLE_MAIN_INSTANCES 功能的企业许可证。

来源

环境变量参考

下表列出了按类别分组的关键环境变量

类别可变描述默认
通用N8N_PATHn8n 的基础路径/
N8N_HOSTn8n 可访问的主机名localhost
N8N_PORTn8n 监听的端口5678
N8N_LISTEN_ADDRESSn8n 应监听的 IP 地址::
N8N_PROTOCOL协议(httphttpshttp
N8N_SSL_KEYSSL 密钥文件路径
N8N_SSL_CERTSSL 证书文件路径
N8N_EDITOR_BASE_URL编辑器可访问的公共 URL
数据库DB_TYPE数据库类型(sqlitepostgresdbmysqldbsqlite
DB_TABLE_PREFIX表名后缀
DB_POSTGRESDB_*PostgreSQL 连接选项
DB_SQLITE_*SQLite 选项
DB_LOGGING_ENABLED启用数据库查询日志false
DB_LOGGING_OPTIONS日志选项(allerror 等)error
DB_LOGGING_MAX_EXECUTION_TIME记录执行时间超过此值的查询(毫秒)0
执行EXECUTIONS_MODE执行模式(regularqueueregular
EXECUTIONS_TIMEOUT最长工作流运行时间(秒)-1(无限制)
EXECUTIONS_TIMEOUT_MAX可以设置的最大超时时间3600
N8N_CONCURRENCY_PRODUCTION_LIMIT最大并发生产执行数-1(无限制)
N8N_CONCURRENCY_EVALUATION_LIMIT最大并发评估执行数-1(无限制)
EXECUTIONS_DATA_SAVE_ON_ERROR发生错误时要保存的执行数据all
EXECUTIONS_DATA_SAVE_ON_SUCCESS成功时要保存的执行数据all
EXECUTIONS_DATA_SAVE_ON_PROGRESS是否为每个节点保存进度false
EXECUTIONS_DATA_SAVE_MANUAL_EXECUTIONS保存手动执行的数据true
队列N8N_REDIS_HOST队列模式的 Redis 主机localhost
N8N_REDIS_PORTRedis 端口6379
N8N_REDIS_PASSWORDRedis 密码
N8N_REDIS_DBRedis 数据库索引0
N8N_REDIS_KEY_PREFIX所有 n8n 相关键的前缀n8n
N8N_REDIS_CLUSTER_NODESRedis 集群节点的逗号分隔列表
用户管理N8N_USER_MANAGEMENT_JWT_SECRETJWT 令牌的密钥自动生成
N8N_USER_MANAGEMENT_JWT_DURATION_HOURSJWT 令牌过期时间168(7 天)
N8N_USER_MANAGEMENT_JWT_REFRESH_TIMEOUT_HOURSJWT 在过期前多久刷新0(持续时间的 25%)
身份验证N8N_AUTH_COOKIE_SECURE身份验证 cookie 是否需要 HTTPStrue
N8N_AUTH_COOKIE_SAMESITECookie 的 SameSite 属性lax
许可证N8N_LICENSE_SERVER_URL许可证服务器 URLhttps://license.n8n.io/v1
N8N_LICENSE_AUTO_RENEW_ENABLED自动续订许可证true
N8N_LICENSE_ACTIVATION_KEY许可证激活密钥
时区GENERIC_TIMEZONE默认时区America/New_York
TZ系统时区
日志记录N8N_LOG_LEVEL日志级别(errorwarninfodebuginfo
N8N_LOG_OUTPUT日志输出位置(consolefileconsole
N8N_LOG_FILE_LOCATION日志文件位置logs/n8n.log
安全N8N_SECURITY_RESTRICT_FILE_ACCESS_TO将文件访问限制到特定目录
N8N_SECURITY_BLOCK_FILE_ACCESS_TO_N8N_FILES阻止访问 n8n 文件true
社区节点N8N_COMMUNITY_PACKAGES_ENABLED启用社区包true
N8N_COMMUNITY_PACKAGES_REGISTRY社区包的 NPM 注册表https://registry.npmjs.org
N8N_COMMUNITY_PACKAGES_UNVERIFIED_ENABLED允许未经验证的社区包true

来源

Docker 部署示例

n8n 提供了官方 Docker 镜像,使部署变得简单。Docker 镜像基于 n8nio/base 镜像构建,并包含所有必需的依赖项。

带 SQLite 的基本设置

使用 PostgreSQL 进行生产环境设置

使用 Redis 的队列模式

来源

设置时区

为 n8n 设置时区

  • GENERIC_TIMEZONE:影响 n8n 操作,例如计划节点
  • TZ:影响系统时区用于日期操作

来源

安全考量

使用文件传递敏感数据

对于敏感信息,n8n 支持使用 _FILE 后缀从文件加载值

这对于 Docker Swarm 或 Kubernetes secrets 尤其有用。

支持的 _FILE 环境变量包括:

  • DB_POSTGRESDB_DATABASE_FILE
  • DB_POSTGRESDB_HOST_FILE
  • DB_POSTGRESDB_PASSWORD_FILE
  • DB_POSTGRESDB_PORT_FILE
  • DB_POSTGRESDB_USER_FILE
  • DB_POSTGRESDB_SCHEMA_FILE

来源

更新 n8n

更新您的 n8n Docker 安装

对于 Docker Compose 设置

来源

命令行工具参考

n8n 为不同目的提供了几个 CLI 命令

命令描述示例
start启动主 n8n 进程n8n start
worker启动用于队列模式的工作进程n8n worker --concurrency=5
webhook启动专用的 webhook 进程n8n webhook
execute执行特定的工作流n8n execute --id=5
executeBatch执行多个工作流n8n executeBatch --ids=1,2,3

start 命令支持多个标志

  • --tunnel:创建公共隧道用于 webhook 测试
  • --open:自动在浏览器中打开 UI
  • --reinstallMissingPackages:尝试重新安装缺失的社区节点包

worker 命令支持:

  • --concurrency=N:设置并发工作流执行的最大数量

来源

高级配置选项

缓存配置

n8n 可以使用不同的缓存后端

内存缓存选项

Redis 缓存选项

来源

日志配置

配置日志行为

文件日志选项

您还可以按范围过滤日志

支持的范围包括:concurrency、external-secrets、license、multi-main-setup、pruning、pubsub、push、redis、scaling、waiting-executions、task-runner 和 insights。

来源

许可证配置

n8n Enterprise 功能需要有效许可证

许可证系统通过功能标志和配额管理功能访问

来源

结论

本文档提供了 n8n 配置系统和部署选项的全面概述。通过了解这些组件,您可以根据自己的需求部署 n8n,从简单的开发环境到复杂的、水平扩展的生产环境。

有关特定部署场景的更多详细信息,请参阅 n8n 官方文档:https://docs.n8n.io/hosting/