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 Engine 和 Docker 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端口 - 设置容器时区:
TZ环境变量用于设定系统时区,控制date等脚本和命令的返回结果GENERIC_TIMEZONE环境变量 为计划任务触发节点等基于调度的节点设置正确时区
- 强制实施 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 镜像:

您也可以通过命令行拉取最新版本或指定版本:
# 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