n8n是一个功能强大的开源工作流自动化平台,可以帮助你连接各种应用和服务,实现任务自动化。与Zapier等商业工具不同,n8n完全开源且可以自托管,让你完全掌控自己的数据和工作流。

n8n每周都会发布新的小版本更新:
建议初学者使用latest版本以确保稳定性。
适合想要快速体验n8n功能的用户,或者在本地开发环境中使用。
1. 使用npx快速体验(无需安装)
npx n8n这个命令会自动下载并启动n8n,无需任何安装步骤。执行后,打开浏览器访问 http://localhost:5678 即可开始使用。
2. 全局安装npm方式
如果需要长期使用,可以全局安装:
npm install n8n -g安装完成后,使用以下命令启动:
n8n3. 安装特定版本
npm install n8n@1.120.3 -g开发和测试时,如果需要接收外部webhook(如GitHub、Stripe等服务的回调),可以使用tunnel功能:
n8n start --tunnel⚠️ 注意:tunnel功能仅用于开发和测试,不要在生产环境中使用。
更新到最新版本:
npm update -g n8nDocker是n8n官方推荐的自托管方式,具有以下优势:

安装Docker Desktop(包含Docker Engine和Docker Compose):
在终端执行以下命令(将<YOUR_TIMEZONE>替换为你的时区,如Asia/Shanghai):
docker volume create n8n_data
docker run -it --rm \
--name n8n \
-p 5678:5678 \
-e TZ=<YOUR_TIMEZONE> \
-e GENERIC_TIMEZONE=<YOUR_TIMEZONE> \
-e N8N_SECURE_COOKIE=false \
-e N8N_RUNNERS_ENABLED=true \
-v n8n_data:/home/node/.n8n \
docker.n8n.io/n8nio/n8n命令解析:
docker volume create n8n_data:创建持久化存储卷-p 5678:5678:映射端口,使n8n可通过5678端口访问-e TZ:设置系统时区-e GENERIC_TIMEZONE:设置调度节点的时区-v n8n_data:/home/node/.n8n:挂载数据卷,持久化保存数据启动后,在浏览器中访问 http://localhost:5678 即可使用n8n。
默认情况下,n8n使用SQLite数据库。如需使用PostgreSQL以获得更好的性能和扩展性:
docker run -it --rm \
--name n8n \
-p 5678:5678 \
-e DB_TYPE=postgresdb \
-e DB_POSTGRESDB_HOST=<POSTGRES_HOST> \
-e DB_POSTGRESDB_PORT=5432 \
-e DB_POSTGRESDB_DATABASE=<POSTGRES_DATABASE> \
-e DB_POSTGRESDB_USER=<POSTGRES_USER> \
-e DB_POSTGRESDB_PASSWORD=<POSTGRES_PASSWORD> \
-v n8n_data:/home/node/.n8n \
docker.n8n.io/n8nio/n8n方式一:使用Docker Desktop
方式二:使用命令行
# 拉取最新镜像
docker pull docker.n8n.io/n8nio/n8n
# 停止并删除旧容器
docker stop n8n
docker rm n8n
# 使用新镜像启动容器
docker run -it --rm \
--name n8n \
-p 5678:5678 \
-v n8n_data:/home/node/.n8n \
docker.n8n.io/n8nio/n8n适合需要在服务器上长期运行n8n的场景,支持自动SSL证书、数据持久化和反向代理配置。

1. 创建项目目录
mkdir n8n-compose
cd n8n-compose2. 创建.env配置文件
创建.env文件并添加以下内容:
# 数据存储路径
DATA_FOLDER=/root/n8n/
# 时区设置
TIMEZONE=Asia/Shanghai
GENERIC_TIMEZONE=Asia/Shanghai
# 域名配置
DOMAIN_NAME=n8n.example.com
SUBDOMAIN=n8n
# Let's Encrypt邮箱(用于SSL证书)
SSL_EMAIL=user@example.com
# n8n基本配置
N8N_BASIC_AUTH_ACTIVE=true
N8N_BASIC_AUTH_USER=admin
N8N_BASIC_AUTH_PASSWORD=your_secure_password
# PostgreSQL数据库配置(可选)
POSTGRES_USER=n8n
POSTGRES_PASSWORD=your_db_password
POSTGRES_DB=n8n3. 创建local-files目录
mkdir local-files这个目录用于n8n实例和主机系统之间共享文件。
4. 创建docker-compose.yml文件
创建compose.yaml文件:
version: '3.8'
services:
traefik:
image: traefik:v2.10
command:
- "--api.insecure=true"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.web.address=:80"
- "--entrypoints.websecure.address=:443"
- "--certificatesresolvers.mytlschallenge.acme.tlschallenge=true"
- "--certificatesresolvers.mytlschallenge.acme.email=${SSL_EMAIL}"
- "--certificatesresolvers.mytlschallenge.acme.storage=/letsencrypt/acme.json"
ports:
- "80:80"
- "443:443"
volumes:
- traefik_data:/letsencrypt
- /var/run/docker.sock:/var/run/docker.sock:ro
n8n:
image: docker.n8n.io/n8nio/n8n
restart: always
ports:
- "5678:5678"
environment:
- N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME}
- N8N_PORT=5678
- N8N_PROTOCOL=https
- NODE_ENV=production
- WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/
- GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
- TZ=${TIMEZONE}
- N8N_BASIC_AUTH_ACTIVE=${N8N_BASIC_AUTH_ACTIVE}
- N8N_BASIC_AUTH_USER=${N8N_BASIC_AUTH_USER}
- N8N_BASIC_AUTH_PASSWORD=${N8N_BASIC_AUTH_PASSWORD}
labels:
- traefik.enable=true
- traefik.http.routers.n8n.rule=Host(`${SUBDOMAIN}.${DOMAIN_NAME}`)
- traefik.http.routers.n8n.tls=true
- traefik.http.routers.n8n.entrypoints=web,websecure
- traefik.http.routers.n8n.tls.certresolver=mytlschallenge
- traefik.http.middlewares.n8n.headers.SSLRedirect=true
- traefik.http.middlewares.n8n.headers.STSSeconds=315360000
- traefik.http.middlewares.n8n.headers.browserXSSFilter=true
- traefik.http.middlewares.n8n.headers.contentTypeNosniff=true
- traefik.http.middlewares.n8n.headers.forceSTSHeader=true
- traefik.http.middlewares.n8n.headers.SSLHost=${DOMAIN_NAME}
- traefik.http.middlewares.n8n.headers.STSIncludeSubdomains=true
- traefik.http.middlewares.n8n.headers.STSPreload=true
volumes:
- n8n_data:/home/node/.n8n
- ./local-files:/files
volumes:
traefik_data:
n8n_data:5. 启动服务
docker compose up -d6. 停止服务
docker compose down# 拉取最新镜像
docker compose pull
# 停止并删除旧容器
docker compose down
# 使用新镜像启动
docker compose up -d问题:Windows系统报错"command not found"
解决:确保正确配置Node.js环境变量,参考微软官方指南
问题:无法访问http://localhost:5678
解决:
docker psdocker logs n8n问题:Production URL返回404
解决:确保工作流已保存并激活。Production URL只在工作流激活后才可用
无论使用哪种安装方式,都建议定期备份.n8n目录或n8n_data数据卷,该目录包含:
如果升级后遇到问题:
npm方式:
npm install n8n@旧版本号 -g
n8n db:revert # 回滚数据库迁移Docker方式:
docker pull docker.n8n.io/n8nio/n8n:旧版本号
# 然后使用该版本标签重新启动容器本教程介绍了n8n的三种主流安装方式:
根据你的需求选择合适的安装方式:
[1] 官方文档 - npm安装: https://docs.n8n.io/hosting/installation/npm/
[2] 官方文档 - Docker安装: https://docs.n8n.io/hosting/installation/docker/
[3] 官方文档 - Docker Compose配置: https://docs.n8n.io/hosting/installation/server-setups/docker-compose/
[4] 官方文档 - 更新指南: https://docs.n8n.io/hosting/installation/updating/
[5] n8n系列教程: https://www.undsky.com/blog/?category=n8n%E6%95%99%E7%A8%8B#