Skip to content

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 EngineDocker Compose

最新版本和下一个版本

n8n 几乎每周都会发布一个新的次要版本。此版本仅供生产使用。这是最新版本。您应该将其视为测试版本:它可能不稳定。如需报告问题,请使用论坛

当前:1.102.4当前:1.103.1

启动 n8n

从您的终端运行:

1
2
3
docker volume create n8n_data

docker run -it --rm --name n8n -p 5678:5678 -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n

此命令创建一个卷来存储持久数据,下载所需的 n8n 镜像,并启动容器,并在端口 上公开。为了在容器重启之间保存您的工作,它还会挂载一个 docker 卷,以便将您的数据持久保存在本地。

运行后,您可以通过打开http://localhost:5678来访问 n8n

与 PostgreSQL 一起使用

默认情况下,n8n 使用 SQLite 来保存凭据、过去的执行和工作流。n8n 还支持 PostgreSQL,可使用环境变量进行配置,如下所述。

使用 PostgreSQL 时,持久化文件夹中存储的数据仍然很重要。这包括 n8n 用户数据,更重要的是,凭证的加密密钥。它也是使用n8n 隧道时 webhook 的名称。

如果 n8n 在启动时找不到该目录,它会自动创建一个。在这种情况下,n8n 使用其他加密密钥保存的所有现有凭据将不再有效。

记住

虽然使用 PostgreSQL 持久化目录是推荐的最佳实践,但这并不是明确要求的。你可以在启动 Docker 容器时通过传递环境变量来提供加密密钥。

要将 n8n 与 PostgreSQL 一起使用,请执行以下命令,将占位符(例如,在尖括号内表示)替换为实际值:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
docker volume create n8n_data

docker run -it --rm \
 --name n8n \
 -p 5678:5678 \
 -e DB_TYPE=postgresdb \
 -e DB_POSTGRESDB_DATABASE=<POSTGRES_DATABASE> \
 -e DB_POSTGRESDB_HOST=<POSTGRES_HOST> \
 -e DB_POSTGRESDB_PORT=<POSTGRES_PORT> \
 -e DB_POSTGRESDB_USER=<POSTGRES_USER> \
 -e DB_POSTGRESDB_SCHEMA=<POSTGRES_SCHEMA> \
 -e DB_POSTGRESDB_PASSWORD=<POSTGRES_PASSWORD> \
 -v n8n_data:/home/node/.n8n \
 docker.n8n.io/n8nio/n8n

您可以在n8n 托管存储库中找到PostgreSQL 的完整文件。

设置时区

要定义 n8n 应使用的时区,您可以设置环境变量。面向计划的节点(例如“计划触发器”节点)使用此变量来确定正确的时区。

您可以使用环境变量设置系统时区,它控制某些脚本和命令的返回内容。

此示例为两个变量设置相同的时区:

1
2
3
4
5
6
7
8
9
docker volume create n8n_data

docker run -it --rm \
 --name n8n \
 -p 5678:5678 \
 -e GENERIC_TIMEZONE="Europe/Berlin" \
 -e TZ="Europe/Berlin" \
 -v n8n_data:/home/node/.n8n \
 docker.n8n.io/n8nio/n8n

更新

要更新 n8n,请在 Docker Desktop 中导航到Images选项卡,然后从上下文菜单中选择Pull以下载最新的 n8n 映像:

Docker 桌面

您还可以使用命令行来获取最新版本或特定版本:

1
2
3
4
5
6
7
8
# Pull latest (stable) version
docker pull docker.n8n.io/n8nio/n8n

# Pull specific version
docker pull docker.n8n.io/n8nio/n8n:1.81.0

# Pull next (unstable) version
docker pull docker.n8n.io/n8nio/n8n:next

拉取更新后的镜像后,停止 n8n 容器并重新启动。您也可以使用命令行。将以下命令中的 替换为您在第一个命令中找到的容器 ID:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# Find your container ID
docker ps -a

# Stop the container with the `<container_id>`
docker stop <container_id>

# Remove the container with the `<container_id>`
docker rm <container_id>

# Start the container
docker run --name=<container_name> [options] -d docker.n8n.io/n8nio/n8n

更新 Docker Compose

如果您使用 Docker Compose 文件运行 n8n,请按照以下步骤更新 n8n:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# Navigate to the directory containing your docker compose file
cd </path/to/your/compose/file/directory>

# Pull latest version
docker compose pull

# Stop and remove older version
docker compose down

# Start the container
docker compose up -d

进一步阅读

您可以在Docker 镜像的 README 文件中找到有关 Docker 设置的更多信息。

带隧道的 n8n

危险

将其用于本地开发和测试。在生产环境中使用它并不安全。

要使用 webhook 触发 GitHub 等外部服务的节点,n8n 必须能够通过 Web 访问。n8n 运行隧道服务,可以将来自 n8n 服务器的请求重定向到您的本地 n8n 实例。

通过运行以下命令启动 n8n :

1
2
3
4
5
6
7
8
docker volume create n8n_data

docker run -it --rm \
 --name n8n \
 -p 5678:5678 \
 -v n8n_data:/home/node/.n8n \
 docker.n8n.io/n8nio/n8n \
 start --tunnel

后续步骤Next steps