【n8n教程】:安装n8n,搭建你的自动化平台

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

一、安装前的准备

版本说明

n8n每周都会发布新的小版本更新:

建议初学者使用latest版本以确保稳定性。

二、方法一:使用npm安装(快速上手)

适用场景

适合想要快速体验n8n功能的用户,或者在本地开发环境中使用。

系统要求

安装步骤

1. 使用npx快速体验(无需安装)


    
    
    
  npx n8n

这个命令会自动下载并启动n8n,无需任何安装步骤。执行后,打开浏览器访问 http://localhost:5678 即可开始使用。

2. 全局安装npm方式

如果需要长期使用,可以全局安装:


    
    
    
  npm install n8n -g

安装完成后,使用以下命令启动:


    
    
    
  n8n

3. 安装特定版本


    
    
    
  npm install n8n@1.120.3 -g

使用tunnel功能进行测试

开发和测试时,如果需要接收外部webhook(如GitHub、Stripe等服务的回调),可以使用tunnel功能:


    
    
    
  n8n start --tunnel

⚠️ 注意:tunnel功能仅用于开发和测试,不要在生产环境中使用。

更新n8n

更新到最新版本:


    
    
    
  npm update -g n8n

三、方法二:使用Docker安装(推荐方式)

为什么选择Docker?

Docker是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

命令解析:

启动后,在浏览器中访问 http://localhost:5678 即可使用n8n。

配合PostgreSQL使用

默认情况下,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镜像

方式一:使用Docker Desktop

  1. 1. 导航到"Images"标签
  2. 2. 在n8n镜像上点击"Pull"下载最新版本
  3. 3. 停止并重启容器

方式二:使用命令行


    
    
    
  # 拉取最新镜像
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

四、方法三:使用Docker Compose部署(生产环境推荐)

适用场景

适合需要在服务器上长期运行n8n的场景,支持自动SSL证书、数据持久化和反向代理配置。

部署步骤

1. 创建项目目录


    
    
    
  mkdir n8n-compose
cd
 n8n-compose

2. 创建.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=n8n

3. 创建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 -d

6. 停止服务


    
    
    
  docker compose down

更新Docker Compose部署


    
    
    
  # 拉取最新镜像
docker compose pull

# 停止并删除旧容器

docker compose down

# 使用新镜像启动

docker compose up -d

五、常见问题与故障排查

npm方式常见问题

问题:Windows系统报错"command not found"
解决:确保正确配置Node.js环境变量,参考微软官方指南

Docker方式常见问题

问题:无法访问http://localhost:5678
解决:

  1. 1. 检查防火墙设置
  2. 2. 确认Docker容器正在运行:docker ps
  3. 3. 查看容器日志:docker 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#