n8n 是那种你一开始只是轻轻用一下、然后悄悄把一半运营都路由过去的工具。到那时,“它跑在别人云上的一个席位、按次执行计费、我的 API 密钥待在他们的服务器上”就开始让人觉得没那么美好了。自托管把这三样都修好——固定成本、无执行上限,你的密钥留在你自己的机器上。用 Docker,这是个十五分钟的活。
它实际需要多大的服务器
先给诚实的数字,好让你不超买也不少买:
- 约 2 GB RAM 是甜点——n8n 加它的 Postgres 数据库加正常工作流在这里都很舒服。
- 1 GB 在你工作流轻时可用,但大一点的运行你会注意到。
- 4 GB 如果你做重度并行执行、或推大负载过去。
n8n 静息时不吃 CPU;它在运行时飙升。一台 2 核机器对多数配置都行。(把规格配到负载的更多内容见配置指南。)
Docker 搭建
在一台全新的 Ubuntu/Debian 机器上,装 Docker:
curl -fsSL https://get.docker.com | sudo sh
建一个文件夹和一个 docker-compose.yml——带持久卷的 n8n 加 Postgres:
services:
n8n:
image: docker.n8n.io/n8nio/n8n
restart: always
ports:
- "127.0.0.1:5678:5678"
environment:
- N8N_HOST=n8n.yourdomain.com
- N8N_PROTOCOL=https
- WEBHOOK_URL=https://n8n.yourdomain.com/
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=db
- DB_POSTGRESDB_PASSWORD=change-me
volumes:
- ./n8n-data:/home/node/.n8n
depends_on: [db]
db:
image: postgres:16
restart: always
environment:
- POSTGRES_PASSWORD=change-me
- POSTGRES_DB=n8n
volumes:
- ./db-data:/var/lib/postgresql/data
sudo docker compose up -d
两点值得指出:那些卷(n8n-data、db-data)就是让你的工作流跨重启和升级存活下来的东西——别跳过它们。还有 n8n 绑在 127.0.0.1 上,而不是 0.0.0.0——它没有直接暴露到公网。这是故意的;下一步安全地处理访问。
访问:HTTPS 还是隧道
- 公网 URL(OAuth 节点和 webhook 需要): 把一个子域名指向服务器,在
127.0.0.1:5678前面跑一个反向代理(Caddy 最省事——自动 HTTPS)。这里适合一个独立IP套餐,因为你掌控端口和 DNS。 - 只给自己用、没有域名: 跳过代理,通过 SSH 隧道访问它——
ssh -L 5678:127.0.0.1:5678 user@server,然后打开localhost:5678。在 NAT VPS 上也没问题。
锁死它、让它保活
n8n 持有你的 API 密钥和凭据,所以机器必须严实:在你放进真实凭据之前,先做安全清单(SSH 密钥、防火墙、禁用密码登录)。compose 文件里的 restart: always 已经意味着 Docker 会在崩溃或重启后把 n8n 拉回来——你的正常运行时间已经搞定。
值得吗?
对量诚实一点。如果你不停地跑自动化,自托管在成本上赢(固定 vs 按次执行),并去掉任何工作流/运行上限。如果你一个月触发几个流,托管席位更省心。但掌控这个论点无论如何都成立:你的工作流、你的数据、你的密钥——在你自己的服务器上,不是租的。 对多数认真用起 n8n 的人来说,那就是决定性因素。
一台 2 GB 的机器、一个 compose 文件、一个域名(或一条隧道),你就在跑自己的自动化中枢了——可用加密货币、无需KYC 付款,几分钟内上线。
开箱即用的配置: 见 面向 n8n 的 VPS——推荐套餐加一分钟的加密部署。
评论
暂无评论。来做第一个吧。