Docker 安装#
Docker 提供以下优势:
- 在纯净环境中安装 n8n
- 更轻松地设置您偏好的数据库
- 可以避免因不同操作系统导致的问题,因为 Docker 提供了统一的系统环境
- 可以避免因操作系统和工具差异导致的兼容性问题
- 使迁移到新主机或环境更加简单直接
您也可以使用 Docker Compose 来运行 n8n。在 n8n-hosting 仓库中可以找到适用于各种架构的 Docker Compose 配置。
/// 注意 | 自托管知识前提条件 自托管 n8n 需要具备以下技术知识:
- 服务器和容器的设置与配置
- 管理应用程序资源和扩展
- 服务器和应用程序的安全防护
- 配置 n8n
n8n 建议仅由专业用户进行自托管。配置不当可能导致数据丢失、安全问题和服务中断。如果您缺乏服务器管理经验,n8n 推荐使用 n8n Cloud。 ///
先决条件#
开始前请先安装 Docker Desktop。
Linux 用户
Docker Desktop 适用于 Mac 和 Windows。Linux 用户需要根据发行版分别安装 Docker Engine 和 Docker Compose。
/// 注意 | 最新版和下一版本
n8n 每周都会发布新的次要版本。latest
版本用于生产环境,next
是最新发布的版本。您应该将 next
视为测试版:它可能不稳定。如需报告问题,请使用论坛。
当前 latest
版本: 1.95.3
当前 next
版本: 1.97.1
///
启动 n8n#
在终端中运行以下命令:
1 2 3 |
|
此命令会创建一个用于存储持久化数据的卷,下载所需的 n8n 镜像,并启动容器,暴露在 5678
端口。为了在容器重启时保存您的工作,它还挂载了一个 docker 卷 n8n_data
来在本地持久化数据。
运行后,您可以通过以下地址访问 n8n: http://localhost:5678
使用 PostgreSQL 数据库#
默认情况下,n8n 使用 SQLite 存储凭据、历史执行记录和工作流。n8n 也支持 PostgreSQL 数据库,可通过如下环境变量进行配置。
使用 PostgreSQL 时,仍需持久化保存 /home/node/.n8n
文件夹中的数据。这包括 n8n 用户数据,更重要的是凭据的加密密钥。当使用 n8n 隧道时,该目录还存储 webhook 名称。
如果 n8n 启动时找不到 /home/node/.n8n
目录,会自动创建一个。这种情况下,所有使用不同加密密钥保存的现有凭据将不再可用。
重要提示
虽然在使用 PostgreSQL 时持久化 /home/node/.n8n
目录是最佳实践,但并非绝对必要。您可以通过在启动 Docker 容器时传递 N8N_ENCRYPTION_KEY
环境变量来提供加密密钥。
要使用 PostgreSQL 运行 n8n,请执行以下命令(请将尖括号中的占位符如 <POSTGRES_USER>
替换为实际值):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
您可以在 n8n 托管仓库中找到完整的 PostgreSQL docker-compose
文件。
设置时区#
要定义 n8n 使用的时区,您可以设置 GENERIC_TIMEZONE
环境变量。面向调度的节点(如计划触发器节点)会使用此变量来确定正确的时区。
您可以使用 TZ
环境变量来设置系统时区,这将控制某些脚本和命令(如 date
)返回的时间。
以下示例为两个变量设置相同的时区:
1 2 3 4 5 6 7 8 9 |
|
更新#
要在 Docker Desktop 中更新 n8n,请导航至 Images 选项卡,然后从上下文菜单中选择 Pull 以下载最新的 n8n 镜像:
您也可以使用命令行拉取最新版本或特定版本:
1 2 3 4 5 6 7 8 |
|
拉取更新后的镜像后,停止您的 n8n 容器并重新启动它。您也可以使用命令行操作。将以下命令中的 <container_id>
替换为您在第一条命令中找到的容器 ID:
1 2 3 4 5 6 7 8 9 10 11 |
|
更新 Docker Compose#
如果您使用 Docker Compose 文件运行 n8n,请按照以下步骤更新 n8n:
1 2 3 4 5 6 7 8 9 10 |
|
延伸阅读#
您可以在 Docker 镜像 的 README 文件中找到更多关于 Docker 设置的详细信息。
使用隧道的 n8n#
Danger
仅限本地开发和测试使用。在生产环境中使用不安全。
要让外部服务(如 GitHub)的触发器节点使用 webhook,n8n 必须能从互联网访问。n8n 运行了一个隧道服务,可以将来自 n8n 服务器的请求重定向到您的本地 n8n 实例。
通过以下命令以 --tunnel
参数启动 n8n:
1 2 3 4 5 6 7 8 |
|