在自己的服务器上部署 n8n:域名、工作流与备份
用 Zenavo 的模板部署 n8n,配置 HTTPS、Webhook 地址和时区,跑通第一个工作流,再做好加密密钥保存与数据卷备份。
本文亦提供 English、繁體中文、日本語、Español 和 Bahasa Indonesia。
把表单内容写进表格、定时汇总消息、收到 Webhook 后调用另一个接口——这些重复的自动化流程都可以交给 n8n。自托管没有托管版按执行次数计费的限制,工作流和凭据都留在你自己的服务器上。
这篇文章用 Zenavo 的 n8n 模板,从部署、配置域名和 Webhook,一直走到备份与升级。服务器、Zenavo 平台以及工作流调用的第三方 API 分别计费。
部署 n8n
先在 Zenavo 中连接一台 Linux 服务器,再打开 n8n 模板,选择服务器并部署。
当前模板的配置如下:
| 配置 | 值或用途 |
|---|---|
| 镜像 | n8nio/n8n:latest |
| HTTP 端口 | 5678 |
| 持久化目录 | /home/node/.n8n,默认 SQLite 数据库、工作流和凭据都在这里 |
N8N_ENCRYPTION_KEY |
项目创建时自动生成,用于加密工作流中保存的凭据 |
GENERIC_TIMEZONE |
默认 UTC,下面改成你的时区 |
N8N_DIAGNOSTICS_ENABLED |
false,关闭遥测统计 |
latest 会随上游更新。准备长期使用时,在 n8n 服务 设置 的 来源 中把镜像标签改成你验证过的固定版本(例如 n8nio/n8n:1.82.0),避免重新部署时无意间跨版本升级。
绑定域名,配置 Webhook 和时区
在 n8n 服务的 网络 页为 5678 端口绑定域名,例如 n8n.example.com,在 DNS 添加指向服务器的 A 记录,等待 HTTPS 生效。步骤见域名文档。
然后打开 n8n 服务的 变量 页,补充域名和时区配置:
N8N_HOST=n8n.example.com
N8N_PROTOCOL=https
N8N_EDITOR_BASE_URL=https://n8n.example.com/
WEBHOOK_URL=https://n8n.example.com/
N8N_PROXY_HOPS=1
GENERIC_TIMEZONE=Asia/Shanghai
TZ=Asia/Shanghai
几点说明:
WEBHOOK_URL决定 Webhook 节点生成的公开地址;不设置时,节点会显示容器内部地址http://localhost:5678。N8N_PROXY_HOPS=1对应 Zenavo 网关这一层反向代理。如果你的域名前面还套了 Cloudflare 等 CDN 代理,按实际代理层数调整。GENERIC_TIMEZONE影响定时触发器(Schedule Trigger)的默认时区。
保存后重启服务,打开 https://n8n.example.com 创建管理员账号。以后更换域名时,记得同步修改上面几个地址变量。
跑通第一个工作流和 Webhook
进入编辑器后,先建一个最小工作流确认执行正常:
- 新建工作流,添加 Manual Trigger。
- 添加 Edit Fields (Set) 节点,新增字符串字段
message,值填Hello from n8n。 - 点击 Test workflow,确认右侧输出出现这条消息,然后保存。
接着测试外部请求能否进入 Webhook:
- 添加 Webhook 节点,HTTP Method 选
GET。 - 点击 Listen for test event,在浏览器打开节点显示的 Test URL,确认编辑器立即收到请求数据。
- 正式接入第三方系统(如 GitHub、Stripe、飞书)时,切换到 Production URL,并将工作流右上角的开关设为 Active。Test URL 只在点击监听时临时生效,不能填进正式业务。
保管好 N8N_ENCRYPTION_KEY
n8n 里保存的所有第三方 API Key、数据库密码和 OAuth 令牌,都用 N8N_ENCRYPTION_KEY 加密后存在数据库里。
打开 n8n 服务的 变量 页,把 N8N_ENCRYPTION_KEY 的值复制一份存进你的密码管理器。部署后不要修改它;将来把备份恢复到新项目或新服务器时,也必须填入同一个 N8N_ENCRYPTION_KEY,否则恢复出来的工作流无法解密原有的凭据。
编辑器里的“导出工作流”只会导出节点和连接关系的 JSON,不包含凭据和执行记录,不能代替完整备份。
备份与升级
n8n 的全部数据都在 /home/node/.n8n 数据卷里。在 n8n 服务的 备份与恢复 中备份它:
- 选一个没有关键任务在跑的时间,停止项目(数据卷备份要求项目处于停止状态)。
- 创建数据卷备份,完成后重新启动项目。
- 下载一份备份自行保存,并和
N8N_ENCRYPTION_KEY放在一起。
操作细节见备份与恢复。如果你把备份恢复到新项目做验证,注意已启用的工作流恢复后会继续按定时触发器运行,测试时先关闭触发器或与真实业务隔离。
升级前先读 n8n 的发行说明,先备份数据卷,再去服务 设置 → 来源 修改镜像版本。n8n 升级时可能会迁移数据库结构,一旦升级完成,单纯换回旧镜像不一定能启动,需要用升级前的备份恢复。
常见问题
Webhook 节点里的地址还是显示 localhost:5678?
检查 变量 页是否已添加 WEBHOOK_URL=https://你的域名/,保存后需要重启 n8n 服务才会生效。
第三方平台调用 Webhook 返回 404?
确认用的是 Production URL(路径带 /webhook/ 而不是 /webhook-test/),并且工作流右上角已经打开 Active 开关。
定时任务没有按北京时间触发?
检查变量里的 GENERIC_TIMEZONE 和 TZ 是否设为 Asia/Shanghai,同时看工作流自身的 Settings → Timezone 有没有单独覆盖成别的时区。
需要多大的服务器? 日常轻量工作流占用的内存不大,1 核 2 GB 的服务器即可起步;如果工作流里要在内存中处理大文件、大量 JSON 数组或高并发请求,建议用 2 核 4 GB 以上的服务器。
从 n8n 模板开始:先绑定域名并配好 WEBHOOK_URL 和时区,再把 N8N_ENCRYPTION_KEY 存好、做一次数据卷备份。
这是 coding agent 读到的内容,地址是 https://zenavo.app/zh-CN/blog/self-host-n8n.md。
无法加载 Markdown,请直接打开: https://zenavo.app/zh-CN/blog/self-host-n8n.md