如何在本地运行 n8n:完整安装指南 (2026)
在您自己的机器上自托管 n8n 自动化平台
开始使用 Hypereal 构建
通过单个 API 访问 Kling、Flux、Sora、Veo 等。免费积分开始,扩展到数百万。
无需信用卡 • 10万+ 开发者 • 企业级服务
如何在本地运行 n8n:2026 全面设置指南
n8n 是一个开源的工作流自动化平台,让你能够通过可视化的节点编辑器连接 API、服务和数据源。你可以将其视为 Zapier 或 Make.com 的自托管替代方案,其核心优势在于你拥有自己的数据,且没有工作流执行次数限制。
在本地运行 n8n 让你拥有完全的控制权、零云端成本,并能连接到本地网络中的服务。本指南涵盖了所有安装方法:Docker(推荐)、npm 以及适用于生产级部署的 Docker Compose。
为什么选择自托管 n8n?
| 特性 | n8n Cloud | n8n 自托管 |
|---|---|---|
| 每月费用 | $24-$299/月 | 免费 |
| 工作流执行次数 | 受套餐限制 | 无限制 |
| 数据隐私 | n8n 服务器 | 你的机器 |
| 自定义节点 | 受限 | 无限制 |
| 网络访问 | 仅限互联网 | 本地 + 互联网 |
| 维护 | 托管 | 你自己 |
| 更新 | 自动 | 手动 |
前提条件
- Docker Desktop(推荐方式)或 Node.js 18+
- 至少 2GB RAM(推荐 4GB)
- 1GB 磁盘空间用于安装 n8n,另需额外空间存储工作流数据
- 现代浏览器(Chrome, Firefox, Edge)
方法 1:Docker(推荐)
Docker 是在本地运行 n8n 最简单且最可靠的方法。
第 1 步:安装 Docker
如果你尚未安装 Docker:
- macOS: 下载 Docker Desktop for Mac
- Windows: 下载 Docker Desktop for Windows
- Linux: 安装 Docker Engine:
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
验证 Docker 是否正在运行:
docker --version
第 2 步:使用 Docker 运行 n8n
使用单条命令启动 n8n:
docker run -d \
--name n8n \
-p 5678:5678 \
-v n8n_data:/home/node/.n8n \
n8nio/n8n
该命令:
- 以分离模式 (
-d) 运行 n8n - 将端口 5678 映射到你的机器
- 创建一个持久化卷
n8n_data,确保工作流在容器重启后依然存在
第 3 步:访问 n8n
打开浏览器并导航至:
http://localhost:5678
系统会提示你创建一个所有者账户。这是你本地实例的管理员账户。
停止与启动
# 停止 n8n
docker stop n8n
# 启动 n8n
docker start n8n
# 查看日志
docker logs n8n
# 移除容器(数据保留在卷中)
docker rm n8n
# 移除数据卷(警告:将删除所有工作流)
docker volume rm n8n_data
方法 2:npm(不使用 Docker)
如果你更倾向于不使用 Docker:
第 1 步:全局安装 n8n
npm install -g n8n
第 2 步:启动 n8n
n8n start
n8n 默认将在 http://localhost:5678 启动。
在后台运行
使用 pm2 等进程管理器:
npm install -g pm2
pm2 start n8n
pm2 save
pm2 startup # 启用开机自启
方法 3:Docker Compose(生产就绪)
针对使用 PostgreSQL(而非 SQLite)和自动重启的更稳健设置:
创建一个 docker-compose.yml 文件:
version: "3.8"
services:
n8n:
image: n8nio/n8n
restart: always
ports:
- "5678:5678"
environment:
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=admin
- N8N_BASIC_AUTH_PASSWORD=your-secure-password
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_DATABASE=n8n
- DB_POSTGRESDB_USER=n8n
- DB_POSTGRESDB_PASSWORD=n8n-db-password
- N8N_ENCRYPTION_KEY=your-encryption-key-here
- GENERIC_TIMEZONE=America/New_York
- TZ=America/New_York
volumes:
- n8n_data:/home/node/.n8n
depends_on:
- postgres
postgres:
image: postgres:16
restart: always
environment:
- POSTGRES_USER=n8n
- POSTGRES_PASSWORD=n8n-db-password
- POSTGRES_DB=n8n
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
n8n_data:
postgres_data:
启动服务栈:
docker compose up -d
核心环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
N8N_PORT |
5678 | n8n 监听的端口 |
N8N_PROTOCOL |
http | 协议 (http 或 https) |
N8N_HOST |
localhost | 主机名 |
N8N_BASIC_AUTH_ACTIVE |
false | 启用基本身份验证 |
N8N_BASIC_AUTH_USER |
- | 基本身份验证用户名 |
N8N_BASIC_AUTH_PASSWORD |
- | 基本身份验证密码 |
N8N_ENCRYPTION_KEY |
自动生成 | 加密凭据的密钥 |
DB_TYPE |
sqlite | 数据库类型 (sqlite 或 postgresdb) |
GENERIC_TIMEZONE |
UTC | 定时触发器的时区 |
N8N_METRICS |
false | 启用 Prometheus 指标 |
EXECUTIONS_DATA_PRUNE |
true | 自动删除旧的执行记录 |
EXECUTIONS_DATA_MAX_AGE |
336 | 保留执行数据的小时数 |
创建你的第一个工作流
n8n 运行后,让我们构建一个简单的工作流:
示例:Webhook 转 Slack 通知
- 在 n8n 控制面板点击 Add workflow
- 点击 + 按钮添加节点
- 添加 Webhook 节点(触发器):
- 将 Method 设置为
POST - 复制 Webhook URL
- 将 Method 设置为
- 添加 Slack 节点:
- 连接你的 Slack 工作区
- 设置频道
- 将 Webhook 正文内容映射到消息
- 将 Webhook 节点连接到 Slack 节点
- 点击 Execute Workflow 进行测试
- 点击 Activate 使其上线
使用 curl 测试:
curl -X POST http://localhost:5678/webhook/your-webhook-id \
-H "Content-Type: application/json" \
-d '{"message": "Hello from n8n!", "priority": "high"}'
示例:定时 API 数据抓取
一个每小时从 API 获取数据并保存到文件的工作流:
- 添加 Schedule Trigger 节点:
- 设置为每 60 分钟运行一次
- 添加 HTTP Request 节点:
- Method: GET
- URL:
https://api.example.com/data - 如果需要,添加身份验证请求头
- 添加 Write Binary File 节点:
- 文件名:
data-{{ $now.format('yyyy-MM-dd-HH') }}.json
- 文件名:
- 连接:Schedule -> HTTP Request -> Write File
- 激活工作流
连接 AI API
n8n 内置了适配热门 AI 服务的节点。以下是连接 OpenAI 的方法:
- 添加 OpenAI 节点
- 创建凭据:
- API Key: 你的 OpenAI API 密钥
- 配置:
- Resource: Chat
- Model: gpt-4o
- Prompt: 你的提示词模板
对于没有内置节点的服务器,使用 HTTP Request 节点:
{
"method": "POST",
"url": "https://api.hypereal.com/v1/generate",
"headers": {
"Authorization": "Bearer your-api-key",
"Content-Type": "application/json"
},
"body": {
"model": "flux",
"prompt": "{{ $json.prompt }}",
"width": 1024,
"height": 1024
}
}
将 n8n 暴露到互联网
为了接收外部服务的 Webhook,你需要暴露本地的 n8n 实例。
选项 1:ngrok(快速简单)
ngrok http 5678
这将为你提供一个类似 https://abc123.ngrok.io 的公共 URL,隧道连接到你的本地 n8n。
选项 2:Cloudflare Tunnel(免费且持久)
cloudflared tunnel --url http://localhost:5678
选项 3:使用 Caddy 进行反向代理
安装 Caddy 并创建一个 Caddyfile:
n8n.yourdomain.com {
reverse_proxy localhost:5678
}
caddy run
备份与恢复
导出所有工作流
# 通过 CLI 导出
docker exec -it n8n n8n export:workflow --all --output=/home/node/.n8n/backups/
# 或从卷中复制
docker cp n8n:/home/node/.n8n/backups/ ./n8n-backups/
导入工作流
docker exec -it n8n n8n import:workflow --input=/home/node/.n8n/backups/
数据库备份 (PostgreSQL)
docker exec postgres pg_dump -U n8n n8n > n8n-backup.sql
性能调优
针对重负载任务,调整以下设置:
# 增加 Node.js 内存
docker run -d \
--name n8n \
-p 5678:5678 \
-e NODE_OPTIONS="--max-old-space-size=4096" \
-e EXECUTIONS_PROCESS=main \
-e N8N_CONCURRENCY_PRODUCTION_LIMIT=20 \
-v n8n_data:/home/node/.n8n \
n8nio/n8n
| 设置 | 默认值 | 推荐值 | 描述 |
|---|---|---|---|
NODE_OPTIONS |
512MB | 2048-4096MB | Node.js 堆内存大小 |
N8N_CONCURRENCY_PRODUCTION_LIMIT |
5 | 10-20 | 最大并发执行数 |
EXECUTIONS_DATA_PRUNE |
true | true | 移除旧的执行数据 |
EXECUTIONS_DATA_MAX_AGE |
336h | 168h | 缩短保留时长 |
故障排除
n8n 无法启动(端口被占用):
# 检查谁在占用 5678 端口
lsof -i :5678
# 使用不同的端口
docker run -p 5679:5678 n8nio/n8n
重启后工作流未保存:
确保你使用了 Docker 卷 (-v n8n_data:/home/node/.n8n)。如果没有配置卷,容器删除时数据会丢失。
无法连接到本地服务:
如果 n8n 在 Docker 中运行且需要连接到宿主机上的服务,请使用 host.docker.internal 代替 localhost:
http://host.docker.internal:3000/api/data
Webhook URL 无法访问: 本地 Webhook URL 仅在你的机器上有效。要接收外部 Webhook,请使用 ngrok、Cloudflare Tunnel 或设置反向代理。
大型工作流的内存问题:
通过 NODE_OPTIONS="--max-old-space-size=4096" 增加 Node.js 堆大小,并减少执行数据的保留。
更新 n8n
Docker
docker pull n8nio/n8n
docker stop n8n
docker rm n8n
docker run -d --name n8n -p 5678:5678 -v n8n_data:/home/node/.n8n n8nio/n8n
npm
npm update -g n8n
结论
在本地运行 n8n 为你提供了一个强大、免费且无执行限制的自动化平台。Docker 让安装变得轻而易举,而结合 PostgreSQL 的 Docker Compose 则提供了生产级的部署方案。无论你是在自动化数据管道、连接 API,还是构建复杂的多步工作流,n8n 都能提供代码级的灵活性与可视化构建器的易用性。
如果你的自动化工作流涉及 AI 媒体生成——如创建图像、生成视频或制作音频——Hypereal AI 提供了简单的 API,你可以通过任何 n8n 的 HTTP Request 节点进行调用。通过按需付费的定价模型和快速的推理速度,实现大规模 AI 媒体生成。
