n8n基础入门

学习n8n工作流自动化的基础知识,从安装部署到创建第一个工作流

Docker快速部署n8n

使用Docker快速部署n8n,适合喜欢容器化部署的用户

Docker快速部署n8n

为什么使用Docker?

  • 环境隔离,避免冲突
  • 快速部署,易于迁移
  • 便于管理,易于扩展

部署步骤

n8n 官方文档 https://docs.n8n.io/hosting/installation/docker/

n8n 版本:2.6.1

使用Docker Compose(推荐)

8n 官方提供了 Docker 直接启动的案例,也提供了编排工具 docker compose 和 k8s 的部署脚本。

本文采用 docker compose 的方式进行快速部署。

n8n 部署脚本地址 → https://github.com/n8n-io/n8n-hosting

本文直接参考 withPostgres的方式进行部署。

即部署 n8n ,并将运行数据存储到 postgres 中。

step1、克隆代码仓库到本地

git clone https://github.com/n8n-io/n8n-hosting.git

step2、查看部署脚本

version: '3.8'
volumes:
  db_storage:
  n8n_storage:
services:
  postgres:
    image: postgres:16
    restart: always
    environment:
      - POSTGRES_USER
      - POSTGRES_PASSWORD
      - POSTGRES_DB
      - POSTGRES_NON_ROOT_USER
      - POSTGRES_NON_ROOT_PASSWORD
    volumes:
      - db_storage:/var/lib/postgresql/data
      - ./init-data.sh:/docker-entrypoint-initdb.d/init-data.sh
    healthcheck:
      test: ['CMD-SHELL', 'pg_isready -h localhost -U ${POSTGRES_USER} -d ${POSTGRES_DB}']
      interval: 5s
      timeout: 5s
      retries: 10
  n8n:
    image: docker.n8n.io/n8nio/n8n
    restart: always
    environment:
      - DB_TYPE=postgresdb
      - DB_POSTGRESDB_HOST=postgres
      - DB_POSTGRESDB_PORT=5432
      - DB_POSTGRESDB_DATABASE=${POSTGRES_DB}
      - DB_POSTGRESDB_USER=${POSTGRES_NON_ROOT_USER}
      - DB_POSTGRESDB_PASSWORD=${POSTGRES_NON_ROOT_PASSWORD}
    ports:
      - 5678:5678
    links:
      - postgres
    volumes:
      - n8n_storage:/home/node/.n8n
    depends_on:
      postgres:
        condition: service_healthy

部署脚本启动了两个服务:postgres 16 服务和 n8n 服务。

启动脚本前,先手动拉取镜像,也可以直接启动时自动拉取脚本,本文先拉取镜像,然后再启动服务。


## 拉取 n8n 最后一个版本镜像
docker pull n8nio/n8n:latest
## 拉取 postgres 16 版本的镜像
docker pull postgres:16

亦或者可以直接使用 docker compose pull 拉取镜像。

step3、部署脚本修改(可选)

修改后的部署脚本如下:


version: '3.8'
services:
  postgres:
    image: postgres:16
    restart: always
    environment:
      - POSTGRES_USER
      - POSTGRES_PASSWORD
      - POSTGRES_DB
      - POSTGRES_NON_ROOT_USER
      - POSTGRES_NON_ROOT_PASSWORD
    volumes:
      - ./data/postgres:/var/lib/postgresql/data
      - ./init-data.sh:/docker-entrypoint-initdb.d/init-data.sh
    healthcheck:
      test: ['CMD-SHELL', 'pg_isready -h localhost -U ${POSTGRES_USER} -d ${POSTGRES_DB}']
      interval: 5s
      timeout: 5s
      retries: 10
  n8n:
    image: n8nio/n8n:1.107.4
    restart: always
    environment:
      - DB_TYPE=postgresdb
      - DB_POSTGRESDB_HOST=postgres
      - DB_POSTGRESDB_PORT=5432
      - DB_POSTGRESDB_DATABASE=${POSTGRES_DB}
      - DB_POSTGRESDB_USER=${POSTGRES_NON_ROOT_USER}
      - DB_POSTGRESDB_PASSWORD=${POSTGRES_NON_ROOT_PASSWORD}
    ports:
      - 5678:5678
    links:
      - postgres
    volumes:
      - ./data/n8n:/home/node/.n8n
    depends_on:
      postgres:
        condition: service_healthy

主要是修改了

1.数据存存储位置,显式决定 postgres 和 n8n 运行数据存储位置,分别是

  • postgres 存储在 ./data/postgres
  • n8n 存储在 ./data/n8n

./data/n8n 需要执行 chmod 777 data/n8n 命令赋予权限,否则会出现 Error: Command "start" not found 报错

2.修改了镜像名称

step4、修改 .env 设置postgres 账号密码

.env 中用来存放postgres 的账号密码。

文件内容如下:


POSTGRES_USER=changeUser
POSTGRES_PASSWORD=changePassword
POSTGRES_DB=n8n
POSTGRES_NON_ROOT_USER=changeUser
POSTGRES_NON_ROOT_PASSWORD=changePassword
# n8n 加密密钥(必需!32字符)
N8N_ENCRYPTION_KEY=1111111111111111111111111111111

step5、docker compose 启动服务

当前所在目录及文件结构


# pwd
/opt/docker/n8n-hosting/docker-compose/withPostgres
# ls -l
data                      ## 用来存放 n8n 和 postgres 的数据
docker-compose.yml        ## 部署脚本
init-data.sh              ## postgres 初始化脚本
README.md

启动服务:


docker compose up -d

03-1.png

step6、访问 n8n 界面

访问 http://ip:5678 ,第一次访问需要进行注册,以及自定义配置,