Skip to content

N8N二开

下载版本源码

打开版本页面 https://github.com/n8n-io/n8n/releases 下载

同步版本

bash
$ gco github
# 删除除 .git 文件夹外的所有文件
# 复制最新版本代码
# 进入 istr-scripts 项目,执行清理
sh n8n/n8n-delete-single-file.sh 
sh n8n/n8n-delete-folder.sh
sh n8n/n8n-delete-components.sh
sh n8n/n8n-global-clean.sh

虽然做完了,但是还是有问题的,不能直接编译构建

编译构建

创建新版本分支,解决合并冲突

bash
$ gcm
$ gl
$ gco -b lyl_2_9_4
$ git merge github
# 解决冲突

构建

bash
$ pnpm i
$ pnpm build #需要先构建,否则dev运行会报缺少包
$ pnpm start #运行构建产物
$ pnpm dev

中文汉化

https://github.com/deluxebear/n8n

更新 packages/frontend/@n8n/i18n/src/locales/zh.json 这个文件

docker构建

bash
$ docker build -t lite-n8n/base:22 -f docker/images/n8n-base/Dockerfile .

$ pnpm build:n8n

$ docker build -t registry.cn-hangzhou.aliyuncs.com/istr_office/lite-n8n:1.0.1 -f docker/images/n8n/Dockerfile . && \
docker push registry.cn-hangzhou.aliyuncs.com/istr_office/lite-n8n:1.0.1

CAUTION

Dockerfile 中的 msttcorefonts-installer 会从 SourceForge 下载微软字体,这在中国经常连接失败。

修改企业权限

修改配置

OAuth登录

admin@admin.com Admin123

docker部署

需注意时区问题

yaml
services:
  # PostgreSQL 数据库服务
  postgres:
    image: registry.cn-hangzhou.aliyuncs.com/istr_office/postgres:15-alpine
    container_name: n8n-postgres
    restart: unless-stopped
    environment:
      - POSTGRES_DB=n8n
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres
      - TZ=Asia/Shanghai
      - PGDATA=/var/lib/postgresql/data/pgdata
    volumes:
      - ./data/postgres:/var/lib/postgresql/data
    ports:
      - "5432:5432"
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres"]
      interval: 10s
      timeout: 5s
      retries: 5
    networks:
      - n8n-network

  # n8n 工作流自动化服务
  n8n:
    image: registry.cn-hangzhou.aliyuncs.com/istr_office/lite-n8n:1.0.1
    container_name: n8n
    restart: unless-stopped
    ports:
      - "5678:5678"
    depends_on:
      postgres:
        condition: service_healthy
    environment:
      # 时区设置
      - TZ=Asia/Shanghai
      - GENERIC_TIMEZONE=Asia/Shanghai
      # 语言设置
      - N8N_DEFAULT_LOCALE=zh
      # 数据库配置(使用服务名连接)
      - DB_TYPE=postgresdb
      - DB_POSTGRESDB_HOST=postgres
      - DB_POSTGRESDB_PORT=5432
      - DB_POSTGRESDB_DATABASE=n8n
      - DB_POSTGRESDB_USER=postgres
      - DB_POSTGRESDB_PASSWORD=postgres
      - DB_POSTGRESDB_SCHEMA=public
      - DB_POSTGRESDB_SSL_ENABLED=false
      # 启用所有节点(包括 ExecuteCommand 和 LocalFileTrigger)
      - NODES_EXCLUDE=[]
      - N8N_HOST=10.181.20.3
      - N8N_SECURE_COOKIE=false
      # 文件系统访问权限
      - N8N_RESTRICT_FILE_ACCESS_TO=/mnt
      - N8N_FILESYSTEM_ALLOW_LIST=/mnt
      # 日志级别
      - N8N_LOG_LEVEL=info
      # 安全配置:加密密钥(32位随机字符串)
      # 生成命令: openssl rand -hex 16
      - N8N_ENCRYPTION_KEY=a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6
      # 基础认证(推荐启用)
      - N8N_BASIC_AUTH_ACTIVE=true
      - N8N_BASIC_AUTH_USER=admin
      - N8N_BASIC_AUTH_PASSWORD=your_secure_password_here

      # Webhook URL 配置(如果需要外部访问,请修改为实际域名)
      # - WEBHOOK_URL=https://your-domain.com/

      # 执行数据保留设置(可选)
      - EXECUTIONS_DATA_PRUNE=true
      - EXECUTIONS_DATA_MAX_AGE=168

    volumes:
      # 核心数据目录映射(保存工作流、凭证等)
      - ./n8n-data:/home/node/.n8n
      # 自定义文件目录映射
      - ./n8n-mnt:/mnt
      # 可选:自定义节点目录
      # - /data/n8n/n8n-custom:/home/node/.n8n/custom

    healthcheck:
      test: ["CMD-SHELL", "wget --no-verbose --tries=1 --spider http://localhost:5678/healthz || exit 1"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 40s

    networks:
      - n8n-network

networks:
  n8n-network:
    driver: bridge
最近更新