本站包含联盟链接——如果你通过链接注册,我们可能获得佣金。 Affiliate links.

在 DigitalOcean 上自托管 n8n 2026 — 完整的自动化指南

在 DigitalOcean 上自托管 n8n 2026 — 完整的自动化指南

n8n 是一个开源的工作流自动化工具,在寻求 Zapier 或 Make 替代品而不需支付按任务计费的泰国开发者中获得日益普及。本指南通过 Docker Compose 在 DigitalOcean Droplet 上部署 n8n,从选择服务器规格、配置您的域名和 SSL,到安全地备份工作流——包含可立即使用的实际命令。

什么是 n8n?它能替代 Zapier 吗?

n8n 是一个基于节点的工作流自动化工具,根据公平许可证发布。它以最少的编码连接应用程序。与 Zapier 或 Make 相比,n8n 的突出特点是支持在您自己的服务器上自托管,消除了 SaaS 平台按任务收费的工作流数量或每月执行限制。n8n Cloud 还为那些不希望管理基础设施的人提供托管 SaaS 版本。 在功能方面,n8n 集成了 400 多项服务,包括 Google Workspace、Slack、Line Notify、Telegram、数据库和通用 REST API。它还包括用于 JavaScript/Python 编写的节点,当现成的集成不足时。与 Zapier 的关键区别是 n8n 提供对数据流的更精细控制——循环、复杂的条件语句、自定义错误处理——使其非常适合具有复杂工作流或高执行量的团队。 n8n 能替代 Zapier 吗?在许多情况下,是的——尤其是对于高执行工作负载,在 Zapier 上会产生昂贵的每月任务费用。自托管的 n8n 有固定的服务器成本,与运行频率无关,而 Zapier 按任务收费。权衡是您的团队必须自己处理服务器维护、更新和安全补丁,不像 SaaS 供应商那样管理一切。对于熟悉 Docker 和 Linux 的开发者来说,在 DigitalOcean Droplet 上自托管提供了引人注目的长期价值。

使用 Docker Compose 部署 n8n

在安装 n8n 之前,选择与您的工作负载匹配的 Droplet 大小。对于测试或个人使用,基本共享 CPU 计划(1 GiB RAM/1 vCPU/25 GB SSD,每月 $6)是可行的。但是,对于运行 n8n 及 PostgreSQL 或多个并发工作流的生产使用,建议使用 2 GiB RAM/1 vCPU/50 GB SSD 计划(每月 $12)以防止内存耗尽和容器崩溃。 创建您的 Droplet 并 SSH 进入后,使用官方脚本安装 Docker:curl -fsSL https://get.docker.com | sh 然后验证 Docker Compose 插件是否包含:docker compose version 接下来,创建一个 docker-compose.yml 文件来配置 n8n 服务: version: "3.8" services: n8n: image: n8nio/n8n:latest restart: unless-stopped ports: - "5678:5678" environment: - N8N_HOST=n8n.yourdomain.com - N8N_PROTOCOL=https - N8N_PORT=5678 - WEBHOOK_URL=https://n8n.yourdomain.com/ - GENERIC_TIMEZONE=Asia/Bangkok - N8N_ENCRYPTION_KEY=changeme-to-random-string volumes: - n8n_data:/home/node/.n8n volumes: n8n_data: 然后在后台启动容器:docker compose up -d 使用 docker compose ps 检查状态,使用 docker compose logs -f n8n 查看日志。一旦容器正常运行,n8n 在端口 5678 上监听。接下来是域名和 SSL 配置以保护 webhook 和 web 访问。启用 DigitalOcean 的 Cloud Firewall(无额外成本)以仅限制开放端口为 22、80 和 443。

配置域名和 SSL

在您的 Droplet 上运行 n8n 后,创建一个 DNS A 记录,将诸如 n8n.yourdomain.com 的子域指向您的 Droplet IP。然后安装 Nginx 作为反向代理以接受端口 80/443 上的流量并将其转发到本地端口 5678 上的 n8n。这是一个示例 Nginx 站点配置: server { listen 80; server_name n8n.yourdomain.com; location / { proxy_pass http://localhost:5678; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } 验证 Nginx 工作后,使用 Certbot 从 Let's Encrypt 请求免费 SSL 证书:certbot --nginx -d n8n.yourdomain.com Certbot 自动更新您的配置为 HTTPS 并设置 HTTP 到 HTTPS 重定向。证书每 90 天过期,因此需要设置自动更新——Certbot 在当前版本中默认安装一个 systemd 计时器。使用 certbot renew --dry-run 验证 常见的陷阱:您的 docker-compose.yml 环境变量必须与您的实际域名匹配。具体来说,N8N_HOSTN8N_PROTOCOL=httpsWEBHOOK_URL 必须与您的域名和 SSL 设置一致,否则 webhook 节点将生成不正确的 URL,外部触发器会失败。编辑 docker-compose.yml 后,再次运行 docker compose up -d 以使更改生效。此外,DigitalOcean 的 Cloud Firewall 和 VPC 私有网络是免费的,并在无额外成本的情况下增强网络安全。

基本的自动化工作流示例

一旦您的系统就绪,一个很好的开始示例是捕获表单提交并发送自动警报的工作流。基本结构有三种节点类型:触发器、逻辑和动作。首先添加一个 Webhook 节点,它为外部系统(如网络表单)生成唯一的 URL,以便在提交时立即将数据发送到 n8n。 接下来,添加一个 IF 节点以定义条件——例如,验证传入数据包括所需字段,如电子邮件。如果条件通过,将其链接到 HTTP Request 节点以调用外部 API,例如通过 Line Notify 或 Telegram Bot API 发送警报,或使用现成的 Google Sheets 节点自动记录数据。您可以插入 Set 节点以在其间转换数据——例如,连接名字和姓氏,或为目标系统格式化日期。 另一个常见的模式是用于基于时间的任务的 Schedule Trigger——每天早晨获取 API 数据,然后总结给 Slack 或电子邮件。使用 Schedule Trigger 节点定义 cron 表达式,例如每天在曼谷时间 08:00 运行。确保在 docker-compose.yml 中设置 GENERIC_TIMEZONE=Asia/Bangkok 以匹配,否则时间表将在错误的时间运行。一旦您的工作流构建完成,单击激活以在后台开始运行,无需保持 n8n 的 UI 打开。

要点总结: Webhook 节点为外部系统生成唯一的 URL 以实时 POST 数据到 n8n

备份工作流数据

n8n 在容器内的 /home/node/.n8n 文件夹中存储工作流、凭据和执行历史。根据上面的示例 docker-compose.yml,此路径作为名为 n8n_data 的卷装载。如果使用 SQLite(默认值),所有数据库文件都存在于此单个卷中,提供多个备份策略,具体取决于重要性。 首先,最简单的方法:让 DigitalOcean 以每月每 GiB 0.06 美元的价格对您的整个 Droplet 进行快照。这适合于您的服务器发生故障时的完整系统恢复,但不适合选择性的工作流恢复。其次,使用 DigitalOcean Volumes 以每月每 GiB 0.10 美元的价格将备份与 Droplet 的主磁盘分开存储,然后设置一个 cron 作业运行 rsync 或 tar 以定期将 .n8n 文件夹复制到该卷中。 第三,为生产环境推荐:使用 n8n 的 CLI 直接导出工作流和凭据。运行 docker compose exec n8n n8n export:workflow --all --output=/home/node/.n8n/backup.jsonn8n export:credentials --all --output=/home/node/.n8n/credentials.json 这些 JSON 文件可以通过 n8n import:workflow --input=backup.json 重新导入,允许轻松迁移到新服务器。将这些备份文件存储在服务器外——DigitalOcean Spaces(S3 兼容对象存储,起价每月 5 美元)确保即使您的主 Droplet 发生故障也可以恢复工作流。

何时使用此功能(真实用例)

在 DigitalOcean 上自托管 n8n 适合许多实际场景。首先,具有高工作流执行量的团队,其中 Zapier 等 SaaS 平台因按任务计费而变得昂贵。自托管的 n8n 具有固定的每月 Droplet 成本,与执行数量无关。其次,需要数据驻留合规的组织——将客户数据保留在受控基础设施上。第三,需要为缺乏公共 API 或现成连接器的内部系统进行自定义集成的开发团队。n8n 允许您编写自定义节点或使用带有 JavaScript 的 Function 节点来自由连接。 已经在 DigitalOcean 上运行系统的团队受益于通过免费的 VPC 私有网络连接,这比公共互联网更快、更安全,零额外成本。但是,自托管并不适合所有人。如果您的团队缺乏 Linux/Docker 专业知识,更喜欢最小的正常运行时间风险,或者希望 Anthropic 处理安全补丁,n8n Cloud 的托管 SaaS 或 DigitalOcean App Platform 可能更合适。App Platform 的 Shared 层(1 vCPU/1 GiB RAM/100 GB 传输,每月 10 美元)与直接 Droplet 部署相比减少了基础设施管理负担,即使不如 Droplet 上的 Docker Compose 灵活。

常见的错误和故障排除

用户经常问到的一点是:最常见的问题:来自外部系统的 webhook 无法触发。通常 docker-compose.yml 中的 WEBHOOK_URLN8N_HOST 与您的实际域名不匹配。通过验证两个值与您的实际域名相匹配来修复,然后再次运行 docker compose up -d 以应用更改。 第二个问题:容器挂起或频繁重启,通常是由于 Droplet 尺寸太小。当多个工作流并发运行或处理大量数据时,1 GiB RAM 计划不足够。通过升级到 2 GiB RAM 或更高版本来修复,或从 SQLite 切换到 PostgreSQL 以减少磁盘 I/O。 第三个问题:工作流数据在重启后消失。这发生在缺少对 /home/node/.n8n 的卷装载时,将数据仅留在临时容器存储中。验证您的 docker-compose.yml 包括卷装载。第四个:时间表触发器在错误的时间运行——通常是因为未设置 GENERIC_TIMEZONE,所以 n8n 默认为 UTC 而不是曼谷时间。 第五个也是最严重的:从一开始就忘记设置 N8N_ENCRYPTION_KEY 意味着 n8n 会自动生成一个。如果您的容器在没有旧卷的情况下被重新创建,或者您在没有备份此密钥的情况下迁移服务器,加密的凭据将变得无法恢复,您必须重新配置一切。预防:从第一天起将加密密钥定义为固定的随机值,并将副本存储在服务器外的安全位置。

最佳实践

要从第一天起长期保持自托管 n8n 的稳定和安全,请遵循这些最佳实践。将 N8N_ENCRYPTION_KEY 定义为固定的随机值,并将副本安全地存储在服务器外,以防止在需要恢复或迁移时凭据变得无法恢复。 对于具有许多工作流或频繁执行的生产环境,从 SQLite 迁移到 PostgreSQL 以更好地处理并发读写并降低数据库损坏风险。在同一个 docker-compose.yml 中将 PostgreSQL 作为另一个服务运行,或使用 DigitalOcean 托管数据库来卸载数据库管理。 在安全方面:启用 n8n 的内置用户管理来分配每个人的访问控制,而不是共享一个无密码的实例。定期使用 docker compose pull && docker compose up -d 更新您的 n8n 镜像以接收最新的安全补丁。对于网络,使用 DigitalOcean 的免费 Cloud Firewall 来限制开放端口为 22、80 和 443。当其他服务需要连接(数据库、其他 Droplet)时,使用免费的 VPC 私有网络,而不是向公共互联网暴露端口。 最后,设置监控:启用 DigitalOcean 的免费监控以监视 Droplet CPU 和内存,并为每个帐户配置一个免费的正常运行时间检查以验证 n8n 保持响应。如果您计划稍后迁移或故障转移 Droplet,使用保留 IP(只要附加到活跃的 Droplet 即免费),这样即使您移动实例,DNS 和 webhook URL 也永远不需要更改。

  1. 从一开始就将 N8N_ENCRYPTION_KEY 设置为固定值,并将备份存储在服务器外
  2. 对于具有许多工作流的生产部署,从 SQLite 迁移到 PostgreSQL
  3. 启用 n8n 用户管理并通过 docker compose pull 定期更新镜像以获取安全补丁

领取 $200 免费额度 →

常见问题(FAQ)

n8n 自托管真的是免费的吗?涉及哪些成本?
n8n 本身是开源的,根据公平许可证——自托管完全免费,拥有无限的工作流。真实成本是您的 Droplet 月费,从基本测试的每月 6 美元起,或生产推荐规格的每月 12 美元。可选支出包括备份或额外存储(如需要)。
需要的最低 Droplet 规格是什么?
对于测试,基本计划,1 GiB RAM/1 vCPU/25 GB SSD,每月 6 美元。对于具有并发工作流或 PostgreSQL 的生产环境,升级到 2 GiB RAM/1 vCPU/50 GB SSD,每月 12 美元或更高以确保稳定性。
n8n 与 Zapier 或 Make 有什么不同?
主要区别是价格和控制。n8n 自托管的月成本固定,与执行数量无关,而 Zapier/Make 按任务计费。自托管的 n8n 还给您完全的数据和环境控制,但您需要自己处理服务器维护。
工作流数据应该多久备份一次,应该存储在哪里?
使用 n8n CLI 命令设置工作流和凭据的每日 cron 导出为 JSON 文件,结合定期的 Droplet 快照。将备份文件上传到服务器外——DigitalOcean Spaces 是针对完整服务器故障的离线保护的理想选择。
我可以使用 DigitalOcean Marketplace 的 1-Click App 来安装 n8n 吗?
DigitalOcean Marketplace 为各种工具提供 1-Click Apps,但使用本指南中所示的 Docker Compose 部署 n8n 可以更好地控制环境变量,如加密密钥和 webhook URL,使其成为生产使用的推荐方法。
如果我不想自己管理服务器,有哪些选择?
两个主要替代方案:使用 n8n Cloud,一个由 n8n 处理所有基础设施的托管 SaaS,或通过 DigitalOcean App Platform(如共享层(1 vCPU/1 GiB RAM/100 GB 传输,每月 10 美元))进行部署,与直接在 Droplet 上运行相比,这降低了操作系统级别的管理。