所有托管服务节省 15%

测试技能,享折扣

使用代码: Skills 开始使用
China
Linux

N8N 自动化教程 Ubuntu – 从零到流程

关键词

术语快速定义
🚀 N8N一个可视化的、基于节点的工作流自动化平台,用于连接各种外部服务。
🐳 Docker一个容器化工具,能够实现应用程序的一致、隔离的部署和管理。
🐘 PostgreSQL一个强大的关系型数据库,作为 N8N 的主要持久化数据存储。
🧩 NodeN8N 中的单个功能块(例如数据触发器或 API 操作),执行特定任务。
🔄 Workflow通过将多个节点链接在一起构建的配置自动化流程,用于处理任务序列。
💾 Docker VolumeDocker 中的指定存储机制,用于在容器外部持久保存系统数据。
🔐 Environment Variable安全配置值(保存在 .env 文件中),安全地注入到 Docker 容器中。

为什么自动化很重要

Automation

现代团队不是”运行一个应用”——他们操作一系列 SaaS 工具、内部服务、数据存储和聊天/告警系统。这种复杂性的成本以可预测的方式显现:

  • 手动交接和重复的繁琐工作(在系统之间复制/粘贴)
  • 响应循环缓慢(审批、工单路由、事件通知)
  • 结果不一致(人为错误、遗漏步骤、部分更新)
  • 脆弱的集成(一次性脚本,没有可见性或所有权)

自动化是减少这种摩擦的最高杠杆方式之一。即使是小型工作流——同步数据、验证负载、发布通知、更新记录——也能复合成有意义的成果:更快的周期时间、更少的错误和更一致的运营。重要的是,”自动化”不仅仅是关于减少工作量;它也是关于使流程可观察和可重复

本报告将自动化视为生产基础设施:干净地部署它、控制配置、保持数据持久化,并使用确定性测试工作流验证行为。

N8N 是什么(以及为什么它可以成为你最好的朋友)

N8N

N8N 是一个工作流自动化平台,让你可以使用基于节点的编辑器连接服务。你可以用”节点”(触发器、数据转换、API 调用、数据库操作、通知)构建工作流,然后手动执行、按计划执行或通过 webhook 执行。

N8N 在 Linux 部署环境中特别有用的原因:

  • 可自托管:你可以在自己的基础设施上运行它,以便控制数据和网络。
  • 可扩展的集成:许多内置节点,加上用于任何具有 API 的服务的通用 HTTP 节点。
  • 运维友好:在容器中运行良好,可以使用 Postgres 进行持久化,并支持环境驱动的配置。
  • 适合逐步采用:从简单的工作流开始,然后随着使用增长而加强访问控制(反向代理 + HTTPS)和运维实践。

在本评估中,n8n 被视为你可能实际运行的服务:部署选择和配置的文档编写偏向于清晰性、可重现性和”未来加固”(不过度设计初始设置)。

自托管您自己的 N8N 实例

准备好尝试了吗?设置需要几个技术步骤,但不用担心——按照本指南,您将在短时间内启动并运行您的第一个 N8N 实例。

本教程使用 Ubuntu 22.04,运行在由 AlexHost 提供的 VPS 上。

Docker 设置

有多种方式可以设置 n8n。在本教程中,我们使用 Docker,因为它提供了一种清晰可靠的方法来管理和配置 n8n。

首先,确保您的系统上已安装 docker 和 docker compose。

# Check for docker
docker -v

# Check for docker compose
docker compose

如果返回版本号,说明您已准备好。

如果您尚未安装,请按照此页面的说明进行操作:安装指南。确保选择您正在使用的正确操作系统。

项目结构

正确组织文件对于清晰性和长期可维护性至关重要。按照惯例,Docker 服务通常放在 /opt 目录下。在其中创建了一个 docker_services 文件夹来存储所有服务,包括 N8N。

# Create all the needed folders
sudo mkdir -p /opt/docker_services/n8n

# Navigate to n8n folder
cd /opt/docker_services/n8n

添加 docker compose 文件

为了启动我们的 n8n 实例及其后端数据库,我们将使用 compose.yaml 文件。我们选择 PostgreSQL 而不是默认的 SQLite,因为它为配置和执行日志提供了更强大和生产就绪的数据存储。

使用文本编辑器(如 nano)创建文件:

nano compose.yaml

将以下配置粘贴到文件中:

services:
  n8n:
    image: n8nio/n8n:latest
    restart: always
    ports:
      - "5678:5678"
    env_file:
      - .env
    volumes:
      - ./data:/home/node/.n8n
      - ./files:/files
    depends_on:
      - postgres

  postgres:
    image: postgres:15
    restart: always
    env_file:
      - .env
    volumes:
      - ./postgres-data:/var/lib/postgresql/data

理解配置:

组件描述
服务运行两个容器:n8n(主应用)和 postgres:15。强烈建议使用 Postgres 而不是默认的 SQLite。n8n 本身依赖于它首先启动。
重启策略使用 restart: always,以便容器在系统启动或崩溃时自动重启。
端口暴露端口 5678,以便您可以访问 n8n Web 界面。
环境两个服务都从共享的 .env 文件加载配置,以安全地处理数据库凭据等变量。
将本地主机目录绑定到容器路径以保持数据持久化:
./data → n8n 配置(/home/node/.n8n
./files → 文件存储(/files
./postgres-data → 数据库(/var/lib/postgresql/data

在启动容器之前,您需要显式创建必要的目录,以便它们准备好被映射:

# Use your own path if different
cd /opt/docker_services/n8n

mkdir data files postgres-data

目录所有权和权限

默认情况下,当 Docker 自动为您的卷创建主机目录时(如我们的 datafiles 文件夹),它会将所有权分配给 root 用户。但是,出于安全原因,n8n 容器有意放弃权限并以非 root 用户身份运行(具体来说,UID 1000)。

如果这些文件夹仍由 root 拥有,n8n 将无法保存其配置或数据库文件,导致容器在启动时因”权限被拒绝”错误而崩溃。为了避免这种摩擦,我们在启动服务之前显式将这些目录的所有权授予正确的用户。

# Set ownership of the volume directories to UID/GID 1000
sudo chown -R 1000:1000 data files

添加 .env 文件

Docker 使用 .env 文件将系统配置和机密传递到我们的容器中,而无需将它们硬编码到我们的 compose.yaml 中。

在同一目录中创建文件:

nano .env

粘贴以下配置(确保将 example.com 和数据库密码替换为您自己的安全值):

# n8n Settings
DOMAIN_NAME=example.com
SUBDOMAIN=n8n
GENERIC_TIMEZONE=Europe/Chisinau
N8N_HOST=n8n.example.com
N8N_PROTOCOL=https
WEBHOOK_URL=https://n8n.example.com/
N8N_SECURE_COOKIE=false
NODE_ENV=production


# PostgreSQL
POSTGRES_DB=n8n
POSTGRES_USER=n8n
POSTGRES_PASSWORD=changeme123

理解环境变量:

变量描述
域名和主机定义 DOMAIN_NAMESUBDOMAINN8N_HOST。这些对于将 n8n 应用程序映射到特定 URL(如 n8n.example.com)至关重要,允许通过 DNS 进行外部访问。
时区GENERIC_TIMEZONE 为 Node.js 应用程序进程设置时区,以便调度和日志时间戳对您的地区准确。
协议和 WebhookN8N_PROTOCOLWEBHOOK_URL 配置 n8n 如何与外部世界交互。如果您集成需要回调 URL 的服务,这至关重要。
安全 CookieN8N_SECURE_COOKIE 设置为 false,因为默认情况下我们在本地运行时没有 HTTPS 反向代理。如果您稍后通过外部代理配置 SSL/HTTPS,您可以删除此行,以便它默认为 true。
节点环境NODE_ENV 必须严格设置为 production。这会优化底层 Node.js 服务器的性能而不是调试,无论实际部署阶段如何。
数据库凭据POSTGRES_DBUSERPASSWORD 在初始启动时用于创建 PostgreSQL 数据库并验证后续连接。始终在此处使用强自定义密码。

保存并关闭文件。您现在已拥有运行 Docker Compose 堆栈所需的所有配置。

启动 docker 服务

导航到您的项目目录并在后台启动所有服务。

# Use your own path if different
cd /opt/docker_services/n8n

docker compose up -d

Docker 拉取必要的镜像并启动您的容器。运行后,n8n 将在端口 5678(默认)上可用,或在您配置的域上(如果使用反向代理)。

要确认其正常工作,请检查 n8npostgres 容器是否已列出并正在运行。

docker ps

使用 N8N

一旦服务成功运行,现在是开始探索 N8N 的令人兴奋的时刻!

访问 N8N

可以通过 Web 浏览器访问 N8N。在此本地设置中,它可在以下 URL 访问:http://localhost:5678

首次访问时,会出现一个登录页面,其中包含要填写的常见字段。

Login page

设置许可证密钥

最初,N8N 显示一个窗口,提供免费许可证密钥来解锁付费功能。是的,您没有听错:免费获得付费功能!这是运行自托管 N8N 实例的好处之一。

License key

一旦您在电子邮件中收到许可证密钥,您可以导航到 Settings->Usage and Plan 来激活它。

License key activate

创建第一个工作流

可以直接从主页创建新工作流。请参见下面的图像。

Create wf

对于第一个执行用例,将使用两个节点:

  • Manual Trigger:手动启动工作流。
  • Set Node:定义和处理字段及其值。

Manual Trigger 节点不需要配置,而 Set 节点需要。在我们的案例中,目标是输出一条消息,说明”n8n works”以及事件的时间戳。因此,Set 节点的配置如下图所示。

Set node

一旦两个节点连接并配置完成,我们通过按 Execute workflow 按钮来启动工作流。

Success 1
Success 2

恭喜 👏,您的第一个 N8N 工作流已成功执行!

接下来呢?

这个初始设置只是开始。当你开始连接日常工具以自动化重复任务并减少摩擦时,N8N 的真正力量才会释放出来。例如,你可以创建工作流来自动将网站上的新潜在客户同步到 CRM、将紧急警报和关键服务错误路由到团队聊天,或定期将来自各种 SaaS 平台的数据备份到你的数据库。自动化你的操作和简化日常工作量的可能性几乎是无限的。

结论

通过完成本指南,您已成功部署了一个强大的自托管平台,能够改变您管理日常运营的方式。感谢您跟随本设置指南!当您继续探索 N8N 的功能时,请务必查看我们的其他教程,以发现更多令人惊叹和有用的工具。当您准备好扩展或开始新的令人兴奋的项目时,请记住 AlexHost 提供了托管您的服务所需的所有强大基础设施。