跳至内容

Docker安装指南#

Docker 提供以下优势:

  • 在全新环境中安装n8n。
  • 更轻松地设置您偏好的数据库。
  • 可以避免由于不同操作系统导致的问题,因为Docker提供了统一的系统环境。
  • 可以避免因操作系统和工具差异导致的兼容性问题。
  • 使迁移到新主机或环境更加简单直接。

你也可以在Docker中使用n8n配合Docker Compose。你可以在n8n-hosting仓库中找到适用于各种架构的Docker Compose配置。

自托管知识先决条件

自托管n8n需要具备以下技术知识:

  • 设置和配置服务器及容器
  • 管理应用程序资源和扩展
  • 保护服务器和应用程序安全
  • 配置n8n

n8n 建议专家用户自行托管。操作失误可能导致数据丢失、安全问题和服务中断。如果您没有服务器管理经验,n8n 推荐使用 n8n Cloud

先决条件#

在继续之前,请先安装 Docker Desktop

Linux用户

Docker Desktop适用于Mac和Windows系统。Linux用户需要根据您的发行版单独安装Docker EngineDocker Compose

最新版本和下一版本

n8n 每周都会发布一个新的次要版本。latest 版本适用于生产环境。next 是最新发布的版本。您应该将 next 视为测试版:它可能不稳定。如需报告问题,请使用 论坛

当前 latest: 1.92.2
当前 next: 1.93.0

启动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镜像,并启动容器,暴露在端口5678上。为了在容器重启时保存您的工作,它还挂载了一个docker卷n8n_data,以便在本地持久化您的数据。

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

与PostgreSQL一起使用#

默认情况下,n8n使用SQLite来保存credentials、历史执行记录和工作流。n8n还支持PostgreSQL,可通过如下环境变量进行配置。

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

如果n8n在启动时找不到/home/node/.n8n目录,它会自动创建一个。这种情况下,n8n之前用不同加密密钥保存的所有现有凭证将不再有效。

请记住

虽然持久化/home/node/.n8n目录与PostgreSQL是推荐的最佳实践,但这并非硬性要求。您可以通过在启动Docker容器时传递N8N_ENCRYPTION_KEY环境变量来提供加密密钥。

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

 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的完整docker-compose文件。

设置时区#

要定义n8n应使用的时区,您可以设置GENERIC_TIMEZONE环境变量。面向调度的节点(如Schedule Trigger节点)会使用此设置来确定正确的时区。

您可以设置系统时区,这将控制某些脚本和date等命令返回的结果,通过使用TZ环境变量来实现。

这个例子为两个变量设置了相同的时区:

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 Desktop

你也可以通过命令行拉取最新版本或指定版本:

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
# 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必须能够从互联网访问。n8n运行着一个隧道服务,可以将来自n8n服务器的请求重定向到您本地的n8n实例。

通过运行以下命令以--tunnel参数启动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

下一步#

优云智算