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 Engine 和 Docker Compose 也可作为 Linux 的单独包使用。对于没有图形环境的 Linux 机器或当您不想要 Docker Desktop UI 时使用此选项。
Stable 和 Beta 版本
n8n 通常每周发布一个新的次要版本。stable 版本用于生产环境。beta 是最新版本。beta 版本可能不稳定。如需报告问题,请使用论坛。
Current stable: 2.12.3
Current beta: 2.13.1
启动 n8n#
从您的终端运行以下命令,将<YOUR_TIMEZONE>占位符替换为您的时区:
1 2 3 4 5 6 7 8 9 10 11 | |
此命令创建一个卷来存储持久数据,下载所需的n8n镜像,并使用以下设置启动容器:
- 映射并暴露主机上的端口
5678。 - 为容器设置时区:
TZ环境变量设置系统时区以控制脚本和命令(如date)返回的内容。GENERIC_TIMEZONE环境变量为面向调度的节点(如Schedule Trigger 调度触发器节点)设置正确的时区。
- 强制执行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 | |
您可以在n8n托管仓库中找到PostgreSQL的完整docker-compose文件。
更新#
要更新n8n,在Docker Desktop中,导航到Images 镜像选项卡,并从上下文菜单中选择Pull 拉取来下载最新的n8n镜像:
您也可以使用命令行来拉取最新版本或特定版本:
1 2 3 4 5 6 7 8 | |
拉取更新的镜像后,停止您的n8n容器并重新启动它。您也可以使用命令行。将下面命令中的<container_id>替换为您在第一个命令中找到的容器ID:
1 2 3 4 5 6 7 8 9 10 11 | |
更新 Docker Compose#
如果您使用 Docker Compose 文件运行 n8n,请按照以下步骤更新 n8n:
1 2 3 4 5 6 7 8 9 10 11 | |
使用隧道的 n8n#
Danger
仅用于本地开发和测试。在生产环境中使用不安全。
开发工具
隧道功能是一个用于本地开发的便利工具。其底层实现可能会在 n8n 版本之间发生变化。
要使用 GitHub 等外部服务的触发器节点的 webhook,n8n 必须可以从网络访问。n8n 使用 cloudflared 提供隧道服务,将网络请求重定向到你本地的 n8n 实例。隧道功能需要安装 Docker。
根据你运行 n8n 的方式,有两种使用隧道的方法:
完整堆栈#
在容器中同时运行 n8n 和 cloudflared。隧道 URL 在启动时打印,所有配置自动完成:
1 | |
仅服务#
如果你更喜欢使用 pnpm dev 或 pnpm start 在本地运行 n8n,可以将 cloudflared 作为独立服务启动:
1 2 3 4 5 | |
services 命令:
- 启动 cloudflared,指向
host.docker.internal:5678(你的本地 n8n)。 - 从 cloudflared 的指标端点获取公共隧道 URL。
- 将包含
WEBHOOK_URL和N8N_PROXY_HOPS=1的.env文件写入packages/cli/bin/.env。 pnpm dev和pnpm start通过 dotenv 自动加载该.env文件。
完成后清理:
1 | |
