n8n 是用来串接口、做自动化的工具。我原本的用法很简单:每天早 9 点把几个 RSS 汇总,推到企业微信。
装完之后发现一个怪事——设的 9 点,实际 17 点才跑。
一开始以为是 cron 写错了,查了半天才发现不是。n8n 容器默认是 UTC 时区,你在界面里选的 9:00,它按 UTC 的 9 点执行,换算成北京时间就是 17 点。
环境
- 系统:OpenCloudOS 8 / Ubuntu 22.04 都行
- 内存:1G 起步,跑多工作流建议 2G
- Docker:20.10+
- 不需要数据库,n8n 自带 SQLite
部署
docker run -d \
--name n8n \
-p 5678:5678 \
-v n8n_data:/home/node/.n8n \
-e TZ="Asia/Shanghai" \
-e GENERIC_TIMEZONE="Asia/Shanghai" \
-e N8N_DEFAULT_LOCALE="zh-CN" \
--restart=always \
n8nio/n8n
四个环境变量说明:
| 变量 | 作用 | 缺了会怎样 |
|---|---|---|
| TZ | 容器系统时区 | 日志时间全是 UTC |
| GENERIC_TIMEZONE | n8n 内部调度时区 | 定时任务错 8 小时 |
| N8N_DEFAULT_LOCALE | 界面语言 | 默认英文 |
最容易漏的是第二个。 很多人只加了 TZ,以为改完了,结果任务照错不误——因为 n8n 有自己的时区配置,和容器的 TZ 是两套。
我第一次部署就踩了这个坑。
反代后 Webhook 地址不对
用宝塔加了域名反向代理,结果 Webhook 节点显示的地址是:
http://localhost:5678/webhook/xxxx
这个地址外部根本访问不了。需要在环境变量里指定外部地址:
-e WEBHOOK_URL="https://n8n.yourdomain.com/"
结尾的斜杠不能少。 少了会拼出 https://n8n.yourdomain.comwebhook/xxx。
宝塔反代配置
n8n 有 WebSocket 连接,反代要带升级头:
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_read_timeout 300s;
}
proxy_read_timeout 300s 也要加。默认 60 秒,工作流跑久一点就会断,报 502。
验证时区是否生效
部署后进 n8n,新建工作流:
- 加一个 Schedule Trigger 节点
- 设成「3 分钟后执行」
- 保存并激活
- 等 3 分钟看日志时间戳
日志是北京时间就对了;比北京时间早 8 小时,说明 GENERIC_TIMEZONE 没生效。
内存不够会崩
n8n 默认把二进制数据放内存。机器只有 1G 的话,跑几个带文件的工作流就会 OOM。
加这个变量改成存磁盘:
-e N8N_DEFAULT_BINARY_DATA_MODE=filesystem
一个建议
第一次部署先用 IP 加端口跑通,别急着配域名。 时区、Webhook、反代三个问题同时出现时很难排查。
1、本站所有资源均收集于互联网,分享目的仅限学习与参考。如有侵权,请联系 1685698671@qq.com 及时删除!
2、本站资源不保证完整性和安全性,下载后请自行检测。使用过程中出现的任何问题均与本站无关,敬请自行处理。
3、本站资源仅限个人学习研究使用,严禁用于任何违法违纪用途。因使用者违规使用产生的一切后果,由使用者自行承担,本站不承担任何责任。



评论(0)