之前搞自动化运营,一直都是写Python脚本+定时任务轮着跑。说实话,能用是能用,但每次改流程就得改代码、改定时,烦得很。后来我发现 n8n 这个工具——可视化的自动化工作流平台,拖拖拽拽就能串起一整套流程,关键是能自托管,数据全在自己手里。
今天就把我从零搭建 n8n 自托管工作流的完整过程写出来,踩过的坑一个不落。
为什么选n8n而不是Zapier或者Make?
三个原因:
1. 自托管,数据不出服务器
Zapier和Make都是SaaS,你的API Key、业务数据全在人家服务器上。做自动化运营的,很多接口带敏感信息(WordPress后台密码、百度站长Token),我不放心放在第三方。
2. 免费无限制
Zapier免费版每月100次执行,Make也是各种限制。n8n自托管后,执行次数完全不限,跑多少次都行。我现在的几个工作流加起来每天执行上百次,放Zapier上早破产了。
3. 代码节点兜底
可视化拖拽能解决80%的需求,剩下20%直接塞个Code节点写JavaScript,灵活度拉满。
完整搭建步骤
第一步:服务器准备
我用的是腾讯云轻量应用服务器,2核2G就够跑n8n了(如果你也想搞一台,可以用这个链接 👉 https://curl.qcloud.com/7Znu7m7b 新人优惠挺香的)。
系统选的Ubuntu 22.04,先更新一下:
sudo apt update && sudo apt upgrade -y
第二步:装Docker
n8n官方推荐Docker部署,省心:
# 安装Docker
curl -fsSL https://get.docker.com | sh
# 启动并设为开机自启
sudo systemctl start docker
sudo systemctl enable docker
第三步:启动n8n
一条命令搞定:
docker run -d \
--name n8n \
--restart always \
-p 5678:5678 \
-v n8n_data:/home/node/.n8n \
-e GENERIC_TIMEZONE="Asia/Shanghai" \
-e TZ="Asia/Shanghai" \
n8nio/n8n
等个一两分钟,浏览器打开 http://你的服务器IP:5678 就能看到n8n的界面了。
关键参数解释:
--restart always:服务器重启后n8n自动恢复-v n8n_data:/home/node/.n8n:数据持久化,删容器不丢数据GENERIC_TIMEZONE:设时区,不设的话定时任务会差8小时(这个坑我踩了)
第四步:配置Nginx反向代理+HTTPS
直接用IP访问不太行,配个域名+HTTPS:
server {
listen 443 ssl;
server_name n8n.yourdomain.com;
ssl_certificate /etc/letsencrypt/live/n8n.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/n8n.yourdomain.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1: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;
# WebSocket支持(n8n需要)
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
SSL证书用Let’s Encrypt白嫖:
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d n8n.yourdomain.com
第五步:搭建自动化发文工作流
这是我最常用的一个工作流,流程是这样的:
定时触发 → AI生成文章 → 格式化 → 发布到WordPress → 提交百度收录
具体操作:
1. Schedule Trigger节点:设成每天上午9点触发
2. HTTP Request节点:调用AI接口生成文章内容
3. Code节点:把AI返回的内容格式化成WordPress需要的HTML
4. HTTP Request节点:调WordPress REST API发布文章
5. HTTP Request节点:调百度站长API提交链接
每个节点的配置都比较直观,拖出来连线就行。Code节点里写一段JS处理数据转换:
// 格式化文章内容
const rawContent = items[0].json.choices[0].message.content;
const title = rawContent.split('\n')[0].replace(/^#+\s*/, '');
const body = rawContent.split('\n').slice(1).join('\n');
return [{
json: {
title: title,
content: body,
status: 'publish',
categories: [6] // 自动化运营栏目
}
}];
第六步:搭建监控告警工作流
自动化跑起来最怕的就是悄悄挂了没人知道。我加了个监控流程:
1. 每小时检查一次关键工作流的执行状态
2. 如果发现失败,通过企业微信/钉钉发告警
3. 连续失败3次,自动尝试重启工作流
踩过的坑
坑1:时区没设,定时任务全错
第一次部署的时候没设 GENERIC_TIMEZONE,结果定时任务比北京时间晚了8小时。早上9点的任务变成了下午5点才跑。
解决方案:启动Docker时一定加上 -e GENERIC_TIMEZONE="Asia/Shanghai" 和 -e TZ="Asia/Shanghai"。
坑2:Nginx没配WebSocket,界面卡死
n8n前端用WebSocket实时更新执行状态,Nginx默认不转发WebSocket。结果就是:工作流执行完了,界面还在转圈,刷新才出来结果。
解决方案:Nginx配置里加 proxy_set_header Upgrade 和 proxy_set_header Connection "upgrade"(上面配置里已经加了)。
坑3:Docker数据卷没挂载,升级丢配置
有个朋友跟我一样部署,但没挂载数据卷。后来升级n8n版本,docker rm 删了旧容器,所有工作流配置全没了。
解决方案:必须挂载 -v n8n_data:/home/node/.n8n,或者指定本地目录也行。
坑4:Code节点内存溢出
处理大量数据的时候(比如一次性抓几百条RSS),Code节点容易OOM。n8n默认给每个节点的内存有限制。
解决方案:大数据量分批处理,用Split In Batches节点,每批处理50条,避免一次性吃满内存。
实际效果
用了两个月,说说真实感受:
1. 效率提升明显
以前改个自动化流程,要改Python代码→测试→重新部署,至少半小时。现在拖拽改个连线,点一下执行就能测试,5分钟搞定。
2. 出错率降低
可视化流程一眼就能看懂数据怎么流转的,比看几千行Python脚本清晰太多。新人也能看懂,不用专门写文档。
3. 稳定性还行,但不是完美
n8n偶尔会有执行卡住的情况,尤其是网络请求超时的时候。加上了监控告警工作流之后好多了,挂了能第一时间知道。
4. 省钱
SaaS方案一个月至少几十刀,自托管n8n只需要一台服务器。腾讯云轻量服务器一年也就百来块,划算。
下一步打算
- 接入更多AI模型(Claude、Gemini),不同场景用不同模型
- 搭建内容审核工作流,AI写完自动查重+质检
- RSS监控+AI摘要,自动追踪行业动态
自动化运营这事儿,工具是一方面,更重要的是想清楚流程。n8n把”想”和”做”之间的距离缩短了很多——不用写代码就能把想法变成自动化流程,这个价值对我来说很大。
如果你也在搞自动化运营,或者想折腾n8n,有什么问题欢迎评论区聊。觉得有用的话点个关注,后面我会继续分享自动化运营的各种实战经验 👋
💡 本文提到的服务器方案,我用的腾讯云轻量应用服务器,新人入手链接:https://curl.qcloud.com/7Znu7m7b ,2核2G跑n8n完全够用。

