n8n安装教程:从入门到部署的完整指南
1. 引言
n8n是一款强大的开源工作流自动化工具,它允许用户通过可视化界面连接各种应用和服务,创建自动化工作流。无论是简单的任务自动化还是复杂的业务流程集成,n8n都能胜任。本文将详细介绍n8n在不同环境下的安装方法、配置步骤以及部署最佳实践,帮助您快速搭建属于自己的工作流自动化平台。
2. n8n概述
n8n(“n-eight-n”)是一个可扩展的工作流自动化平台,具有以下特点:
- 可视化工作流设计:通过拖拽方式创建复杂工作流
- 丰富的集成支持:内置200多个节点,连接各种服务和API
- 高度可定制:支持自定义节点和触发器
- 开源免费:基于MIT许可证,可完全自托管
- 事件驱动:支持定时触发、Webhook、API调用等多种触发方式
- 数据转换能力:强大的数据处理和转换功能
3. 系统要求
在安装n8n之前,请确保您的系统满足以下要求:
3.1 硬件要求
- CPU:至少2核(推荐4核以上)
- 内存:至少2GB RAM(推荐4GB以上)
- 存储:至少1GB可用磁盘空间(取决于数据量和工作流复杂度)
3.2 软件要求
- Node.js:版本16.x或更高
- npm:与Node.js兼容的版本
- 数据库(可选):PostgreSQL 10.x或更高(默认使用SQLite)
- Docker(如果使用Docker安装):最新稳定版
4. 安装方法
n8n提供多种安装方式,下面将详细介绍每种方式的安装步骤。
4.1 使用npm安装(适合开发环境)
这是最直接的安装方式,适合开发和测试环境:
1
2
3
4
5
|
# 安装n8n(全局安装)
npm install -g n8n
# 启动n8n
n8n start
|
启动成功后,您可以通过浏览器访问 http://localhost:5678 来使用n8n。
4.2 使用Docker安装(推荐生产环境)
使用Docker是部署n8n最简单且推荐的方式,特别是对于生产环境:
4.2.1 基本Docker安装
1
2
3
4
5
6
7
8
9
|
# 拉取n8n镜像
docker pull n8nio/n8n
# 启动n8n容器
docker run -it --rm \
--name n8n \
-p 5678:5678 \
-v ~/.n8n:/home/node/.n8n \
n8nio/n8n
|
这个命令将启动n8n,并将配置文件和数据持久化到主机的~/.n8n目录。
4.2.2 使用Docker Compose安装
对于更复杂的部署,推荐使用Docker Compose:
- 创建一个
docker-compose.yml文件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
version: '3'
services:
n8n:
image: n8nio/n8n
container_name: n8n
ports:
- "5678:5678"
environment:
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=admin
- N8N_BASIC_AUTH_PASSWORD=your_secure_password # 请更改此密码
- N8N_HOST=${N8N_HOST:-localhost}
- N8N_PORT=5678
- N8N_PROTOCOL=http
- NODE_ENV=production
- WEBHOOK_URL=http://${N8N_HOST:-localhost}:5678/
volumes:
- n8n_data:/home/node/.n8n
volumes:
n8n_data:
external: true # 使用外部卷以确保数据持久化
|
- 创建持久化卷并启动n8n:
1
2
3
4
5
6
7
8
|
# 创建Docker卷
docker volume create n8n_data
# 使用环境变量设置主机名(可选)
export N8N_HOST=your-domain.com
# 启动服务
docker-compose up -d
|
4.3 使用PostgreSQL数据库
对于生产环境,推荐使用PostgreSQL数据库而不是默认的SQLite:
4.3.1 使用Docker Compose配置PostgreSQL
更新您的docker-compose.yml文件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
version: '3'
services:
postgres:
image: postgres:13
container_name: postgres
restart: always
environment:
- POSTGRES_DB=n8n
- POSTGRES_USER=n8n
- POSTGRES_PASSWORD=your_secure_password # 请更改此密码
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ['CMD-SHELL', 'pg_isready -h localhost -U n8n']
interval: 5s
timeout: 5s
retries: 5
n8n:
image: n8nio/n8n
container_name: n8n
restart: always
ports:
- "5678:5678"
environment:
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=admin
- N8N_BASIC_AUTH_PASSWORD=your_secure_password # 请更改此密码
- N8N_HOST=${N8N_HOST:-localhost}
- N8N_PORT=5678
- N8N_PROTOCOL=http
- NODE_ENV=production
- WEBHOOK_URL=http://${N8N_HOST:-localhost}:5678/
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_DATABASE=n8n
- DB_POSTGRESDB_USER=n8n
- DB_POSTGRESDB_PASSWORD=your_secure_password # 与上面PostgreSQL密码相同
volumes:
- n8n_data:/home/node/.n8n
depends_on:
postgres:
condition: service_healthy
volumes:
postgres_data:
n8n_data:
|
启动服务:
4.4 在云服务器上安装
4.4.1 在Ubuntu服务器上安装
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
# 更新系统包
apt update && apt upgrade -y
# 安装Node.js和npm
curl -fsSL https://deb.nodesource.com/setup_16.x | bash -
apt install -y nodejs
# 安装n8n
npm install -g n8n
# 创建n8n用户
adduser --disabled-password --gecos "" n8n
# 创建systemd服务文件
cat > /etc/systemd/system/n8n.service << EOF
[Unit]
Description=n8n workflow automation
Documentation=https://docs.n8n.io/
After=network.target
[Service]
Type=simple
User=n8n
ExecStart=/usr/local/bin/n8n start
Restart=on-failure
Environment="N8N_BASIC_AUTH_ACTIVE=true"
Environment="N8N_BASIC_AUTH_USER=admin"
Environment="N8N_BASIC_AUTH_PASSWORD=your_secure_password"
Environment="WEBHOOK_URL=https://your-domain.com/"
Environment="N8N_PROTOCOL=https"
Environment="N8N_HOST=your-domain.com"
[Install]
WantedBy=multi-user.target
EOF
# 启用并启动服务
systemctl daemon-reload
systemctl enable n8n
systemctl start n8n
|
5. 环境配置
n8n可以通过环境变量进行配置,以下是一些常用的配置选项:
5.1 基本配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
# 基本认证
N8N_BASIC_AUTH_ACTIVE=true
N8N_BASIC_AUTH_USER=admin
N8N_BASIC_AUTH_PASSWORD=secure_password
# 主机和端口配置
N8N_HOST=your-domain.com
N8N_PORT=5678
N8N_PROTOCOL=https
# Webhook URL配置(重要!用于接收外部触发)
WEBHOOK_URL=https://your-domain.com/
# 时区设置
GENERIC_TIMEZONE=Asia/Shanghai
TZ=Asia/Shanghai
|
5.2 数据库配置
1
2
3
4
5
6
7
8
9
10
11
|
# PostgreSQL配置
DB_TYPE=postgresdb
DB_POSTGRESDB_HOST=localhost
DB_POSTGRESDB_PORT=5432
DB_POSTGRESDB_DATABASE=n8n
DB_POSTGRESDB_USER=n8n
DB_POSTGRESDB_PASSWORD=db_password
# SQLite配置(默认)
DB_TYPE=sqlite
DB_SQLITE_DATABASE_PATH=/home/node/.n8n/database.sqlite
|
5.3 高级配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
# 执行模式
EXECUTIONS_MODE=queue
# 队列模式配置
QUEUE_BULL_REDIS_HOST=localhost
QUEUE_BULL_REDIS_PORT=6379
QUEUE_BULL_REDIS_PASSWORD=redis_password
# 并行执行限制
EXECUTIONS_PROCESS=5
EXECUTIONS_TIMEOUT=3600
# 禁用自动更新检查
N8N_DISABLE_UPDATE_CHECK=true
# 加密密钥(重要!请务必设置并安全保存)
N8N_ENCRYPTION_KEY=your_encryption_key
|
6. 安全加固
6.1 使用HTTPS
在生产环境中,强烈建议使用HTTPS:
6.1.1 使用Nginx作为反向代理
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
# 安装Nginx
apt install -y nginx
# 安装Certbot(用于获取免费SSL证书)
apt install -y certbot python3-certbot-nginx
# 创建Nginx配置
cat > /etc/nginx/sites-available/n8n << EOF
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://localhost: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_cache_bypass $http_upgrade;
}
}
EOF
# 启用配置
ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/
# 测试配置并重启Nginx
nginx -t
systemctl restart nginx
# 获取SSL证书
certbot --nginx -d your-domain.com
|
6.2 安全最佳实践
- 设置强密码:使用复杂的管理员密码
- 限制访问IP:通过防火墙规则限制访问
- 定期备份:定期备份n8n配置和数据库
- 及时更新:保持n8n版本最新,修复安全漏洞
- 使用环境变量存储敏感信息:避免硬编码密码等敏感信息
1
2
|
# 使用UFW限制访问IP
ufw allow from 192.168.1.0/24 to any port 5678
|
7. 备份与恢复
7.1 备份
7.1.1 Docker部署的备份
1
2
3
4
5
6
7
8
9
10
11
|
# 停止n8n服务
docker-compose down
# 备份卷数据
docker run --rm -v n8n_data:/source -v $(pwd):/backup alpine tar -czf /backup/n8n_backup.tar.gz -C /source .
# 如果使用PostgreSQL,备份数据库
docker exec -t postgres pg_dumpall -c -U n8n > postgres_backup.sql
# 重启服务
docker-compose up -d
|
7.1.2 直接安装的备份
1
2
3
4
5
6
7
8
|
# 停止n8n服务
systemctl stop n8n
# 备份n8n数据
cp -r /home/n8n/.n8n /backup/n8n_backup/$(date +%Y%m%d)
# 重启服务
systemctl start n8n
|
7.2 恢复
7.2.1 Docker部署的恢复
1
2
3
4
5
6
7
8
9
10
11
|
# 停止服务
docker-compose down
# 恢复卷数据
docker run --rm -v n8n_data:/target -v $(pwd):/backup alpine sh -c "rm -rf /target/* && tar -xzf /backup/n8n_backup.tar.gz -C /target"
# 如果使用PostgreSQL,恢复数据库
docker exec -i postgres psql -U n8n < postgres_backup.sql
# 重启服务
docker-compose up -d
|
8. 常见问题解决
8.1 启动问题
问题:n8n无法启动,报错"Error: listen EADDRINUSE: address already in use :::5678"
解决:端口5678已被占用,更改端口或关闭占用端口的进程
1
2
3
4
5
6
|
# 查找占用端口的进程
lsof -i :5678
# 或更改n8n端口
export N8N_PORT=5679
docker run -p 5679:5679 ...
|
8.2 无法访问Web界面
问题:浏览器无法访问n8n Web界面
解决:
- 检查防火墙设置
- 确认n8n服务是否正常运行
- 验证端口映射是否正确
- 检查反向代理配置
1
2
3
4
5
6
|
# 检查n8n服务状态
systemctl status n8n # 或
docker ps # 对于Docker部署
# 检查防火墙设置
ufw status
|
8.3 数据库连接问题
问题:无法连接到PostgreSQL数据库
解决:
- 确认PostgreSQL服务正在运行
- 检查数据库凭据是否正确
- 验证网络连接
1
2
|
# 测试数据库连接
docker exec -it n8n psql -h postgres -U n8n -d n8n -c "SELECT 1;"
|
9. 进阶使用
9.1 安装自定义节点
n8n支持安装社区开发的自定义节点:
1
2
3
4
5
|
# 在Docker容器中安装自定义节点
docker exec -it n8n npm install n8n-nodes-slack-advanced
# 重启容器以加载新节点
docker restart n8n
|
9.2 使用n8n CLI工具
n8n提供了命令行工具,方便管理工作流:
1
2
3
4
5
6
7
8
9
10
11
|
# 列出所有工作流
n8n workflow:list
# 导出工作流
n8n export:workflow --all --output=workflows.json
# 导入工作流
n8n import:workflow --input=workflows.json
# 执行工作流
n8n execute --workflow=workflowId
|
9.3 设置自动更新
创建一个简单的脚本来自动更新n8n:
1
2
3
4
5
6
7
8
|
#!/bin/bash
# 保存为 update_n8n.sh
docker-compose down
docker pull n8nio/n8n
docker-compose up -d
echo "n8n has been updated and restarted"
|
设置定时任务:
1
2
|
# 每月自动更新
0 0 1 * * /path/to/update_n8n.sh >> /var/log/n8n_update.log 2>&1
|
10. 总结
本文详细介绍了n8n的多种安装方法,包括使用npm、Docker以及在生产环境中的部署配置。无论您是想在开发环境中快速尝试,还是在生产环境中稳定部署,都可以根据本文的指南找到适合的安装方式。
安装n8n只是开始,接下来您可以探索n8n强大的工作流自动化能力,连接各种服务和应用,创建属于自己的自动化工作流。如果您在安装过程中遇到任何问题,请参考官方文档或社区论坛寻求帮助。
祝您使用n8n愉快,享受自动化带来的高效工作体验!