跳到主要内容

Docker 安装#

对于大多数自托管需求,n8n 推荐使用 Docker。它能提供干净隔离的环境,避免操作系统和工具链的兼容性问题,并简化数据库和环境管理。

您还可以通过 Docker Compose 在 Docker 中使用 n8n。n8n-hosting 代码库 提供了适用于不同架构的 Docker Compose 配置方案。

自托管知识储备

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

  • 服务器与容器的设置配置
  • 应用资源管理与扩展
  • 服务器与应用安全防护
  • n8n 配置部署

n8n 建议仅专业用户进行自托管。操作失误可能导致数据丢失、安全隐患和服务中断。若缺乏服务器管理经验,推荐使用 n8n 云服务

您也可以通过视频指南进行学习:

环境准备#

开始前请先安装 Docker:

  • Docker Desktop 支持 Mac、Windows 和 Linux 系统,包含 Docker 引擎和 Docker Compose
  • Linux 用户可单独安装 Docker EngineDocker Compose,适用于无图形界面环境或不需要 Docker Desktop 界面的场景

版本说明

n8n 每周会发布新的次要版本。latest 为稳定生产版本,next 是最新发布版本。请将 next 视为测试版本,可能存在不稳定因素。问题反馈请至社区论坛

当前 latest 版本:1.119.2
当前 next 版本:1.119.3

启动 n8n#

在终端中运行以下命令,并将 <YOUR_TIMEZONE> 替换为您所在的时区

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 环境变量等方式规避部分需求,但最佳实践仍是持续为目录映射持久化卷以避免潜在问题。

如需搭配 PostgreSQL 使用 n8n,请执行以下命令(需将尖括号内的占位符,例如 <POSTGRES_USER> 替换为实际值):

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 托管仓库 中找到完整的 PostgreSQL docker-compose 文件。

更新#

如需更新 n8n,请在 Docker Desktop 中进入 Images 标签页,从上下文菜单中选择 Pull 以下载最新 n8n 镜像:

Docker Desktop

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

# 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容器并重新启动。您也可以使用命令行操作。将以下命令中的<container_id>替换为第一条命令查到的容器ID:

# 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:

# 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

使用隧道的 n8n#

危险提示

此功能仅适用于本地开发与测试,在生产环境中使用存在安全风险。

若需为 GitHub 等外部服务的触发节点配置网络钩子,n8n 必须能够从公网访问。n8n 运行了一项隧道服务,可将来自 n8n 服务器的请求重定向至您的本地 n8n 实例。

通过以下命令启动带 --tunnel 参数的 n8n:

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

后续步骤#