跳转至

Docker 安装#

n8n 建议在大多数自托管需求中使用 Docker。它提供了一个干净、隔离的环境,避免了操作系统和工具不兼容的问题,并使数据库和环境管理更加简单。

您也可以通过 Docker Compose 在 Docker 中使用 n8n。您可以在 n8n-hosting 存储库 中找到适用于各种架构的 Docker Compose 配置。

自托管知识先决条件

自托管 n8n 需要技术知识,包括:

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

n8n 建议专家用户使用自托管。错误可能导致数据丢失、安全问题和停机。如果您在管理服务器方面经验不足,n8n 建议使用 n8n Cloud

前提条件#

在继续之前,请安装 Docker:

  • Docker Desktop 适用于 Mac、Windows 和 Linux。Docker Desktop 包括 Docker Engine 和 Docker Compose。
  • Docker EngineDocker Compose 也可以作为 Linux 的独立软件包使用。对于没有图形环境的 Linux 机器或不需要 Docker Desktop UI 时使用。

Latest 和 Next 版本

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

当前 latest:1.107.3
当前 next:1.108.0

启动 n8n#

从您的终端运行以下命令,将 <YOUR_TIMEZONE> 占位符替换为您的时区

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

docker run -it --rm \
 --name n8n \
 -p 5678:5678 \
 -e GENERIC_TIMEZONE="<YOUR_TIMEZONE>" \
 -e TZ="<YOUR_TIMEZONE>" \
 -e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true \
 -e N8N_RUNNERS_ENABLED=true \
 -v n8n_data:/home/node/.n8n \
 docker.n8n.io/n8nio/n8n

此命令创建一个用于存储持久数据的卷,下载所需的 n8n 镜像,并使用以下设置启动容器:

  • 在主机上映射并暴露端口 5678
  • 为容器设置时区:
  • 为 n8n 配置文件强制执行安全文件权限。
  • 启用任务运行器,这是在 n8n 中执行任务的推荐方式。
  • n8n_data 卷挂载到 /home/node/.n8n 目录以在容器重启时持久保存您的数据。

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

与 PostgreSQL 一起使用#

默认情况下,n8n 使用 SQLite 来保存凭证、过往执行记录和工作流。n8n 也支持 PostgreSQL,可以使用环境变量进行配置,具体如下所述。

仍建议持久化 .n8n 目录

使用 PostgreSQL 时,n8n 不需要使用 .n8n 目录存储 SQLite 数据库文件。但是,该目录仍包含其他重要数据,如加密密钥、实例日志和源码控制功能资产。虽然您可以解决其中一些要求(例如,通过设置 N8N_ENCRYPTION_KEY 环境变量),但最好继续为该目录映射持久化卷以避免潜在问题。

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

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

docker run -it --rm \
 --name n8n \
 -p 5678:5678 \
 -e GENERIC_TIMEZONE="<YOUR_TIMEZONE>" \
 -e TZ="<YOUR_TIMEZONE>" \
 -e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true \
 -e N8N_RUNNERS_ENABLED=true \
 -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 hosting 存储库中找到用于 PostgreSQL 的完整 docker-compose 文件。

更新#

要更新 n8n,在 Docker Desktop 中,导航到 Images 选项卡,并从上下文菜单中选择 Pull 来下载最新的 n8n 镜像:

Docker Desktop

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

1
2
3
4
5
6
7
8
# 拉取最新(稳定)版本
docker pull docker.n8n.io/n8nio/n8n

# 拉取特定版本
docker pull docker.n8n.io/n8nio/n8n:1.81.0

# 拉取 next(不稳定)版本
docker pull docker.n8n.io/n8nio/n8n:next

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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 查找您的容器 ID
docker ps -a

# 停止具有 `<container_id>` 的容器
docker stop <container_id>

# 删除具有 `<container_id>` 的容器
docker rm <container_id>

# 启动容器
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
# 导航到包含 docker compose 文件的目录
cd </path/to/your/compose/file/directory>

# 拉取最新版本
docker compose pull

# 停止并移除旧版本
docker compose down

# 启动容器
docker compose up -d

使用隧道的 n8n#

Danger

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

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

通过运行以下命令使用 --tunnel 启动 n8n:

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

docker run -it --rm \
 --name n8n \
 -p 5678:5678 \
 -e GENERIC_TIMEZONE="<YOUR_TIMEZONE>" \
 -e TZ="<YOUR_TIMEZONE>" \
 -e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true \
 -e N8N_RUNNERS_ENABLED=true \
 -v n8n_data:/home/node/.n8n \
 docker.n8n.io/n8nio/n8n \
 start --tunnel

后续步骤#

  • Docker 镜像的 README 文件中找到有关 Docker 设置的更多信息。
  • 了解更多关于 配置扩展 n8n 的信息。
  • 或者探索使用 n8n:尝试 快速入门
此页面是否
💬 微信

🚀 与作者交流

关注公众号
n8n实战笔记公众号
n8n实战笔记
📚 教程 💡 案例 🔧 技巧
添加微信
添加作者微信
1对1 专业指导
⚡ 快答 🎯 定制 🚀 支持