让我们在 EC2 实例上部署 n8n 🚀🚀🚀

发布: (2025年12月10日 GMT+8 21:05)
7 min read
原文: Dev.to

Source: Dev.to

我真的很喜欢自动化

我一直热衷于在工作流中实现自动化。当我偶然发现 n8n 时,真的惊叹不已。之前的各种想法——比如更新 Google 表格、发布社交媒体、托管自己的 API、将 Google Drive 同步到 S3 桶等等——在不需要为每个任务学习新框架或库的情况下变得可行。n8n 让构建能够真正投入使用、帮助日常工作的“小自动化”变得更容易,这也是我爱上它的原因。

下面是一份在 AWS EC2 实例上部署 n8n 的分步指南,帮助你在自己的基础设施上运行自动化。

1. 创建 EC2 实例

  1. 登录 AWS 管理控制台,进入 EC2 Dashboard

  2. 点击 Launch instance

  3. Name – 为实例起一个易于辨识的名称,例如 n8n

  4. Application and OS Images (AMI) – 选择 Amazon Linux 2023 AMI(符合免费套餐)。

  5. Architecture – 选择 64-bit (ARM),成本更低(Graviton 处理器)。

  6. Instance type – 本教程使用 t4g.medium(2 vCPU,4 GB RAM)。

    为什么选 t4g.medium?

    • 与同类 x86 实例相比,性价比提升约 40%。
    • 对于带有多个 worker 的 n8n 足够。
    • 支持 CPU 积分的突发性能。
    • 成本比 t3.medium 低约 40%。
    • 适合生产环境(不同于 t4g.micro)。
    实例vCPURAM典型用途
    t4g.micro11 GB仅限免费套餐,资源受限
    t4g.medium24 GB小型‑中型部署(推荐)
    t4g.large28 GB高并发工作流
  7. Key pair (login) – 选择已有密钥对或创建新密钥对。SSH 登录需要它。

  8. Network settings – 新建安全组并添加以下入站规则:

    规则端口协议来源用途
    SSH22TCP你的 IP(或仅用于测试的 0.0.0.0/0远程终端访问
    HTTP80TCP0.0.0.0/0Web 流量(重定向到 HTTPS)
    HTTPS443TCP0.0.0.0/0n8n UI 的安全 Web 流量
  9. Storage – 默认的 8 GiB gp3 卷足以满足基础安装。

  10. Advanced details – 滚动到 User data 字段,粘贴下一节的脚本。

  11. 检查概览后点击 Launch instance

2. 用户数据脚本(自动化设置)

将下面的脚本粘贴到 User data 文本框中。它会更新系统、安装 Git、Docker 与 Docker Compose,并配置 Docker 权限。

#!/bin/bash
yum install -y git docker

# Install Docker Compose plugin (system-wide)
mkdir -p /usr/local/lib/docker/cli-plugins
curl -SL "https://github.com/docker/compose/releases/latest/download/docker-compose-linux-$(uname -m)" \
  -o /usr/local/lib/docker/cli-plugins/docker-compose
chmod +x /usr/local/lib/docker/cli-plugins/docker-compose

# Enable and start Docker
systemctl enable docker
systemctl start docker

# Allow ec2-user to run Docker without sudo
usermod -aG docker ec2-user

该脚本会在实例启动时自动执行,省去多步手动操作。

3. 连接到实例

  1. 在 EC2 控制台中选中正在运行的实例,点击 Connect
  2. 选择 EC2 Instance Connect 选项卡,保持默认用户名 ec2-user,点击 Connect
  3. 浏览器会打开基于网页的终端。验证 Docker Compose 是否安装成功:
docker compose --version

如果显示版本号,环境即已准备就绪。

4. 使用预配置仓库部署 n8n

git clone https://github.com/coozgan/hosting-n8n-aws.git
cd hosting-n8n-aws

该仓库提供了一个面向生产的 n8n 部署,包含:

  • n8n workers – 异步工作流执行。
  • Redis – 作业队列与重试处理。
  • PostgreSQL – 持久化存储工作流、执行记录和用户数据。
  • Caddy – 具备自动 SSL/TLS 证书的反向代理。

4.1 配置环境变量

cp .env-example .env
nano .env

在文件中添加(或编辑)以下变量:

# 域名配置
DOMAIN=your-domain.com   # 若没有域名可使用 localhost

# n8n 加密(生成强随机密钥)
N8N_ENCRYPTION_KEY=YOUR_STRONG_KEY

# PostgreSQL 数据库
POSTGRES_PASSWORD=YOUR_POSTGRES_PASSWORD

# 时区
GENERIC_TIMEZONE=America/New_York

可选 – DuckDNS 域名(用于没有自定义域名的测试)

  1. 前往 https://www.duckdns.org 创建子域名。
  2. 将实例的公网 IP(使用 curl ifconfig.me 获取)添加到 DuckDNS 记录。
  3. .env 中将 DOMAIN 设置为该 DuckDNS 子域名。

重要提示: 请妥善保存 N8N_ENCRYPTION_KEYPOSTGRES_PASSWORD。丢失后将无法恢复工作流或数据。

保存并退出(Ctrl+X,随后 Y 再回车)。

4.2 启动整个栈

docker compose up -d

检查所有容器是否在运行:

docker compose ps

实时查看日志,确保一切正常启动:

docker compose logs -f

5. 访问 n8n UI

  • 使用自定义域名: https://your-domain.com
  • 不使用域名(测试): http://

此时应能看到 n8n 登录页面,创建你的第一个用户账号。

恭喜!你已经在 AWS 上成功部署了可用的 n8n 实例。

6. 扩容:添加更多 Worker

若需增加 worker 实例,编辑 docker-compose.yml,添加类似下面的条目:

n8n-worker-2:
  extends: n8n-worker
  container_name: n8n-worker-2
  # 如有需要,可添加额外配置

n8n-worker-3:
  extends: n8n-worker
  container_name: n8n-worker-3
  # 如有需要,可添加额外配置

随后重启栈:

docker compose up -d

7. 性能优化建议

建议描述
调整 Worker 数量先从 2–3 个 worker 开始,使用 docker stats 监控 CPU/内存使用情况。
数据库清理compose 文件已设置 EXECUTIONS_DATA_PRUNE=true(默认保留 7 天历史),如有需要可调 EXECUTIONS_DATA_MAX_AGE
Redis 内存Redis 限制为 512 MB,采用 LRU 驱逐策略。可通过 docker exec redis redis-cli info stats 监控。

8. 安全最佳实践

  • 用户管理 – 确保 N8N_USER_MANAGEMENT_DISABLED=false(默认),为每位团队成员创建独立账号。
  • 限制 SSH 访问 – 将安全组的 SSH 入口仅限于你的 IP 地址。
  • 保管密钥 – 将 N8N_ENCRYPTION_KEYPOSTGRES_PASSWORD 存放在安全的密码管理器或 AWS Secrets Manager 中。

祝自动化愉快!

Back to Blog

相关文章

阅读更多 »

第1283天:尝试与尝试

专业的相当轻松的一天。参加了几场会议,演示了我一直在做的工作,每次都很成功。我回复了一些社区的问题……