Docker 安装#
Docker 提供以下优势:
- 在干净的环境中安装 n8n。
- 更容易为您首选的数据库进行设置。
- 可以避免因不同操作系统导致的问题,因为 Docker 提供一致的系统。
- 可以避免因操作系统和工具差异导致的兼容性问题。
- 使迁移到新主机或环境更加简单。
您也可以使用 Docker Compose 在 Docker 中使用 n8n。您可以在 n8n-hosting 存储库中找到各种架构的 Docker Compose 配置。
自托管知识先决条件
自托管 n8n 需要技术知识,包括:
- 设置和配置服务器和容器
- 管理应用程序资源和扩展
- 保护服务器和应用程序
- 配置 n8n
n8n 建议专业用户进行自托管。错误可能导致数据丢失、安全问题和停机。如果您在管理服务器方面缺乏经验,n8n 建议使用 n8n Cloud。
先决条件#
在继续之前,请安装 Docker Desktop。
Linux 用户
Docker Desktop 适用于 Mac 和 Windows。Linux 用户必须为您的发行版单独安装 Docker Engine 和 Docker Compose。
Latest 和 Next 版本
n8n 每周发布一个新的次要版本。latest
版本用于生产环境。next
是最新的发布版本。您应该将 next
视为测试版:它可能不稳定。要报告问题,请使用论坛。
当前 latest
:1.97.1
当前 next
:1.98.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
目录,它会自动创建一个。在这种情况下,n8n 使用不同加密密钥保存的所有现有凭据将不再工作。
请记住
虽然在使用 PostgreSQL 时持久化 /home/node/.n8n
目录是推荐的最佳实践,但这不是明确要求的。您可以通过在启动 Docker 容器时传递 N8N_ENCRYPTION_KEY
环境变量来提供加密密钥。
要将 n8n 与 PostgreSQL 一起使用,请执行以下命令,将占位符(在尖括号内描述,例如 <POSTGRES_USER>
)替换为您的实际值:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
您可以在 n8n hosting 存储库中找到完整的 PostgreSQL docker-compose
文件。
设置时区#
要定义 n8n 应使用的时区,您可以设置 GENERIC_TIMEZONE
环境变量。面向调度的节点,如 Schedule Trigger 节点使用它来确定正确的时区。
您可以使用 TZ
环境变量设置系统时区,这控制一些脚本和命令(如 date
)返回的内容。
此示例为两个变量设置相同的时区:
1 2 3 4 5 6 7 8 9 |
|
更新#
要更新 n8n,在 Docker Desktop 中,导航到 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 11 |
|
进一步阅读#
您可以在 Docker 镜像的 README 文件中找到有关 Docker 设置的更多信息。
使用隧道的 n8n#
Danger
仅用于本地开发和测试。在生产环境中使用不安全。
要为 GitHub 等外部服务的触发器节点使用 webhook,n8n 必须能够从网络访问。n8n 运行一个隧道服务,可以将请求从 n8n 的服务器重定向到您的本地 n8n 实例。
通过运行以下命令使用 --tunnel
启动 n8n:
1 2 3 4 5 6 7 8 |
|