目 录CONTENT

文章目录

5个简单步骤教你如何在Docker上自托管n8n

Administrator
2026-01-13 / 0 评论 / 0 点赞 / 0 阅读 / 0 字

📢 转载信息

原文链接:https://www.kdnuggets.com/how-to-self-host-n8n-on-docker-in-5-simple-steps

原文作者:Shittu Olumide


How to Self-Host n8n on Docker in 5 Simple Steps
Image by Author


# 引言

自动化已成为结构良好业务运营的核心优势。世界各地的公司都在自动化重复性任务、整合多个应用程序并构建智能工作流,以节省时间和最大限度地减少人为错误。n8n是一款强大的开源工作流自动化工具,正在彻底改变团队处理自动化的方式,而且它完全可以免费自行托管。


Zapier等昂贵的软件即服务(SaaS)解决方案不同,n8n让您完全控制自己的自动化基础设施。当您将n8n与Docker结合使用时,您将获得一个容器化、可扩展且可移植的自动化平台,可以部署在任何地方——从本地机器到亚马逊网络服务 (AWS)微软 Azure等云提供商的生产服务器。


本教程将指导您完成在Docker上自托管n8n的完整过程,只需五个简单的步骤,并提供详细的解释和代码示例,无论您的技术背景如何。

 

# 了解 n8n

n8n(发音为“n-eight-n”)是一个公平代码许可的工作流自动化平台,它可以将几乎任何带有API的应用程序连接到任何其他应用程序。根据官方n8n文档,n8n可以帮助您使用少量或零代码连接应用程序,使其对技术用户和非技术用户都易于使用。

n8n的特点:

  • 连接到流行服务,如Slack、Google Sheets、Airtable、HubSpot、Salesforce、GitHub以及数千种其他服务
  • 直接在工作流中添加Python代码以实现复杂逻辑
  • 使用拖放界面,使构建自动化直观
  • 内置LangChain支持,用于人工智能(AI)驱动的工作流和智能自动化
  • 可以选择托管在自己的服务器上或使用n8n Cloud
  • 访问具有强大开源功能的免费社区版

使用n8n,您可以自动化以下任务:

  • 在多个工具之间自动同步数据
  • 处理来自外部服务的传入Webhooks
  • 向Slack、电子邮件和其他平台发送通知
  • 从外部API丰富客户数据
  • 使用AI智能体创建智能工作流
  • 以您需要的任何频率运行计划任务(cron jobs)

 

# 了解 Docker

Docker是一个容器化平台,它将您的整个应用程序(包括所有依赖项、库和配置)打包到一个轻量级、可移植的容器中。您可以将Docker容器视为一个自包含的盒子,其中包含n8n运行所需的一切,确保在不同机器和环境中的一致性。

为什么Docker非常适合n8n:
Docker在您的笔记本电脑、专用服务器或云基础设施上运行相同的容器。n8n独立运行,不会影响服务器上的其他应用程序。您只需一个命令即可升级n8n,而无需担心破坏依赖关系。您还可以运行多个n8n实例或工作负载容器来处理复杂的工作流,确保团队中的每个人都运行完全相同的环境。

 

# 步骤 1:安装 Docker 和 Docker Compose

第一步非常重要。在您可以在容器中运行n8n之前,必须在您的机器上安装Docker。在安装之前,了解Docker和Docker Compose之间的区别很重要。Docker是运行容器的核心容器化引擎。Docker Compose是一个用于通过YAML文件编排多个容器并简化配置的工具。

Docker Desktop适用于Windows、macOS和Linux,它同时包含了Docker和Docker Compose,使安装过程直截了当。

 

// 下载 Docker Desktop

→ 适用于 Windows 10/11

  • 访问Docker官方网站
  • 点击“Download for Windows”
  • 选择您的处理器类型:Intel/AMD处理器或Apple Silicon (M1/M2/M3)

→ Windows 安装

  • 双击下载的Docker Desktop Installer.exe文件
  • 将出现一个请求权限的提示;点击“Yes”
  • 点击“Next”并按照提示操作
  • 此过程可能需要几分钟时间
  • 点击“Finish”
  • 重新启动计算机以应用更改

重启后,您应该能在系统托盘中看到Docker鲸鱼图标。

Windows 注意事项:Docker Desktop要求启用Hyper-VWindows Subsystem for Linux 2 (WSL2)。安装程序会自动启用这些功能,但您的计算机必须支持虚拟化。如果您使用的是较旧的Windows 10家庭版,您可能需要升级到Windows 10专业版才能获得Hyper-V支持。

 

// 验证 Docker 安装

无论您的操作系统如何,都可以通过打开终端(或Windows上的命令提示符)并运行以下命令来验证Docker是否正确安装:

docker --version

 

预期输出:

Docker version 28.5.2, build ecc6942

 

同时,验证Docker Compose:

docker compose version

 

预期输出:

Docker Compose version v2.40.3-desktop.1

 

如果您看到版本号,则Docker已正确安装。如果看到“command not found”,则Docker可能不在系统的PATH中。请重启终端或计算机后再试。

 

# 步骤 2:准备 n8n 目录结构

Docker准备就绪后,我们需要在计算机上为n8n创建一个存放位置。此步骤涉及创建文件夹,n8n将在此处存储其数据、配置文件和工作流信息。

Docker容器在隔离的环境中运行。为了能够访问宿主机器上的文件并持久化数据,以免容器重启时工作流丢失,我们需要在计算机上创建容器可以访问的卷挂载目录。可以将其想象成在您的计算机和Docker容器之间创建一个共享文件夹。

 

// 创建 n8n 项目目录

打开终端或命令提示符并运行以下命令:

导航到一个方便的位置;我们将使用用户的主目录:

cd ~

 

创建一个n8n项目目录:

mkdir n8n-docker

 

进入该目录:

cd n8n-docker

 

验证您是否在正确的位置:

pwd

 

这应该会显示您的n8n-docker路径。您的主目录下应该有一个名为n8n-docker的文件夹。这将是所有n8n配置和数据所在的项目的根目录。

 

// 创建数据存储目录

n8n-docker文件夹内,我们需要为数据持久化创建子目录:

创建数据目录结构:

mkdir data mkdir data\workflows

 

验证目录是否已创建:

ls

 

目录结构的目的如下:

  • data/ 是n8n的数据库和配置的主存储位置
  • data/workflows/ 是存储工作流文件的地方
  • data/credentials/ 是存储集成加密凭据的地方

您现在已经创建了主要的n8n-docker项目目录,并设置了具有适当权限的子目录,以确保数据可以持久化访问。

 

# 步骤 3:创建 Docker Compose 配置文件

Docker Compose使用YAML,这是一种人类可读的数据格式。YAML使用缩进(空格)来显示关系,因此缩进必须精确。可以将其视为Python代码,其中缩进级别定义了结构。

 

// 创建 docker-compose.yml 文件

在您的n8n-docker目录中,按照以下步骤创建名为docker-compose.yml的新文件。

创建一个空文件:

New-Item -Path "docker-compose.yml" -ItemType File

 

使用记事本(或您喜欢的文本编辑器)打开它:

notepad docker-compose.yml

 

对于Linux用户,可以使用以下命令创建并打开文件:

nano docker-compose.yml

 

如果您使用的是nano,请粘贴以下内容,然后按Ctrl+X,再按Y,最后按Enter保存。

 

// 添加完整的 Docker Compose 配置

将此内容粘贴到您的docker-compose.yml文件中:

services: n8n: image: n8nio/n8n:latest container_name: n8n restart: always ports: - "5678:5678" environment: - N8N_HOST=0.0.0.0 - N8N_PORT=5678 - NODE_ENV=production - N8N_BASIC_AUTH_ACTIVE=true - N8N_BASIC_AUTH_USER=admin - N8N_BASIC_AUTH_PASSWORD=changeme123 - N8N_ENCRYPTION_KEY=your-secure-encryption-key volumes: - ./data:/home/node/.n8n networks: - n8n-network healthcheck: test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:5678/healthz"] interval: 30s timeout: 10s retries: 3 start_period: 40s networks: n8n-network: driver: bridge

 

让我们分解一下此配置的每个部分:

services: n8n:

 

这声明我们正在定义一个名为“n8n”的服务。这是引用该容器的名称。

image: n8nio/n8n:latest container_name: n8n

 

image指令使用Docker Hub上的官方n8n镜像。:latest标签下载最新可用版本,而container_name将我们运行的容器命名为“n8n”。

重启策略

restart: always

 

这告诉Docker如果n8n崩溃或服务器重启,则自动重启容器。

端口映射

ports: - "5678:5678"

 

这对从浏览器访问n8n至关重要:

  • 左边的数字 (5678): 您的主机计算机上的端口
  • 右边的数字 (5678): 容器内部的端口

这意味着当您在计算机上访问http://localhost:5678时,它将连接到n8n容器内的5678端口。

环境变量

environment: - N8N_HOST=0.0.0.0 - N8N_PORT=5678 - NODE_ENV=production - N8N_BASIC_AUTH_ACTIVE=true - N8N_BASIC_AUTH_USER=admin - N8N_BASIC_AUTH_PASSWORD=changeme123 - N8N_ENCRYPTION_KEY=your-secure-encryption-key

 

环境变量配置n8n的行为:

  • N8N_HOST:n8n监听的网络接口。0.0.0.0表示“监听所有可用接口”。
  • N8N_PORT:n8n在容器内部运行的端口。
  • NODE_ENV:设置为production以进行安全加固和性能优化。
  • N8N_BASIC_AUTH_ACTIVE:启用基本的用户名/密码身份验证。
  • N8N_BASIC_AUTH_USER:访问n8n界面的用户名。
  • N8N_BASIC_AUTH_PASSWORD:访问n8n界面的密码(请更改此项!)。
  • N8N_ENCRYPTION_KEY:用于加密凭据和敏感数据的密钥。

重要的安全说明:请更改N8N_BASIC_AUTH_PASSWORDN8N_ENCRYPTION_KEY为强值!这些是保护您的自动化工作流和集成的凭据。

 

安全值示例:

N8N_BASIC_AUTH_PASSWORD=Pr0t3ctY0urN8n!D0sH3y7k@Secure N8N_ENCRYPTION_KEY=aB3xC9dE2fG4hI7jK5lM8nO1pQ4rS6tU9vW2xY5z$#@!%&

 

卷挂载:

volumes: - ./data:/home/node/.n8n

 

这将在您的计算机和容器之间创建一个桥梁。左侧(./data)是您宿主机上的目录,右侧(/home/node/.n8n)是n8n存储所有数据的容器内部目录。

这为什么重要?
如果容器被删除或更新,您的工作流和数据将保留在计算机的./data文件夹中。

networks: - n8n-network

 

这会将容器放置在一个Docker网络上,如果您将来添加更多服务(如专用数据库),这将很有用。

healthcheck: test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:5678/healthz"] interval: 30s timeout: 10s retries: 3 start_period: 40s

 

这告诉Docker定期检查n8n是否仍在运行。它防止Docker在正常启动期间认为n8n已崩溃。

 

# 步骤 4:创建环境文件

虽然上述Docker Compose文件有效,但为管理敏感信息而使用单独的环境文件是一种最佳实践。在同一n8n-docker目录中,创建一个名为.env的文件。

New-Item -Path ".env" -ItemType File

 

使用记事本或集成开发环境(IDE)打开它:

notepad .env

 

 

// 添加您的配置变量

将此内容粘贴到您的.env文件中:

# n8n Configuration N8N_HOST=0.0.0.0 N8N_PORT=5678 NODE_ENV=production # Authentication N8N_BASIC_AUTH_ACTIVE=true N8N_BASIC_AUTH_USER=admin N8N_BASIC_AUTH_PASSWORD=your_secure_password_here_change_this N8N_ENCRYPTION_KEY=your_encryption_key_here_change_this

 

 

// 更新 Docker Compose 以使用 .env 文件

修改您的docker-compose.yml文件,使其引用.env文件。将environment:部分替换为:

env_file: - .env

 

// .env 文件的优势

使用.env文件有几个好处:敏感数据不会直接存储在编排文件中,并且您可以在不修改主docker-compose.yml文件的情况下更改配置。

如果您使用Git版本控制,切勿将.env文件提交到仓库中。在项目目录中创建一个.gitignore文件:

New-Item -Path ".gitignore" -ItemType File

 

.envdata/添加到此文件中,以确保敏感数据和本地数据库文件被Git忽略。

 

# 步骤 5:启动 n8n 并访问它

打开终端,导航到您的n8n-docker目录,然后运行以下命令以在后台启动n8n:

docker compose up -d

 

-d命令以“分离”模式运行。如果这是您第一次运行,Docker将下载n8n映像,这可能需要几分钟时间。

 

// 监控 n8n 启动

查看日志以了解n8n是否成功启动:

docker compose logs -f n8n

 

 

// 在浏览器中访问 n8n

打开您的Web浏览器并导航到http://localhost:5678。您将看到一个设置屏幕;输入您在.env文件中设置的凭据。登录后,您将看到n8n工作流编辑器。

 

n8n interface
Image by Author

 

n8n界面包含所有可用的节点(Slack、Gmail、HTTP请求、逻辑节点等)、用于构建自动化的工作流区域以及所选节点的配置选项。

要验证您的n8n容器是否运行正常,请运行:

docker ps

 

 

# 管理您的 n8n 容器

n8n现在正在运行,以下是您将定期使用的重要命令:

  • 查看实时日志:实时查看容器内部发生了什么。
    docker compose logs -f n8n

     
    Ctrl+C退出。

  • 停止 n8n:在保留数据的同时优雅地停止容器。
    docker compose down

     

  • 更新 n8n:拉取最新的n8n映像并重启。
    docker compose pull n8n docker compose up -d

     

 

# 构建您的第一个工作流

让我们创建一个简单的工作流,它侦听传入的Webhook请求,提取数据,然后向Slack发送消息。

在n8n界面中:

  • 点击“+”按钮创建一个新工作流
  • 点击“New Workflow”

 

// 添加 Webhook 节点

  • 在左侧边栏搜索“Webhook”
  • 将Webhook节点拖到画布上
  • 在节点设置中,为方法选择POST,并将路径输入为send-slack-message
  • 点击“Save”

 

// 添加 Slack 节点

  • 搜索“Slack”并将节点拖到画布上
  • 将Webhook节点连接到Slack节点
  • 使用您的机器人令牌和目标频道配置Slack节点

 

// 激活工作流

  • 点击“Execute”以测试连接
  • 如果成功,将工作流切换为“Active”
  • 复制Webhook URL以用作触发器

 

# 结论

您现在拥有一个完全功能的、在Docker中运行的n8n自动化平台。您已经学会了如何安装Docker和Docker Compose、为数据持久化创建适当的目录结构,以及配置n8n。您还设置了身份验证和安全性,访问了Web界面,并创建了您的第一个工作流。

这种设置的优点在于其可移植性和可扩展性。只需几个命令,您就可以将n8n移动到不同的服务器或升级到新版本。从这里开始,您的自动化之旅将充满无限可能。
 
 

Shittu Olumide是一位软件工程师和技术作家,热衷于利用尖端技术来构建引人入胜的故事,对细节有着敏锐的洞察力,并擅长简化复杂概念。您也可以在Twitter上找到Shittu。




🚀 想要体验更好更全面的AI调用?

欢迎使用青云聚合API,约为官网价格的十分之一,支持300+全球最新模型,以及全球各种生图生视频模型,无需翻墙高速稳定,文档丰富,小白也可以简单操作。

0

评论区