1017 字
5 分钟
Docker部署n8n并破解所有Enterprise功能
本文主要信息修改代码强制开启n8n的Enterprise功能
由于n8n都是开源的,因此修改代码来获取所有Enterprise License才有的功能也比较容易。最开始打算通过自建授权服务器来着,但是license检验的库是闭源的,不是很好搞。截止本文时间,n8n目前最新commit为4313aa315f623f5d88381cdc98aacff6a25dc9ba,代码修改也是基于此版本,后续如有变动,参照修改即可。
注意对于开源软件,本人不支持、不推荐使用开心版和破解版。商业化对于开源软件是必要,对开源生态是必要的,对开源软件的良好发展是必要的(LskyPro+这种代码写的稀烂、文档写的稀烂、商业化后就转为闭源的软件除外)
组件说明
- Docker:用来打包n8n镜像。
- n8n源码:可以从这里github获取。
部署流程
修改代码
git clone --depth 1 https://github.com/n8n-io/n8n && cd n8n- 修改
license.ts文件,点击按钮查看diffdiff --git a/packages/cli/src/license.ts b/packages/cli/src/license.tsindex 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 { - 修改完成后,利用
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/keyringsRUN curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.ascRUN 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 /appTerminal window sudo docker build -t node-docker-builder -f Dockerfile .cd n8nsudo docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock -v "$(pwd)":/app node-docker-builder bash - 进入容器内部后,输入
DOCKER_BUILD=true pnpm build:docker开始打包 - 打包完成后,参考官方教程进行部署,下面是我的
docker-compose.yamlTerminal window cd n8n && nano docker-compose.yaml && mkdir data local-files && sudo chown -R 1000:1000 ./data ./local-files && nano .envservices:n8n:image: n8nio/n8n:localcontainer_name: n8nrestart: alwaysports:- "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=0volumes:- ./data:/home/node/.n8n- ./local-files:/files.env SUBDOMAIN=n8nDOMAIN_NAME=换成你的一级域名GENERIC_TIMEZONE=Asia/Shanghai - 运行:
sudo docker compose up -d
License Key获取与填入
其实这一步不做也无所谓,因为就算是没License,默认Enterprise功能也都是开启的。有强迫症的话,可以接着下去
- 前往
https://n8n.xxx.com,首次进入会要求注册
- 随后会进入如下界面,点击箭头处按钮获取一个Community License

- 随后点击邮件里的链接去激活,默认就是Enterprise License。
Docker部署n8n并破解所有Enterprise功能
https://blog.useforall.com/posts/21/ 最后更新于 2025-09-04,距今已过 73 天
部分内容可能已过时
Lim's Blog