Mobile wallpaper
1017 字
5 分钟

Docker部署n8n并破解所有Enterprise功能

2025-09-04
浏览量 加载中...
本文主要信息

修改代码强制开启n8n的Enterprise功能

由于n8n都是开源的,因此修改代码来获取所有Enterprise License才有的功能也比较容易。最开始打算通过自建授权服务器来着,但是license检验的库是闭源的,不是很好搞。截止本文时间,n8n目前最新commit为4313aa315f623f5d88381cdc98aacff6a25dc9ba,代码修改也是基于此版本,后续如有变动,参照修改即可。

注意

对于开源软件,本人不支持、不推荐使用开心版和破解版。商业化对于开源软件是必要,对开源生态是必要的,对开源软件的良好发展是必要的(LskyPro+这种代码写的稀烂、文档写的稀烂、商业化后就转为闭源的软件除外)

组件说明#

  • Docker:用来打包n8n镜像。
  • n8n源码:可以从这里github获取。

部署流程#

修改代码#

  1. git clone --depth 1 https://github.com/n8n-io/n8n && cd n8n
  2. 修改license.ts文件,点击按钮查看diff
    diff --git a/packages/cli/src/license.ts b/packages/cli/src/license.ts
    index 6441f74003..82a30bfbe5 100644
    --- a/packages/cli/src/license.ts
    +++ b/packages/cli/src/license.ts
    @@ -218,7 +218,11 @@ export class License implements LicenseProvider {
    }
    isLicensed(feature: BooleanLicenseFeature) {
    - return this.manager?.hasFeatureEnabled(feature) ?? false;
    + // 🚀 BYPASS: Always return true for all features except showNonProdBanner
    + if (feature === LICENSE_FEATURES.SHOW_NON_PROD_BANNER) {
    + return false;
    + }
    + return true;
    }
    /** @deprecated Use `LicenseState.isSharingLicensed` instead. */
    @@ -346,7 +350,18 @@ export class License implements LicenseProvider {
    }
    getValue<T extends keyof FeatureReturnType>(feature: T): FeatureReturnType[T] {
    - return this.manager?.getFeatureValue(feature) as FeatureReturnType[T];
    + // 🚀 BYPASS: Return Enterprise values
    + if (feature === 'planName') {
    + return 'Enterprise' as FeatureReturnType[T];
    + }
    +
    + // Return unlimited for all quotas
    + if (Object.values(LICENSE_QUOTAS).includes(feature as any)) {
    + return UNLIMITED_LICENSE_QUOTA as FeatureReturnType[T];
    + }
    +
    + // Return true for all boolean features
    + return true as FeatureReturnType[T];
    }
    getManagementJwt(): string {
    @@ -384,36 +399,43 @@ export class License implements LicenseProvider {
    /** @deprecated Use `LicenseState` instead. */
    getUsersLimit() {
    - return this.getValue(LICENSE_QUOTAS.USERS_LIMIT) ?? UNLIMITED_LICENSE_QUOTA;
    + // 🚀 BYPASS: Unlimited users
    + return UNLIMITED_LICENSE_QUOTA;
    }
    /** @deprecated Use `LicenseState` instead. */
    getTriggerLimit() {
    - return this.getValue(LICENSE_QUOTAS.TRIGGER_LIMIT) ?? UNLIMITED_LICENSE_QUOTA;
    + // 🚀 BYPASS: Unlimited triggers
    + return UNLIMITED_LICENSE_QUOTA;
    }
    /** @deprecated Use `LicenseState` instead. */
    getVariablesLimit() {
    - return this.getValue(LICENSE_QUOTAS.VARIABLES_LIMIT) ?? UNLIMITED_LICENSE_QUOTA;
    + // 🚀 BYPASS: Unlimited variables
    + return UNLIMITED_LICENSE_QUOTA;
    }
    /** @deprecated Use `LicenseState` instead. */
    getAiCredits() {
    - return this.getValue(LICENSE_QUOTAS.AI_CREDITS) ?? 0;
    + // 🚀 BYPASS: Unlimited AI credits
    + return UNLIMITED_LICENSE_QUOTA;
    }
    /** @deprecated Use `LicenseState` instead. */
    getWorkflowHistoryPruneLimit() {
    - return this.getValue(LICENSE_QUOTAS.WORKFLOW_HISTORY_PRUNE_LIMIT) ?? UNLIMITED_LICENSE_QUOTA;
    + // 🚀 BYPASS: Unlimited workflow history
    + return UNLIMITED_LICENSE_QUOTA;
    }
    /** @deprecated Use `LicenseState` instead. */
    getTeamProjectLimit() {
    - return this.getValue(LICENSE_QUOTAS.TEAM_PROJECT_LIMIT) ?? 0;
    + // 🚀 BYPASS: Unlimited team projects
    + return UNLIMITED_LICENSE_QUOTA;
    }
    getPlanName(): string {
    - return this.getValue('planName') ?? 'Community';
    + // 🚀 BYPASS: Always return Enterprise
    + return 'Enterprise';
    }
    getInfo(): string {
  3. 修改完成后,利用DND进行打包。先build一个用于打包的镜像
    Dockerfile
    FROM node:22.16-bookworm
    # 安装 Docker CLI 所需的依赖
    # RUN 是在构建镜像时执行的命令
    RUN apt-get update && apt-get install -y --no-install-recommends \
    ca-certificates \
    curl \
    gnupg \
    git \
    && rm -rf /var/lib/apt/lists/*
    # 添加 Docker 官方的 GPG 密钥
    RUN install -m 0755 -d /etc/apt/keyrings
    RUN curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
    RUN chmod a+r /etc/apt/keyrings/docker.asc
    # 设置 Docker 的 apt 软件源
    RUN echo \
    "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
    $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
    tee /etc/apt/sources.list.d/docker.list > /dev/null
    # 更新软件源信息,并安装 Docker CLI
    # 注意:我们只安装 docker-ce-cli,不需要完整的 docker-ce 引擎
    RUN apt-get update && apt-get install -y --no-install-recommends \
    docker-ce-cli \
    docker-buildx-plugin \
    && rm -rf /var/lib/apt/lists/* \
    && npm install -g pnpm
    # 设置工作目录
    WORKDIR /app
    Terminal window
    sudo docker build -t node-docker-builder -f Dockerfile .
    cd n8n
    sudo docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock -v "$(pwd)":/app node-docker-builder bash
  4. 进入容器内部后,输入DOCKER_BUILD=true pnpm build:docker开始打包
  5. 打包完成后,参考官方教程进行部署,下面是我的docker-compose.yaml
    Terminal window
    cd n8n && nano docker-compose.yaml && mkdir data local-files && sudo chown -R 1000:1000 ./data ./local-files && nano .env
    services:
    n8n:
    image: n8nio/n8n:local
    container_name: n8n
    restart: always
    ports:
    - "65035:5678"
    environment:
    # 这些环境变量对于 n8n 在反代后正常工作至关重要,必须保留
    - N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME}
    - N8N_PORT=5678
    - N8N_PROTOCOL=https
    - WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/
    - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
    - N8N_RUNNERS_ENABLED=true
    - NODE_ENV=production
    - GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
    - TZ=${GENERIC_TIMEZONE}
    - NODE_TLS_REJECT_UNAUTHORIZED=0
    volumes:
    - ./data:/home/node/.n8n
    - ./local-files:/files
    .env
    SUBDOMAIN=n8n
    DOMAIN_NAME=换成你的一级域名
    GENERIC_TIMEZONE=Asia/Shanghai
  6. 运行:sudo docker compose up -d

License Key获取与填入#

其实这一步不做也无所谓,因为就算是没License,默认Enterprise功能也都是开启的。有强迫症的话,可以接着下去

  1. 前往https://n8n.xxx.com,首次进入会要求注册 CleanShot 2025-09-04 at 20.27.17@2x.png
  2. 随后会进入如下界面,点击箭头处按钮获取一个Community License CleanShot 2025-09-04 at 20.28.55@2x.png
  3. 随后点击邮件里的链接去激活,默认就是Enterprise License。
Docker部署n8n并破解所有Enterprise功能
https://blog.useforall.com/posts/21/
最后更新于 2025-09-04,距今已过 73 天

部分内容可能已过时

评论区

目录