说实话,我第一次用 Zapier 的时候觉得这东西真方便,几个平台之间传数据不用写代码。但用着用着就发现不对劲了 —— 免费版每个月就 100 次任务,稍微多点自动化就用完了。升级到付费版吧,Starter 就要 $29.99/月,团队版更贵。
后来我发现了 n8n,一个开源的工作流自动化工具。功能上和 Zapier、Make 差不多,但最核心的区别是:你可以把它装在自己的 VPS 上,跑多少任务都行,没有次数限制。
这篇文章就手把手教你怎么在 VPS 上部署 n8n,从零开始跑通第一个自动化流程。
先说说 n8n 的几个核心优势:
没有执行次数限制。Zapier 免费版 100 次/月,Starter 版 750 次/月,用完了就得等或者加钱。n8n 装在自己服务器上,想跑多少跑多少。我做了一个自动化,每天凌晨把 Shopify 订单同步到 Google Sheets,每个月几万条记录,零额外成本。
数据在自己手里。Zapier 的数据经过他们的服务器,有些公司对数据合规有要求不敢用。n8n 所有数据都在你的 VPS 上,不经过第三方。
400+ 集成。n8n 支持 400 多个服务,常用的 Slack、Google Sheets、GitHub、Notion、PostgreSQL、Redis 都有。还支持 Webhook,没有原生集成的服务也能通过 API 对接。
对接 AI 模型方便。n8n 内置了 OpenAI、Anthropic、DeepSeek 的节点,可以直接在自动化工作流里调用大模型。
缺点当然也有:
- 需要自己维护。服务器得自己管,出了问题自己排查,不像 Zapier 那样开箱即用。
- 没有现成的应用市场。Zapier 上有用户分享的现成模板,n8n 的工作流要自己搭。
- 起步门槛高一点。得会基本的 Linux 操作和 Docker。
总的来说,如果你是重度自动化用户(每月几千上万次任务),或者对数据隐私有要求,自托管 n8n 是比 Zapier 划算得多的选择。
n8n 本身不重,主要看你要跑什么类型的工作流:
| 使用场景 | 推荐配置 | 预估月费用 |
|---|---|---|
| 轻度使用(几个简单工作流) | 1 核 / 1GB 内存 | $5-10/月 |
| 中度使用(带 Webhook + 定时任务) | 2 核 / 2GB 内存 | $10-20/月 |
| 重度使用(大量 Webhook + AI 集成) | 2 核 / 4GB 内存 | $15-30/月 |
我的建议是直接上 2 核 2GB。n8n 本身只占几百 MB 内存,但 PostgreSQL 和 Redis 也需要内存,而且如果你要跑 AI 相关的工作流(调用 DeepSeek 或 OpenAI),对内存的要求会更高。
系统方面,推荐 Ubuntu 22.04 或 24.04,省心。
SSH 登录到你的 VPS:
ssh root@你的VPS_IP
如果系统还没装 Docker,跑这几行:
# 更新系统
apt update && apt upgrade -y
# 安装 Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
# 验证安装
docker --version
docker compose version
创建一个项目目录:
mkdir -p /opt/n8n && cd /opt/n8n
创建一个 docker-compose.yml 文件:
services:
postgres:
image: postgres:16-alpine
restart: always
environment:
POSTGRES_USER: n8n
POSTGRES_PASSWORD: 改成你自己的密码
POSTGRES_DB: n8n
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U n8n"]
interval: 10s
timeout: 5s
retries: 5
n8n:
image: n8nio/n8n:latest
restart: always
ports:
- "127.0.0.1:5678:5678"
environment:
N8N_HOST: your-domain.com
N8N_PORT: 5678
N8N_PROTOCOL: https
DB_TYPE: postgresdb
DB_POSTGRESDB_HOST: postgres
DB_POSTGRESDB_PORT: 5432
DB_POSTGRESDB_DATABASE: n8n
DB_POSTGRESDB_USER: n8n
DB_POSTGRESDB_PASSWORD: 改成你自己的密码
N8N_ENCRYPTION_KEY: 用下面命令生成的密钥
WEBHOOK_URL: https://your-domain.com
GENERIC_TIMEZONE: Asia/Shanghai
volumes:
- n8n_data:/home/node/.n8n
depends_on:
postgres:
condition: service_healthy
volumes:
postgres_data:
n8n_data:
几个需要注意的地方:
N8N_ENCRYPTION_KEY是关键。丢了的话,数据库里存的凭证就解不开了。用这个命令生成:
# 生成 32 位随机密钥
openssl rand -hex 32
把输出的字符串填到上面 N8N_ENCRYPTION_KEY 的位置。
-
端口绑了
127.0.0.1:5678:5678,意思是 n8n 只监听本地,不直接暴露到公网。后面我们会用 Nginx 反代加 HTTPS。 -
N8N_HOST和WEBHOOK_URL填你的域名,不然 Webhook 触发不了。
启动:
cd /opt/n8n
docker compose up -d
等几十秒,看看日志:
docker compose logs -f n8n
看到 n8n ready on 0.0.0.0:5678, URL: https://your-domain.com 就说明启动成功了。
Caddy 会自动申请和续期 SSL 证书,比 Nginx 省心很多。
# 安装 Caddy
apt install caddy
创建 /etc/caddy/Caddyfile:
your-domain.com {
reverse_proxy 127.0.0.1:5678
}
重启:
systemctl restart caddy
搞定。Caddy 会自动给你申请 Let's Encrypt 证书,不需要手动介入。
server {
listen 80;
server_name your-domain.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name your-domain.com;
ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:5678;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
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;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
proxy_buffering off;
proxy_request_buffering off;
}
}
记得要申请 SSL 证书(用 certbot)。
浏览器访问 https://your-domain.com,第一次会要求你创建一个管理员账号:
- 邮箱
- 密码
- 姓名
登录后,建议先改几个设置(右上角头像 → Settings):
- User Management:如果多人用,开启用户管理
- API:生成一个 API Token,后面调用公告接口用
- External Secrets:如果要用 Vault 等密钥管理工具
我们来做一个最简单的例子:收到 Webhook 请求后,把数据写入 Google Sheets。
- 点击右上角的 + 按钮,新建工作流
- 拖一个 Webhook 节点到画布
- 选 POST 方法
- 路径随便写,比如
webhook-test - 点击 "Listen for test event",拿到 Webhook URL
- 拖一个 Google Sheets 节点
- 先连接 Google 账号(需要 OAuth 授权)
- 选择表格和工作表
- 操作选 Append Row
- 把两个节点连起来
- 点 Execute Workflow 测试
测试的话,用 curl 发一个 POST 请求:
curl -X POST https://your-domain.com/webhook/webhook-test \
-H "Content-Type: application/json" \
-d '{"name": "测试订单", "amount": 99.99}'
如果配置正确,数据就会自动写入 Google Sheets。
生产环境注意:测试通过后,记得把工作流的 Production URL 和 Production Version 启用。Webhook 有两种模式,开发模式和生产模式是分开的。
n8n 从 1.40 版本开始官方支持 DeepSeek 节点。如果你想让工作流有 AI 能力,比如自动回复邮件、总结文章、分类工单,可以直接在工作流里调用 DeepSeek API。
先弄一个 DeepSeek API Key(去 platform.deepseek.com 注册,充值几块钱就行,API 调用很便宜)。
然后在 n8n 里:
- 添加一个 DeepSeek 节点
- 填上你的 API Key
- 选模型(DeepSeek Chat 或 DeepSeek Reasoner)
- 在 Prompt 里写你的指令
举个例子:一个自动回复工单的工作流
Webhook(接收工单) → DeepSeek(生成回复) → Email(发送回复)
每次有人提交表单,Webhook 把工单内容传给 DeepSeek,AI 生成回复,然后自动发邮件给客户。全程不需要人工介入。
这样的工作流在 VPS 上跑,没有 API 调用次数限制(只收 DeepSeek 的 API 费用,几毛钱一万 token),比 Zapier 的 AI 功能划算太多了。
n8n 更新很频繁,基本一个月发好几个版本。更新很简单:
cd /opt/n8n
docker compose pull n8n
docker compose up -d n8n
n8n 的数据存在 PostgreSQL 里,工作流定义存在 n8n_data volume 里。建议定期备份:
# 备份 PostgreSQL
docker exec n8n-postgres-1 pg_dump -U n8n n8n > /backup/n8n-db-$(date +%Y%m%d).sql
# 备份 n8n 配置文件
tar czf /backup/n8n-config-$(date +%Y%m%d).tar.gz /opt/n8n/
我的习惯是写一个 cron 定时任务,每天凌晨备份一次。
n8n 自带了一个健康检查接口:https://your-domain.com/healthz,返回 200 就是正常。可以用 UptimeRobot 或直接写个 cron 脚本监控。
Webhook 收不到请求
检查几个地方:Nginx/Caddy 反代配置是否正确、WEBHOOK_URL 环境变量是否设置、防火墙有没有放行 80/443 端口。还有,n8n 的 Webhook 地址前面要有 /webhook/ 前缀。
N8N_ENCRYPTION_KEY 丢了
那就悲剧了。所有工作流里存的密码、API Key 都解不开了。这个密钥一定要备份,放在密码管理器或者安全的地方。
PostgreSQL 连不上
检查 docker-compose.yml 里的 PostgreSQL 配置,特别是密码和数据库名是否正确。另外要注意 PostgreSQL 启动需要时间,n8n 容器有 depends_on + healthcheck,但有时候第一次启动 PostgreSQL 初始化慢,可能需要手动重启一下 n8n 容器。
内存不够
n8n + PostgreSQL + Redis 一起跑,1GB 内存确实有点紧。如果 VPS 内存不够,可以关掉一些不用的服务,或者直接升级到 2GB 配置。平时也可以用 docker stats 看看资源占用。
在 VPS 上部署 n8n,其实就是跑一个 Docker Compose 的事。但换来的是:
- 无限的自动化执行次数,再也不用数着 Zapier 的配额过日子
- 数据完全在自己手里,不用担心第三方平台泄露
- 可以对接 DeepSeek 等 AI 模型,搭建自己的 AI 自动化工作流
- 一个月几百块的自托管费用,比 Zapier 团队版便宜太多
如果你是那种重度自动化用户,或者正在寻找 Zapier 的开源替代方案,n8n 值得一试。而且 VPS 上跑 n8n 对配置要求不高,便宜的 $5-10/月机器就够了,基本零成本起步。
有什么问题欢迎留言交流。
