docs: 创建专业的项目 README 文档
详细说明: - 添加完整的项目介绍和架构说明 - 包含 7 个 AI Agent 的详细介绍 - 添加技术栈和 Mermaid 架构图 - 完善安装和使用指南 - 添加开发指南和 Git 工作流 - 新增 Windows 快速部署文档 - 更新前端组件和启动脚本 - 添加多种环境配置文件 修改的文件: - 新增 README.md 主文档 - 新增 doc/ 目录及部署文档 - 更新前端演示系统组件 - 添加多个启动脚本变体 - 配置文件优化 影响的功能模块: - 项目文档体系 - 部署和启动流程 - 前端展示系统 - 环境配置管理
This commit is contained in:
22
n8n-n8n-1.109.2/.env.demo
Normal file
22
n8n-n8n-1.109.2/.env.demo
Normal file
@@ -0,0 +1,22 @@
|
||||
# n8n 演示模式配置
|
||||
N8N_DEFAULT_LOCALE=zh-CN
|
||||
N8N_HOST=0.0.0.0
|
||||
N8N_PORT=5678
|
||||
N8N_EDITOR_BASE_URL=http://192.168.2.90:5678
|
||||
WEBHOOK_URL=http://192.168.2.90:5678
|
||||
N8N_PROTOCOL=http
|
||||
|
||||
# 跳过所有认证和设置
|
||||
N8N_BASIC_AUTH_ACTIVE=false
|
||||
N8N_AUTH_EXCLUDE_ENDPOINTS=/**
|
||||
N8N_USER_MANAGEMENT_DISABLED=true
|
||||
N8N_SKIP_OWNER_SETUP=true
|
||||
|
||||
# CORS配置
|
||||
N8N_CORS_ENABLED=true
|
||||
N8N_CORS_ORIGINS=*
|
||||
N8N_CORS_ALLOW_CREDENTIALS=true
|
||||
|
||||
# 禁用遥测
|
||||
N8N_DIAGNOSTICS_DISABLED=true
|
||||
N8N_TELEMETRY_DISABLED=true
|
||||
33
n8n-n8n-1.109.2/.env.lan
Normal file
33
n8n-n8n-1.109.2/.env.lan
Normal file
@@ -0,0 +1,33 @@
|
||||
# n8n 局域网完整访问配置
|
||||
N8N_DEFAULT_LOCALE=zh-CN
|
||||
N8N_HOST=0.0.0.0
|
||||
N8N_PORT=5678
|
||||
N8N_EDITOR_BASE_URL=http://192.168.2.90:5678
|
||||
WEBHOOK_URL=http://192.168.2.90:5678
|
||||
N8N_PROTOCOL=http
|
||||
|
||||
# 认证配置(开发环境 - 禁用认证)
|
||||
N8N_BASIC_AUTH_ACTIVE=false
|
||||
N8N_AUTH_EXCLUDE_ENDPOINTS=/**
|
||||
N8N_SKIP_AUTH_ROUTES=true
|
||||
|
||||
# Cookie配置
|
||||
N8N_SECURE_COOKIE=false
|
||||
N8N_SESSION_COOKIE_SAME_SITE=none
|
||||
N8N_SESSION_COOKIE_SECURE=false
|
||||
N8N_SESSION_COOKIE_DOMAIN=
|
||||
|
||||
# CORS配置(开发环境 - 允许所有)
|
||||
N8N_CORS_ENABLED=true
|
||||
N8N_CORS_ORIGINS=*
|
||||
N8N_CORS_ALLOW_HEADERS=*
|
||||
N8N_CORS_ALLOW_METHODS=*
|
||||
|
||||
# WebSocket
|
||||
N8N_PUSH_BACKEND=websocket
|
||||
|
||||
# 其他
|
||||
N8N_RUNNERS_ENABLED=true
|
||||
N8N_BLOCK_ENV_ACCESS_IN_NODE=false
|
||||
DB_SQLITE_POOL_SIZE=5
|
||||
N8N_PUBLIC_API_DISABLED=false
|
||||
12
n8n-n8n-1.109.2/.env.network
Normal file
12
n8n-n8n-1.109.2/.env.network
Normal file
@@ -0,0 +1,12 @@
|
||||
# n8n 局域网访问配置
|
||||
N8N_DEFAULT_LOCALE=zh-CN
|
||||
N8N_HOST=0.0.0.0
|
||||
N8N_PORT=5678
|
||||
N8N_EDITOR_BASE_URL=http://192.168.2.90:5678
|
||||
WEBHOOK_URL=http://192.168.2.90:5678
|
||||
N8N_PROTOCOL=http
|
||||
N8N_SECURE_COOKIE=false
|
||||
N8N_SESSION_COOKIE_SAME_SITE=lax
|
||||
N8N_SESSION_COOKIE_SECURE=false
|
||||
N8N_CORS_ENABLED=true
|
||||
N8N_CORS_ORIGINS=http://localhost:5678,http://192.168.2.90:5678,http://127.0.0.1:5678
|
||||
@@ -21,3 +21,14 @@ Editor is now accessible via:
|
||||
http://localhost:5678
|
||||
(node:40550) [DEP0060] DeprecationWarning: The `util._extend` API is deprecated. Please use Object.assign() instead.
|
||||
(Use `node --trace-deprecation ...` to show where the warning was created)
|
||||
2025-09-10T00:35:45.301Z [Rudder] error: Response error code: ECONNRESET
|
||||
2025-09-10T00:35:45.603Z [Rudder] error: Response error code: ECONNRESET
|
||||
2025-09-10T00:35:46.159Z [Rudder] error: Response error code: ECONNRESET
|
||||
2025-09-10T00:35:47.491Z [Rudder] error: Error: ECONNRESET
|
||||
read ECONNRESET
|
||||
read ECONNRESET
|
||||
read ECONNRESET
|
||||
read ECONNRESET
|
||||
2025-09-10T12:58:36.048Z [Rudder] error: Response error code: ECONNABORTED
|
||||
2025-09-10T12:58:36.162Z [Rudder] error: Error: ECONNABORTED
|
||||
timeout of 300000ms exceeded
|
||||
|
||||
28
n8n-n8n-1.109.2/n8n-20250911-150248.log
Normal file
28
n8n-n8n-1.109.2/n8n-20250911-150248.log
Normal file
@@ -0,0 +1,28 @@
|
||||
|
||||
> n8n-monorepo@1.109.2 start /Users/xiaoqi/Documents/Dev/Project/2025-09-08_n8nDEMO演示/n8n-n8n-1.109.2
|
||||
> run-script-os
|
||||
|
||||
|
||||
> n8n-monorepo@1.109.2 start:default
|
||||
> cd packages/cli/bin && ./n8n
|
||||
|
||||
Permissions 0644 for n8n settings file /Users/xiaoqi/.n8n/config are too wide. This is ignored for now, but in the future n8n will attempt to change the permissions automatically. To automatically enforce correct permissions now set N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true (recommended), or turn this check off set N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=false.
|
||||
Initializing n8n process
|
||||
n8n ready on ::, port 5678
|
||||
n8n Task Broker ready on 127.0.0.1, port 5679
|
||||
Initializing AuthRolesService...
|
||||
AuthRolesService initialized successfully.
|
||||
[license SDK] Skipping renewal on init: license cert is not initialized
|
||||
Registered runner "JS Task Runner" (4F9N-zA_uFRqmJ75qypmz)
|
||||
Version: 1.109.2
|
||||
Locale: zh-CN
|
||||
|
||||
Editor is now accessible via:
|
||||
http://localhost:5678
|
||||
(node:49958) [DEP0060] DeprecationWarning: The `util._extend` API is deprecated. Please use Object.assign() instead.
|
||||
(Use `node --trace-deprecation ...` to show where the warning was created)
|
||||
Received SIGINT. Shutting down...
|
||||
[Task Runner]: Received SIGINT signal, shutting down...
|
||||
[Task Runner]: Task runner stopped
|
||||
|
||||
Stopping n8n...
|
||||
33
n8n-n8n-1.109.2/n8n-20250911-151217.log
Normal file
33
n8n-n8n-1.109.2/n8n-20250911-151217.log
Normal file
@@ -0,0 +1,33 @@
|
||||
|
||||
> n8n-monorepo@1.109.2 start /Users/xiaoqi/Documents/Dev/Project/2025-09-08_n8nDEMO演示/n8n-n8n-1.109.2
|
||||
> run-script-os
|
||||
|
||||
|
||||
> n8n-monorepo@1.109.2 start:default
|
||||
> cd packages/cli/bin && ./n8n
|
||||
|
||||
Permissions 0644 for n8n settings file /Users/xiaoqi/.n8n/config are too wide. This is ignored for now, but in the future n8n will attempt to change the permissions automatically. To automatically enforce correct permissions now set N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true (recommended), or turn this check off set N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=false.
|
||||
Initializing n8n process
|
||||
n8n ready on ::, port 5678
|
||||
n8n Task Broker ready on 127.0.0.1, port 5679
|
||||
Initializing AuthRolesService...
|
||||
AuthRolesService initialized successfully.
|
||||
[license SDK] Skipping renewal on init: license cert is not initialized
|
||||
Registered runner "JS Task Runner" (oEtIj0jgSWkCBQhozMDoR)
|
||||
Version: 1.109.2
|
||||
Locale: zh-CN
|
||||
|
||||
Editor is now accessible via:
|
||||
http://0.0.0.0:5678
|
||||
(node:69119) [DEP0060] DeprecationWarning: The `util._extend` API is deprecated. Please use Object.assign() instead.
|
||||
(Use `node --trace-deprecation ...` to show where the warning was created)
|
||||
401 Wrong username or password. Do you have caps lock on?
|
||||
401 Wrong username or password. Do you have caps lock on?
|
||||
401 Wrong username or password. Do you have caps lock on?
|
||||
401 Wrong username or password. Do you have caps lock on?
|
||||
401 Wrong username or password. Do you have caps lock on?
|
||||
Received SIGINT. Shutting down...
|
||||
[Task Runner]: Received SIGINT signal, shutting down...
|
||||
[Task Runner]: Task runner stopped
|
||||
|
||||
Stopping n8n...
|
||||
29
n8n-n8n-1.109.2/n8n-20250911-151559.log
Normal file
29
n8n-n8n-1.109.2/n8n-20250911-151559.log
Normal file
@@ -0,0 +1,29 @@
|
||||
|
||||
> n8n-monorepo@1.109.2 start /Users/xiaoqi/Documents/Dev/Project/2025-09-08_n8nDEMO演示/n8n-n8n-1.109.2
|
||||
> run-script-os
|
||||
|
||||
|
||||
> n8n-monorepo@1.109.2 start:default
|
||||
> cd packages/cli/bin && ./n8n
|
||||
|
||||
Permissions 0644 for n8n settings file /Users/xiaoqi/.n8n/config are too wide. This is ignored for now, but in the future n8n will attempt to change the permissions automatically. To automatically enforce correct permissions now set N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true (recommended), or turn this check off set N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=false.
|
||||
Initializing n8n process
|
||||
n8n ready on ::, port 5678
|
||||
n8n Task Broker ready on 127.0.0.1, port 5679
|
||||
Initializing AuthRolesService...
|
||||
AuthRolesService initialized successfully.
|
||||
[license SDK] Skipping renewal on init: license cert is not initialized
|
||||
Registered runner "JS Task Runner" (FAATlXvqOFr7SpAMV3Kqk)
|
||||
Version: 1.109.2
|
||||
Locale: zh-CN
|
||||
|
||||
Editor is now accessible via:
|
||||
http://192.168.2.90:5678
|
||||
(node:77801) [DEP0060] DeprecationWarning: The `util._extend` API is deprecated. Please use Object.assign() instead.
|
||||
(Use `node --trace-deprecation ...` to show where the warning was created)
|
||||
ELIFECYCLE Command failed.
|
||||
Received SIGTERM. Shutting down...
|
||||
[Task Runner]: Received SIGTERM signal, shutting down...
|
||||
[Task Runner]: Task runner stopped
|
||||
|
||||
Stopping n8n...
|
||||
29
n8n-n8n-1.109.2/n8n-20250911-153630.log
Normal file
29
n8n-n8n-1.109.2/n8n-20250911-153630.log
Normal file
@@ -0,0 +1,29 @@
|
||||
|
||||
> n8n-monorepo@1.109.2 start /Users/xiaoqi/Documents/Dev/Project/2025-09-08_n8nDEMO演示/n8n-n8n-1.109.2
|
||||
> run-script-os
|
||||
|
||||
|
||||
> n8n-monorepo@1.109.2 start:default
|
||||
> cd packages/cli/bin && ./n8n
|
||||
|
||||
Permissions 0644 for n8n settings file /Users/xiaoqi/.n8n/config are too wide. This is ignored for now, but in the future n8n will attempt to change the permissions automatically. To automatically enforce correct permissions now set N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true (recommended), or turn this check off set N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=false.
|
||||
Initializing n8n process
|
||||
n8n ready on ::, port 5678
|
||||
n8n Task Broker ready on 127.0.0.1, port 5679
|
||||
Initializing AuthRolesService...
|
||||
AuthRolesService initialized successfully.
|
||||
[license SDK] Skipping renewal on init: license cert is not initialized
|
||||
Registered runner "JS Task Runner" (RSKxAE8DU9N7qA7DJVPY5)
|
||||
Version: 1.109.2
|
||||
Locale: zh-CN
|
||||
|
||||
Editor is now accessible via:
|
||||
http://192.168.2.90:5678
|
||||
(node:23582) [DEP0060] DeprecationWarning: The `util._extend` API is deprecated. Please use Object.assign() instead.
|
||||
(Use `node --trace-deprecation ...` to show where the warning was created)
|
||||
Received SIGTERM. Shutting down...
|
||||
ELIFECYCLE Command failed.
|
||||
[Task Runner]: Received SIGTERM signal, shutting down...
|
||||
[Task Runner]: Task runner stopped
|
||||
|
||||
Stopping n8n...
|
||||
29
n8n-n8n-1.109.2/n8n-20250911-171926.log
Normal file
29
n8n-n8n-1.109.2/n8n-20250911-171926.log
Normal file
@@ -0,0 +1,29 @@
|
||||
|
||||
> n8n-monorepo@1.109.2 start /Users/xiaoqi/Documents/Dev/Project/2025-09-08_n8nDEMO演示/n8n-n8n-1.109.2
|
||||
> run-script-os
|
||||
|
||||
|
||||
> n8n-monorepo@1.109.2 start:default
|
||||
> cd packages/cli/bin && ./n8n
|
||||
|
||||
Permissions 0644 for n8n settings file /Users/xiaoqi/.n8n/config are too wide. This is ignored for now, but in the future n8n will attempt to change the permissions automatically. To automatically enforce correct permissions now set N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true (recommended), or turn this check off set N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=false.
|
||||
Initializing n8n process
|
||||
n8n ready on ::, port 5678
|
||||
n8n Task Broker ready on 127.0.0.1, port 5679
|
||||
Initializing AuthRolesService...
|
||||
AuthRolesService initialized successfully.
|
||||
[license SDK] Skipping renewal on init: license cert is not initialized
|
||||
Registered runner "JS Task Runner" (r84e-hWgfM8-CszbqCXQz)
|
||||
Version: 1.109.2
|
||||
Locale: zh-CN
|
||||
|
||||
Editor is now accessible via:
|
||||
http://192.168.2.90:5678
|
||||
(node:91211) [DEP0060] DeprecationWarning: The `util._extend` API is deprecated. Please use Object.assign() instead.
|
||||
(Use `node --trace-deprecation ...` to show where the warning was created)
|
||||
Received SIGTERM. Shutting down...
|
||||
ELIFECYCLE Command failed.
|
||||
[Task Runner]: Received SIGTERM signal, shutting down...
|
||||
[Task Runner]: Task runner stopped
|
||||
|
||||
Stopping n8n...
|
||||
13
n8n-n8n-1.109.2/n8n-20250911-174620.log
Normal file
13
n8n-n8n-1.109.2/n8n-20250911-174620.log
Normal file
@@ -0,0 +1,13 @@
|
||||
TypeError: Missing parameter name at 6: https://git.new/pathToRegexpError
|
||||
at name (/Users/xiaoqi/Documents/Dev/Project/2025-09-08_n8nDEMO演示/n8n-n8n-1.109.2/node_modules/.pnpm/path-to-regexp@8.2.0/node_modules/path-to-regexp/src/index.ts:153:13)
|
||||
at lexer (/Users/xiaoqi/Documents/Dev/Project/2025-09-08_n8nDEMO演示/n8n-n8n-1.109.2/node_modules/.pnpm/path-to-regexp@8.2.0/node_modules/path-to-regexp/src/index.ts:168:21)
|
||||
at lexer.next (<anonymous>)
|
||||
at Iter.peek (/Users/xiaoqi/Documents/Dev/Project/2025-09-08_n8nDEMO演示/n8n-n8n-1.109.2/node_modules/.pnpm/path-to-regexp@8.2.0/node_modules/path-to-regexp/src/index.ts:188:32)
|
||||
at Iter.tryConsume (/Users/xiaoqi/Documents/Dev/Project/2025-09-08_n8nDEMO演示/n8n-n8n-1.109.2/node_modules/.pnpm/path-to-regexp@8.2.0/node_modules/path-to-regexp/src/index.ts:195:24)
|
||||
at Iter.text (/Users/xiaoqi/Documents/Dev/Project/2025-09-08_n8nDEMO演示/n8n-n8n-1.109.2/node_modules/.pnpm/path-to-regexp@8.2.0/node_modules/path-to-regexp/src/index.ts:213:26)
|
||||
at consume (/Users/xiaoqi/Documents/Dev/Project/2025-09-08_n8nDEMO演示/n8n-n8n-1.109.2/node_modules/.pnpm/path-to-regexp@8.2.0/node_modules/path-to-regexp/src/index.ts:285:23)
|
||||
at parse (/Users/xiaoqi/Documents/Dev/Project/2025-09-08_n8nDEMO演示/n8n-n8n-1.109.2/node_modules/.pnpm/path-to-regexp@8.2.0/node_modules/path-to-regexp/src/index.ts:320:18)
|
||||
at /Users/xiaoqi/Documents/Dev/Project/2025-09-08_n8nDEMO演示/n8n-n8n-1.109.2/node_modules/.pnpm/path-to-regexp@8.2.0/node_modules/path-to-regexp/src/index.ts:503:40
|
||||
at Array.map (<anonymous>)
|
||||
Exiting due to an error.
|
||||
Missing parameter name at 6: https://git.new/pathToRegexpError
|
||||
27
n8n-n8n-1.109.2/n8n-20250911-183629.log
Normal file
27
n8n-n8n-1.109.2/n8n-20250911-183629.log
Normal file
@@ -0,0 +1,27 @@
|
||||
|
||||
> n8n-monorepo@1.109.2 start /Users/xiaoqi/Documents/Dev/Project/2025-09-08_n8nDEMO演示/n8n-n8n-1.109.2
|
||||
> run-script-os
|
||||
|
||||
|
||||
> n8n-monorepo@1.109.2 start:default
|
||||
> cd packages/cli/bin && ./n8n
|
||||
|
||||
Permissions 0644 for n8n settings file /Users/xiaoqi/.n8n/config are too wide. This is ignored for now, but in the future n8n will attempt to change the permissions automatically. To automatically enforce correct permissions now set N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true (recommended), or turn this check off set N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=false.
|
||||
Initializing n8n process
|
||||
n8n ready on ::, port 5678
|
||||
n8n Task Broker ready on 127.0.0.1, port 5679
|
||||
Initializing AuthRolesService...
|
||||
AuthRolesService initialized successfully.
|
||||
[license SDK] Skipping renewal on init: license cert is not initialized
|
||||
Registered runner "JS Task Runner" (yDuRRwdAj5IA99mGUsiZB)
|
||||
Version: 1.109.2
|
||||
Locale: zh-CN
|
||||
|
||||
Editor is now accessible via:
|
||||
http://192.168.2.90:5678
|
||||
Received SIGTERM. Shutting down...
|
||||
ELIFECYCLE Command failed.
|
||||
[Task Runner]: Received SIGTERM signal, shutting down...
|
||||
[Task Runner]: Task runner stopped
|
||||
|
||||
Stopping n8n...
|
||||
13
n8n-n8n-1.109.2/n8n-20250911-205741.log
Normal file
13
n8n-n8n-1.109.2/n8n-20250911-205741.log
Normal file
@@ -0,0 +1,13 @@
|
||||
TypeError: Missing parameter name at 6: https://git.new/pathToRegexpError
|
||||
at name (/Users/xiaoqi/Documents/Dev/Project/2025-09-08_n8nDEMO演示/n8n-n8n-1.109.2/node_modules/.pnpm/path-to-regexp@8.2.0/node_modules/path-to-regexp/src/index.ts:153:13)
|
||||
at lexer (/Users/xiaoqi/Documents/Dev/Project/2025-09-08_n8nDEMO演示/n8n-n8n-1.109.2/node_modules/.pnpm/path-to-regexp@8.2.0/node_modules/path-to-regexp/src/index.ts:168:21)
|
||||
at lexer.next (<anonymous>)
|
||||
at Iter.peek (/Users/xiaoqi/Documents/Dev/Project/2025-09-08_n8nDEMO演示/n8n-n8n-1.109.2/node_modules/.pnpm/path-to-regexp@8.2.0/node_modules/path-to-regexp/src/index.ts:188:32)
|
||||
at Iter.tryConsume (/Users/xiaoqi/Documents/Dev/Project/2025-09-08_n8nDEMO演示/n8n-n8n-1.109.2/node_modules/.pnpm/path-to-regexp@8.2.0/node_modules/path-to-regexp/src/index.ts:195:24)
|
||||
at Iter.text (/Users/xiaoqi/Documents/Dev/Project/2025-09-08_n8nDEMO演示/n8n-n8n-1.109.2/node_modules/.pnpm/path-to-regexp@8.2.0/node_modules/path-to-regexp/src/index.ts:213:26)
|
||||
at consume (/Users/xiaoqi/Documents/Dev/Project/2025-09-08_n8nDEMO演示/n8n-n8n-1.109.2/node_modules/.pnpm/path-to-regexp@8.2.0/node_modules/path-to-regexp/src/index.ts:285:23)
|
||||
at parse (/Users/xiaoqi/Documents/Dev/Project/2025-09-08_n8nDEMO演示/n8n-n8n-1.109.2/node_modules/.pnpm/path-to-regexp@8.2.0/node_modules/path-to-regexp/src/index.ts:320:18)
|
||||
at /Users/xiaoqi/Documents/Dev/Project/2025-09-08_n8nDEMO演示/n8n-n8n-1.109.2/node_modules/.pnpm/path-to-regexp@8.2.0/node_modules/path-to-regexp/src/index.ts:503:40
|
||||
at Array.map (<anonymous>)
|
||||
Exiting due to an error.
|
||||
Missing parameter name at 6: https://git.new/pathToRegexpError
|
||||
14
n8n-n8n-1.109.2/n8n-20250911-205818.log
Normal file
14
n8n-n8n-1.109.2/n8n-20250911-205818.log
Normal file
@@ -0,0 +1,14 @@
|
||||
Last session crashed
|
||||
TypeError: Missing parameter name at 6: https://git.new/pathToRegexpError
|
||||
at name (/Users/xiaoqi/Documents/Dev/Project/2025-09-08_n8nDEMO演示/n8n-n8n-1.109.2/node_modules/.pnpm/path-to-regexp@8.2.0/node_modules/path-to-regexp/src/index.ts:153:13)
|
||||
at lexer (/Users/xiaoqi/Documents/Dev/Project/2025-09-08_n8nDEMO演示/n8n-n8n-1.109.2/node_modules/.pnpm/path-to-regexp@8.2.0/node_modules/path-to-regexp/src/index.ts:168:21)
|
||||
at lexer.next (<anonymous>)
|
||||
at Iter.peek (/Users/xiaoqi/Documents/Dev/Project/2025-09-08_n8nDEMO演示/n8n-n8n-1.109.2/node_modules/.pnpm/path-to-regexp@8.2.0/node_modules/path-to-regexp/src/index.ts:188:32)
|
||||
at Iter.tryConsume (/Users/xiaoqi/Documents/Dev/Project/2025-09-08_n8nDEMO演示/n8n-n8n-1.109.2/node_modules/.pnpm/path-to-regexp@8.2.0/node_modules/path-to-regexp/src/index.ts:195:24)
|
||||
at Iter.text (/Users/xiaoqi/Documents/Dev/Project/2025-09-08_n8nDEMO演示/n8n-n8n-1.109.2/node_modules/.pnpm/path-to-regexp@8.2.0/node_modules/path-to-regexp/src/index.ts:213:26)
|
||||
at consume (/Users/xiaoqi/Documents/Dev/Project/2025-09-08_n8nDEMO演示/n8n-n8n-1.109.2/node_modules/.pnpm/path-to-regexp@8.2.0/node_modules/path-to-regexp/src/index.ts:285:23)
|
||||
at parse (/Users/xiaoqi/Documents/Dev/Project/2025-09-08_n8nDEMO演示/n8n-n8n-1.109.2/node_modules/.pnpm/path-to-regexp@8.2.0/node_modules/path-to-regexp/src/index.ts:320:18)
|
||||
at /Users/xiaoqi/Documents/Dev/Project/2025-09-08_n8nDEMO演示/n8n-n8n-1.109.2/node_modules/.pnpm/path-to-regexp@8.2.0/node_modules/path-to-regexp/src/index.ts:503:40
|
||||
at Array.map (<anonymous>)
|
||||
Exiting due to an error.
|
||||
Missing parameter name at 6: https://git.new/pathToRegexpError
|
||||
26
n8n-n8n-1.109.2/n8n-20250914-021042.log
Normal file
26
n8n-n8n-1.109.2/n8n-20250914-021042.log
Normal file
@@ -0,0 +1,26 @@
|
||||
|
||||
> n8n-monorepo@1.109.2 start /Users/xiaoqi/Documents/Dev/Project/2025-09-08_n8nDEMO演示/n8n-n8n-1.109.2
|
||||
> run-script-os
|
||||
|
||||
|
||||
> n8n-monorepo@1.109.2 start:default
|
||||
> cd packages/cli/bin && ./n8n
|
||||
|
||||
Permissions 0644 for n8n settings file /Users/xiaoqi/.n8n/config are too wide. This is ignored for now, but in the future n8n will attempt to change the permissions automatically. To automatically enforce correct permissions now set N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true (recommended), or turn this check off set N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=false.
|
||||
Initializing n8n process
|
||||
n8n ready on ::, port 5678
|
||||
n8n Task Broker ready on 127.0.0.1, port 5679
|
||||
Initializing AuthRolesService...
|
||||
AuthRolesService initialized successfully.
|
||||
[license SDK] Skipping renewal on init: license cert is not initialized
|
||||
Registered runner "JS Task Runner" (b6PND0Z4f9GgE0juaQeP1)
|
||||
Version: 1.109.2
|
||||
Locale: zh-CN
|
||||
|
||||
Editor is now accessible via:
|
||||
http://192.168.2.99:5678
|
||||
Received SIGINT. Shutting down...
|
||||
[Task Runner]: Received SIGINT signal, shutting down...
|
||||
[Task Runner]: Task runner stopped
|
||||
|
||||
Stopping n8n...
|
||||
28
n8n-n8n-1.109.2/n8n-20250914-025957.log
Normal file
28
n8n-n8n-1.109.2/n8n-20250914-025957.log
Normal file
@@ -0,0 +1,28 @@
|
||||
|
||||
> n8n-monorepo@1.109.2 start /Users/xiaoqi/Documents/Dev/Project/2025-09-08_n8nDEMO演示/n8n-n8n-1.109.2
|
||||
> run-script-os
|
||||
|
||||
|
||||
> n8n-monorepo@1.109.2 start:default
|
||||
> cd packages/cli/bin && ./n8n
|
||||
|
||||
Permissions 0644 for n8n settings file /Users/xiaoqi/.n8n/config are too wide. This is ignored for now, but in the future n8n will attempt to change the permissions automatically. To automatically enforce correct permissions now set N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true (recommended), or turn this check off set N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=false.
|
||||
Initializing n8n process
|
||||
n8n ready on ::, port 5678
|
||||
n8n Task Broker ready on 127.0.0.1, port 5679
|
||||
Initializing AuthRolesService...
|
||||
AuthRolesService initialized successfully.
|
||||
[license SDK] Skipping renewal on init: license cert is not initialized
|
||||
Registered runner "JS Task Runner" (1hOQAq-h909KUxBXkmhn7)
|
||||
Version: 1.109.2
|
||||
Locale: zh-CN
|
||||
|
||||
Editor is now accessible via:
|
||||
http://192.168.2.99:5678
|
||||
(node:58147) [DEP0060] DeprecationWarning: The `util._extend` API is deprecated. Please use Object.assign() instead.
|
||||
(Use `node --trace-deprecation ...` to show where the warning was created)
|
||||
Received SIGINT. Shutting down...
|
||||
[Task Runner]: Received SIGINT signal, shutting down...
|
||||
[Task Runner]: Task runner stopped
|
||||
|
||||
Stopping n8n...
|
||||
30
n8n-n8n-1.109.2/n8n-20250914-032330.log
Normal file
30
n8n-n8n-1.109.2/n8n-20250914-032330.log
Normal file
@@ -0,0 +1,30 @@
|
||||
|
||||
> n8n-monorepo@1.109.2 start /Users/xiaoqi/Documents/Dev/Project/2025-09-08_n8nDEMO演示/n8n-n8n-1.109.2
|
||||
> run-script-os
|
||||
|
||||
|
||||
> n8n-monorepo@1.109.2 start:default
|
||||
> cd packages/cli/bin && ./n8n
|
||||
|
||||
Permissions 0644 for n8n settings file /Users/xiaoqi/.n8n/config are too wide. This is ignored for now, but in the future n8n will attempt to change the permissions automatically. To automatically enforce correct permissions now set N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true (recommended), or turn this check off set N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=false.
|
||||
Initializing n8n process
|
||||
n8n ready on ::, port 5678
|
||||
n8n Task Broker ready on 127.0.0.1, port 5679
|
||||
Initializing AuthRolesService...
|
||||
AuthRolesService initialized successfully.
|
||||
[license SDK] Skipping renewal on init: license cert is not initialized
|
||||
Registered runner "JS Task Runner" (wa1VyRbNhURLEvq_8nhWo)
|
||||
Version: 1.109.2
|
||||
Locale: zh-CN
|
||||
|
||||
Editor is now accessible via:
|
||||
http://192.168.2.99:5678
|
||||
(node:65389) [DEP0060] DeprecationWarning: The `util._extend` API is deprecated. Please use Object.assign() instead.
|
||||
(Use `node --trace-deprecation ...` to show where the warning was created)
|
||||
Owner was set up successfully
|
||||
User survey updated successfully
|
||||
Received SIGINT. Shutting down...
|
||||
[Task Runner]: Received SIGINT signal, shutting down...
|
||||
[Task Runner]: Task runner stopped
|
||||
|
||||
Stopping n8n...
|
||||
29
n8n-n8n-1.109.2/n8n-20250914-033905.log
Normal file
29
n8n-n8n-1.109.2/n8n-20250914-033905.log
Normal file
@@ -0,0 +1,29 @@
|
||||
|
||||
> n8n-monorepo@1.109.2 start /Users/xiaoqi/Documents/Dev/Project/2025-09-08_n8nDEMO演示/n8n-n8n-1.109.2
|
||||
> run-script-os
|
||||
|
||||
|
||||
> n8n-monorepo@1.109.2 start:default
|
||||
> cd packages/cli/bin && ./n8n
|
||||
|
||||
Permissions 0644 for n8n settings file /Users/xiaoqi/.n8n/config are too wide. This is ignored for now, but in the future n8n will attempt to change the permissions automatically. To automatically enforce correct permissions now set N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true (recommended), or turn this check off set N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=false.
|
||||
Initializing n8n process
|
||||
n8n ready on ::, port 5678
|
||||
n8n Task Broker ready on 127.0.0.1, port 5679
|
||||
Initializing AuthRolesService...
|
||||
AuthRolesService initialized successfully.
|
||||
[license SDK] Skipping renewal on init: license cert is not initialized
|
||||
Registered runner "JS Task Runner" (ytJpIM_Gno8mBYVVY08SV)
|
||||
Version: 1.109.2
|
||||
Locale: zh-CN
|
||||
|
||||
Editor is now accessible via:
|
||||
http://192.168.2.99:5678
|
||||
(node:37966) [DEP0060] DeprecationWarning: The `util._extend` API is deprecated. Please use Object.assign() instead.
|
||||
(Use `node --trace-deprecation ...` to show where the warning was created)
|
||||
Cannot set properties of undefined (setting 'runIndex')
|
||||
Received SIGINT. Shutting down...
|
||||
[Task Runner]: Received SIGINT signal, shutting down...
|
||||
[Task Runner]: Task runner stopped
|
||||
|
||||
Stopping n8n...
|
||||
216
n8n-n8n-1.109.2/n8n-clean-20250911-193007.log
Normal file
216
n8n-n8n-1.109.2/n8n-clean-20250911-193007.log
Normal file
@@ -0,0 +1,216 @@
|
||||
|
||||
> n8n-monorepo@1.109.2 start /Users/xiaoqi/Documents/Dev/Project/2025-09-08_n8nDEMO演示/n8n-n8n-1.109.2
|
||||
> run-script-os
|
||||
|
||||
|
||||
> n8n-monorepo@1.109.2 start:default
|
||||
> cd packages/cli/bin && ./n8n
|
||||
|
||||
Initializing n8n process
|
||||
n8n ready on ::, port 5678
|
||||
Migrations in progress, please do NOT stop the process.
|
||||
Starting migration InitialMigration1588102412422
|
||||
Finished migration InitialMigration1588102412422
|
||||
Starting migration WebhookModel1592445003908
|
||||
Finished migration WebhookModel1592445003908
|
||||
Starting migration CreateIndexStoppedAt1594825041918
|
||||
Finished migration CreateIndexStoppedAt1594825041918
|
||||
Starting migration MakeStoppedAtNullable1607431743769
|
||||
Finished migration MakeStoppedAtNullable1607431743769
|
||||
Starting migration AddWebhookId1611071044839
|
||||
Finished migration AddWebhookId1611071044839
|
||||
Starting migration CreateTagEntity1617213344594
|
||||
Finished migration CreateTagEntity1617213344594
|
||||
Starting migration UniqueWorkflowNames1620821879465
|
||||
Finished migration UniqueWorkflowNames1620821879465
|
||||
Starting migration AddWaitColumn1621707690587
|
||||
Finished migration AddWaitColumn1621707690587
|
||||
Starting migration UpdateWorkflowCredentials1630330987096
|
||||
Finished migration UpdateWorkflowCredentials1630330987096
|
||||
Starting migration AddExecutionEntityIndexes1644421939510
|
||||
Finished migration AddExecutionEntityIndexes1644421939510
|
||||
Starting migration CreateUserManagement1646992772331
|
||||
Finished migration CreateUserManagement1646992772331
|
||||
Starting migration LowerCaseUserEmail1648740597343
|
||||
Finished migration LowerCaseUserEmail1648740597343
|
||||
Starting migration CommunityNodes1652254514001
|
||||
Finished migration CommunityNodes1652254514001
|
||||
Starting migration AddUserSettings1652367743993
|
||||
Finished migration AddUserSettings1652367743993
|
||||
Starting migration AddAPIKeyColumn1652905585850
|
||||
Finished migration AddAPIKeyColumn1652905585850
|
||||
Starting migration IntroducePinData1654089251344
|
||||
Finished migration IntroducePinData1654089251344
|
||||
Starting migration AddNodeIds1658930531669
|
||||
Finished migration AddNodeIds1658930531669
|
||||
Starting migration AddJsonKeyPinData1659888469333
|
||||
Finished migration AddJsonKeyPinData1659888469333
|
||||
Starting migration CreateCredentialsUserRole1660062385367
|
||||
Finished migration CreateCredentialsUserRole1660062385367
|
||||
Starting migration CreateWorkflowsEditorRole1663755770892
|
||||
Finished migration CreateWorkflowsEditorRole1663755770892
|
||||
Starting migration WorkflowStatistics1664196174000
|
||||
Finished migration WorkflowStatistics1664196174000
|
||||
Starting migration CreateCredentialUsageTable1665484192211
|
||||
Finished migration CreateCredentialUsageTable1665484192211
|
||||
Starting migration RemoveCredentialUsageTable1665754637024
|
||||
Finished migration RemoveCredentialUsageTable1665754637024
|
||||
Starting migration AddWorkflowVersionIdColumn1669739707124
|
||||
Finished migration AddWorkflowVersionIdColumn1669739707124
|
||||
Starting migration AddTriggerCountColumn1669823906993
|
||||
Finished migration AddTriggerCountColumn1669823906993
|
||||
Starting migration MessageEventBusDestinations1671535397530
|
||||
Finished migration MessageEventBusDestinations1671535397530
|
||||
Starting migration RemoveWorkflowDataLoadedFlag1671726148419
|
||||
Finished migration RemoveWorkflowDataLoadedFlag1671726148419
|
||||
Starting migration DeleteExecutionsWithWorkflows1673268682475
|
||||
Finished migration DeleteExecutionsWithWorkflows1673268682475
|
||||
Starting migration AddStatusToExecutions1674138566000
|
||||
Finished migration AddStatusToExecutions1674138566000
|
||||
Starting migration CreateLdapEntities1674509946020
|
||||
Finished migration CreateLdapEntities1674509946020
|
||||
Starting migration PurgeInvalidWorkflowConnections1675940580449
|
||||
Finished migration PurgeInvalidWorkflowConnections1675940580449
|
||||
Starting migration MigrateExecutionStatus1676996103000
|
||||
Finished migration MigrateExecutionStatus1676996103000
|
||||
Starting migration UpdateRunningExecutionStatus1677237073720
|
||||
Finished migration UpdateRunningExecutionStatus1677237073720
|
||||
Starting migration CreateVariables1677501636752
|
||||
Finished migration CreateVariables1677501636752
|
||||
Starting migration CreateExecutionMetadataTable1679416281777
|
||||
Finished migration CreateExecutionMetadataTable1679416281777
|
||||
Starting migration AddUserActivatedProperty1681134145996
|
||||
Finished migration AddUserActivatedProperty1681134145996
|
||||
Starting migration RemoveSkipOwnerSetup1681134145997
|
||||
Finished migration RemoveSkipOwnerSetup1681134145997
|
||||
Starting migration MigrateIntegerKeysToString1690000000002
|
||||
Finished migration MigrateIntegerKeysToString1690000000002
|
||||
Starting migration SeparateExecutionData1690000000010
|
||||
Finished migration SeparateExecutionData1690000000010
|
||||
Starting migration FixMissingIndicesFromStringIdMigration1690000000020
|
||||
Finished migration FixMissingIndicesFromStringIdMigration1690000000020
|
||||
Starting migration RemoveResetPasswordColumns1690000000030
|
||||
Finished migration RemoveResetPasswordColumns1690000000030
|
||||
Starting migration AddMfaColumns1690000000030
|
||||
Finished migration AddMfaColumns1690000000030
|
||||
Starting migration CreateWorkflowNameIndex1691088862123
|
||||
Finished migration CreateWorkflowNameIndex1691088862123
|
||||
Starting migration CreateWorkflowHistoryTable1692967111175
|
||||
Finished migration CreateWorkflowHistoryTable1692967111175
|
||||
Starting migration ExecutionSoftDelete1693491613982
|
||||
Finished migration ExecutionSoftDelete1693491613982
|
||||
Starting migration DisallowOrphanExecutions1693554410387
|
||||
Finished migration DisallowOrphanExecutions1693554410387
|
||||
Starting migration AddWorkflowMetadata1695128658538
|
||||
Finished migration AddWorkflowMetadata1695128658538
|
||||
Starting migration ModifyWorkflowHistoryNodesAndConnections1695829275184
|
||||
Finished migration ModifyWorkflowHistoryNodesAndConnections1695829275184
|
||||
Starting migration AddGlobalAdminRole1700571993961
|
||||
Finished migration AddGlobalAdminRole1700571993961
|
||||
Starting migration DropRoleMapping1705429061930
|
||||
Finished migration DropRoleMapping1705429061930
|
||||
Starting migration RemoveFailedExecutionStatus1711018413374
|
||||
Finished migration RemoveFailedExecutionStatus1711018413374
|
||||
Starting migration MoveSshKeysToDatabase1711390882123
|
||||
[MoveSshKeysToDatabase1711390882123] No SSH keys in filesystem, skipping
|
||||
Finished migration MoveSshKeysToDatabase1711390882123
|
||||
Starting migration RemoveNodesAccess1712044305787
|
||||
Finished migration RemoveNodesAccess1712044305787
|
||||
Starting migration CreateProject1714133768519
|
||||
Finished migration CreateProject1714133768519
|
||||
Starting migration MakeExecutionStatusNonNullable1714133768521
|
||||
Finished migration MakeExecutionStatusNonNullable1714133768521
|
||||
Starting migration AddActivatedAtUserSetting1717498465931
|
||||
Finished migration AddActivatedAtUserSetting1717498465931
|
||||
Starting migration AddConstraintToExecutionMetadata1720101653148
|
||||
Finished migration AddConstraintToExecutionMetadata1720101653148
|
||||
Starting migration CreateInvalidAuthTokenTable1723627610222
|
||||
Finished migration CreateInvalidAuthTokenTable1723627610222
|
||||
Starting migration RefactorExecutionIndices1723796243146
|
||||
Finished migration RefactorExecutionIndices1723796243146
|
||||
Starting migration CreateAnnotationTables1724753530828
|
||||
Finished migration CreateAnnotationTables1724753530828
|
||||
Starting migration AddApiKeysTable1724951148974
|
||||
Finished migration AddApiKeysTable1724951148974
|
||||
Starting migration CreateProcessedDataTable1726606152711
|
||||
Finished migration CreateProcessedDataTable1726606152711
|
||||
Starting migration SeparateExecutionCreationFromStart1727427440136
|
||||
Finished migration SeparateExecutionCreationFromStart1727427440136
|
||||
Starting migration AddMissingPrimaryKeyOnAnnotationTagMapping1728659839644
|
||||
Finished migration AddMissingPrimaryKeyOnAnnotationTagMapping1728659839644
|
||||
Starting migration UpdateProcessedDataValueColumnToText1729607673464
|
||||
Finished migration UpdateProcessedDataValueColumnToText1729607673464
|
||||
Starting migration AddProjectIcons1729607673469
|
||||
Finished migration AddProjectIcons1729607673469
|
||||
Starting migration CreateTestDefinitionTable1730386903556
|
||||
Finished migration CreateTestDefinitionTable1730386903556
|
||||
Starting migration AddDescriptionToTestDefinition1731404028106
|
||||
Finished migration AddDescriptionToTestDefinition1731404028106
|
||||
Starting migration MigrateTestDefinitionKeyToString1731582748663
|
||||
Finished migration MigrateTestDefinitionKeyToString1731582748663
|
||||
Starting migration CreateTestMetricTable1732271325258
|
||||
Finished migration CreateTestMetricTable1732271325258
|
||||
Starting migration CreateTestRun1732549866705
|
||||
Finished migration CreateTestRun1732549866705
|
||||
Starting migration AddMockedNodesColumnToTestDefinition1733133775640
|
||||
Finished migration AddMockedNodesColumnToTestDefinition1733133775640
|
||||
Starting migration AddManagedColumnToCredentialsTable1734479635324
|
||||
Finished migration AddManagedColumnToCredentialsTable1734479635324
|
||||
Starting migration AddStatsColumnsToTestRun1736172058779
|
||||
Finished migration AddStatsColumnsToTestRun1736172058779
|
||||
Starting migration CreateTestCaseExecutionTable1736947513045
|
||||
Finished migration CreateTestCaseExecutionTable1736947513045
|
||||
Starting migration AddErrorColumnsToTestRuns1737715421462
|
||||
Finished migration AddErrorColumnsToTestRuns1737715421462
|
||||
Starting migration CreateFolderTable1738709609940
|
||||
Finished migration CreateFolderTable1738709609940
|
||||
Starting migration CreateAnalyticsTables1739549398681
|
||||
Finished migration CreateAnalyticsTables1739549398681
|
||||
Starting migration UpdateParentFolderIdColumn1740445074052
|
||||
Finished migration UpdateParentFolderIdColumn1740445074052
|
||||
Starting migration RenameAnalyticsToInsights1741167584277
|
||||
Finished migration RenameAnalyticsToInsights1741167584277
|
||||
Starting migration AddScopesColumnToApiKeys1742918400000
|
||||
Finished migration AddScopesColumnToApiKeys1742918400000
|
||||
Starting migration ClearEvaluation1745322634000
|
||||
Finished migration ClearEvaluation1745322634000
|
||||
Starting migration AddWorkflowStatisticsRootCount1745587087521
|
||||
Finished migration AddWorkflowStatisticsRootCount1745587087521
|
||||
Starting migration AddWorkflowArchivedColumn1745934666076
|
||||
Finished migration AddWorkflowArchivedColumn1745934666076
|
||||
Starting migration DropRoleTable1745934666077
|
||||
Finished migration DropRoleTable1745934666077
|
||||
Starting migration AddProjectDescriptionColumn1747824239000
|
||||
Finished migration AddProjectDescriptionColumn1747824239000
|
||||
Starting migration AddLastActiveAtColumnToUser1750252139166
|
||||
Finished migration AddLastActiveAtColumnToUser1750252139166
|
||||
Starting migration AddScopeTables1750252139166
|
||||
Finished migration AddScopeTables1750252139166
|
||||
Starting migration AddRolesTables1750252139167
|
||||
Finished migration AddRolesTables1750252139167
|
||||
Starting migration LinkRoleToUserTable1750252139168
|
||||
Finished migration LinkRoleToUserTable1750252139168
|
||||
Starting migration AddInputsOutputsToTestCaseExecution1752669793000
|
||||
Finished migration AddInputsOutputsToTestCaseExecution1752669793000
|
||||
Starting migration CreateDataStoreTables1754475614601
|
||||
Finished migration CreateDataStoreTables1754475614601
|
||||
n8n Task Broker ready on 127.0.0.1, port 5679
|
||||
Initializing AuthRolesService...
|
||||
Updating 120 scopes...
|
||||
Scopes updated successfully.
|
||||
Updating 3 global roles...
|
||||
global roles updated successfully.
|
||||
Updating 4 project roles...
|
||||
project roles updated successfully.
|
||||
Updating 2 credential roles...
|
||||
credential roles updated successfully.
|
||||
Updating 2 workflow roles...
|
||||
workflow roles updated successfully.
|
||||
AuthRolesService initialized successfully.
|
||||
[license SDK] Skipping renewal on init: license cert is not initialized
|
||||
Registered runner "JS Task Runner" (y9ljtbjF0HQIvaLhWCb84)
|
||||
Version: 1.109.2
|
||||
Locale: zh-CN
|
||||
|
||||
Editor is now accessible via:
|
||||
http://192.168.2.90:5678
|
||||
22
n8n-n8n-1.109.2/n8n-demo-20250911-172936.log
Normal file
22
n8n-n8n-1.109.2/n8n-demo-20250911-172936.log
Normal file
@@ -0,0 +1,22 @@
|
||||
|
||||
> n8n-monorepo@1.109.2 start /Users/xiaoqi/Documents/Dev/Project/2025-09-08_n8nDEMO演示/n8n-n8n-1.109.2
|
||||
> run-script-os
|
||||
|
||||
|
||||
> n8n-monorepo@1.109.2 start:default
|
||||
> cd packages/cli/bin && ./n8n
|
||||
|
||||
|
||||
/Users/xiaoqi/Documents/Dev/Project/2025-09-08_n8nDEMO演示/n8n-n8n-1.109.2/packages/core/src/instance-settings/instance-settings.ts:227
|
||||
.update(encryptionKey.slice(Math.round(encryptionKey.length / 2)))
|
||||
^
|
||||
TypeError: Cannot read properties of undefined (reading 'slice')
|
||||
at InstanceSettings.generateInstanceId (/Users/xiaoqi/Documents/Dev/Project/2025-09-08_n8nDEMO演示/n8n-n8n-1.109.2/packages/core/src/instance-settings/instance-settings.ts:227:26)
|
||||
at new InstanceSettings (/Users/xiaoqi/Documents/Dev/Project/2025-09-08_n8nDEMO演示/n8n-n8n-1.109.2/packages/core/src/instance-settings/instance-settings.ts:68:26)
|
||||
at ContainerClass.get (/Users/xiaoqi/Documents/Dev/Project/2025-09-08_n8nDEMO演示/n8n-n8n-1.109.2/packages/@n8n/di/src/di.ts:104:16)
|
||||
at CommunityPackagesModule.loadDir (/Users/xiaoqi/Documents/Dev/Project/2025-09-08_n8nDEMO演示/n8n-n8n-1.109.2/packages/cli/src/modules/community-packages/community-packages.module.ts:37:30)
|
||||
at processTicksAndRejections (node:internal/process/task_queues:105:5)
|
||||
at ModuleRegistry.loadModules (/Users/xiaoqi/Documents/Dev/Project/2025-09-08_n8nDEMO演示/n8n-n8n-1.109.2/packages/@n8n/backend-common/src/modules/module-registry.ts:92:20)
|
||||
at CommandRegistry.execute (/Users/xiaoqi/Documents/Dev/Project/2025-09-08_n8nDEMO演示/n8n-n8n-1.109.2/packages/cli/src/command-registry.ts:43:3)
|
||||
at /Users/xiaoqi/Documents/Dev/Project/2025-09-08_n8nDEMO演示/n8n-n8n-1.109.2/packages/cli/bin/n8n:63:2
|
||||
ELIFECYCLE Command failed with exit code 1.
|
||||
79
n8n-n8n-1.109.2/n8n-lan-20250911-152808.log
Normal file
79
n8n-n8n-1.109.2/n8n-lan-20250911-152808.log
Normal file
@@ -0,0 +1,79 @@
|
||||
|
||||
> n8n-monorepo@1.109.2 start /Users/xiaoqi/Documents/Dev/Project/2025-09-08_n8nDEMO演示/n8n-n8n-1.109.2
|
||||
> run-script-os
|
||||
|
||||
|
||||
> n8n-monorepo@1.109.2 start:default
|
||||
> cd packages/cli/bin && ./n8n
|
||||
|
||||
15:28:10.512 [33mwarn[39m [33mPermissions 0644 for n8n settings file /Users/xiaoqi/.n8n/config are too wide. This is ignored for now, but in the future n8n will attempt to change the permissions automatically. To automatically enforce correct permissions now set N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true (recommended), or turn this check off set N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=false.[39m { "file": "instance-settings.js", "function": "ensureSettingsFilePermissions" }
|
||||
15:28:10.513 [34mdebug[39m [34mUser settings loaded from: /Users/xiaoqi/.n8n/config[39m { "file": "instance-settings.js", "function": "loadOrCreate" }
|
||||
15:28:11.560 [34mdebug[39m [34mReceived CLI command[39m { "execPath": "/Users/xiaoqi/.nvm/versions/node/v22.18.0/bin/node", "scriptPath": "/Users/xiaoqi/Documents/Dev/Project/2025-09-08_n8nDEMO演示/n8n-n8n-1.109.2/packages/cli/bin/n8n", "args": [], "flags": { }, "file": "cli-parser.js", "function": "parse" }
|
||||
15:28:11.562 [32minfo[39m [32mInitializing n8n process[39m { "file": "start.js", "function": "init" }
|
||||
15:28:11.633 [34mdebug[39m [34mLazy-loading nodes and credentials from n8n-nodes-base[39m { "nodes": 482, "credentials": 385, "file": "lazy-package-directory-loader.js", "function": "loadAll" }
|
||||
15:28:11.639 [34mdebug[39m [34mLazy-loading nodes and credentials from @n8n/n8n-nodes-langchain[39m { "nodes": 101, "credentials": 23, "file": "lazy-package-directory-loader.js", "function": "loadAll" }
|
||||
15:28:11.753 [32minfo[39m [32mn8n ready on ::, port 5678[39m { "file": "abstract-server.js", "function": "init" }
|
||||
15:28:11.777 [32minfo[39m [32mn8n Task Broker ready on 127.0.0.1, port 5679[39m { "file": "task-broker-server.js", "function": "setupHttpServer" }
|
||||
15:28:11.829 [32minfo[39m [32mInitializing AuthRolesService...[39m { "file": "auth.roles.service.js", "function": "init" }
|
||||
15:28:11.836 [34mdebug[39m [34mNo scopes to update.[39m { "file": "auth.roles.service.js", "function": "syncScopes" }
|
||||
15:28:11.843 [34mdebug[39m [34mNo global roles to update.[39m { "file": "auth.roles.service.js", "function": "syncRoles" }
|
||||
15:28:11.844 [34mdebug[39m [34mNo project roles to update.[39m { "file": "auth.roles.service.js", "function": "syncRoles" }
|
||||
15:28:11.844 [34mdebug[39m [34mNo credential roles to update.[39m { "file": "auth.roles.service.js", "function": "syncRoles" }
|
||||
15:28:11.844 [34mdebug[39m [34mNo workflow roles to update.[39m { "file": "auth.roles.service.js", "function": "syncRoles" }
|
||||
15:28:11.844 [32minfo[39m [32mAuthRolesService initialized successfully.[39m { "file": "auth.roles.service.js", "function": "init" }
|
||||
15:28:11.846 [34mdebug[39m [34m[license SDK] initializing for deviceFingerprint ae3350da9cb7f10f65d772716d59f5bd404f92cc574010d8d1736b89b12fb451[39m { "scopes": ["license"], "file": "LicenseManager.js", "function": "log" }
|
||||
15:28:11.848 [32minfo[39m [32m[license SDK] Skipping renewal on init: license cert is not initialized[39m { "scopes": ["license"], "file": "LicenseManager.js", "function": "log" }
|
||||
15:28:11.848 [34mdebug[39m [34mLicense initialized[39m { "scopes": ["license"], "file": "license.js", "function": "init" }
|
||||
15:28:11.848 [34mdebug[39m [34mQuerying database for waiting executions[39m { "scopes": ["waiting-executions"], "file": "wait-tracker.js", "function": "getWaitingExecutions" }
|
||||
15:28:11.849 [34mdebug[39m [34mStarted tracking waiting executions[39m { "scopes": ["waiting-executions"], "file": "wait-tracker.js", "function": "startTracking" }
|
||||
15:28:11.849 [34mdebug[39m [34mWait tracker init complete[39m { "file": "start.js", "function": "init" }
|
||||
15:28:11.851 [34mdebug[39m [34mBinary data service init complete[39m { "file": "start.js", "function": "init" }
|
||||
15:28:11.851 [34mdebug[39m [34mData deduplication service init complete[39m { "file": "start.js", "function": "init" }
|
||||
15:28:11.852 [34mdebug[39m [34mExternal hooks init complete[39m { "file": "start.js", "function": "init" }
|
||||
15:28:11.852 [34mdebug[39m [34mWorkflow history init complete[39m { "file": "start.js", "function": "init" }
|
||||
15:28:11.855 [34mdebug[39m [34mTest runner cleanup complete[39m { "file": "start.js", "function": "init" }
|
||||
15:28:12.245 [34mdebug[39m [34mStarted flushing timer[39m { "scopes": ["insights"], "file": "insights-collection.service.js", "function": "startFlushingTimer" }
|
||||
15:28:12.245 [34mdebug[39m [34mStarted compaction timer[39m { "scopes": ["insights"], "file": "insights-compaction.service.js", "function": "startCompactionTimer" }
|
||||
15:28:12.245 [34mdebug[39m [34mStarted pruning timer[39m { "scopes": ["insights"], "file": "insights-pruning.service.js", "function": "startPruningTimer" }
|
||||
15:28:12.245 [34mdebug[39m [34mInitialized module "insights"[39m { "file": "module-registry.js", "function": "initModules" }
|
||||
15:28:12.245 [34mdebug[39m [34mSkipped init for unlicensed module "external-secrets"[39m { "file": "module-registry.js", "function": "initModules" }
|
||||
15:28:12.248 [34mdebug[39m [34mInitialized module "community-packages"[39m { "file": "module-registry.js", "function": "initModules" }
|
||||
15:28:12.663 [32minfo[39m [32mRegistered runner "JS Task Runner" (3G5_GxmpWdyA8rSpLiYT0) [39m { "file": "task-broker-ws-server.js", "function": "onMessage" }
|
||||
15:28:12.951 [34mdebug[39m [34mOIDC login is disabled.[39m { "file": "oidc.service.ee.js", "function": "init" }
|
||||
15:28:12.971 [34mdebug[39m [34mInitializing event bus...[39m { "file": "message-event-bus.js", "function": "initialize" }
|
||||
15:28:12.974 [34mdebug[39m [34mInitializing event writer[39m { "file": "message-event-bus.js", "function": "initialize" }
|
||||
15:28:12.975 [34mdebug[39m [34mChecking for unsent event messages[39m { "file": "message-event-bus.js", "function": "initialize" }
|
||||
15:28:12.976 [34mdebug[39m [34mStart logging into /Users/xiaoqi/.n8n/n8nEventLog.log [39m { "file": "message-event-bus.js", "function": "initialize" }
|
||||
15:28:12.977 [34mdebug[39m [34mMessageEventBus initialized[39m { "file": "message-event-bus.js", "function": "initialize" }
|
||||
15:28:12.977 [32minfo[39m [32mVersion: 1.109.2[39m { "file": "abstract-server.js", "function": "start" }
|
||||
15:28:12.978 [32minfo[39m [32mLocale: zh-CN[39m { "file": "abstract-server.js", "function": "start" }
|
||||
15:28:12.978 [34mdebug[39m [34mServer ID: main-B8vKucS2vNrm2HFN[39m { "file": "server.js", "function": "start" }
|
||||
15:28:12.978 [34mdebug[39m [34mSoft-deletion every 60 minutes[39m { "scopes": ["pruning"], "file": "executions-pruning.service.js", "function": "scheduleRollingSoftDeletions" }
|
||||
15:28:12.978 [34mdebug[39m [34mHard-deletion in next 15 minutes[39m { "scopes": ["pruning"], "file": "executions-pruning.service.js", "function": "scheduleNextHardDeletion" }
|
||||
15:28:12.978 [34mdebug[39m [34mStarted pruning timers[39m { "scopes": ["pruning"], "file": "executions-pruning.service.js", "function": "startPruning" }
|
||||
2025-09-11T07:28:12.980Z [Rudder] debug: in flush
|
||||
2025-09-11T07:28:12.981Z [Rudder] debug: no existing flush timer, creating new one
|
||||
15:28:13.006 [32minfo[39m [32m[39m
|
||||
[32mEditor is now accessible via:[39m
|
||||
[32mhttp://192.168.2.90:5678[39m { "file": "base-command.js", "function": "log" }
|
||||
15:28:16.129 [34mdebug[39m [34mSkipped browserId check on /rest/push[39m { "file": "auth.service.js", "function": "resolveJwt" }
|
||||
15:28:16.130 [34mdebug[39m [34mAdd editor-UI session[39m { "pushRef": "9pqpx0tz24", "file": "abstract.push.js", "function": "add" }
|
||||
2025-09-11T07:28:22.983Z [Rudder] debug: in flush
|
||||
2025-09-11T07:28:22.984Z [Rudder] debug: cancelling existing flushTimer...
|
||||
15:29:11.848 [34mdebug[39m [34mQuerying database for waiting executions[39m { "scopes": ["waiting-executions"], "file": "wait-tracker.js", "function": "getWaitingExecutions" }
|
||||
(node:2116) [DEP0060] DeprecationWarning: The `util._extend` API is deprecated. Please use Object.assign() instead.
|
||||
(Use `node --trace-deprecation ...` to show where the warning was created)
|
||||
15:30:11.847 [34mdebug[39m [34mQuerying database for waiting executions[39m { "scopes": ["waiting-executions"], "file": "wait-tracker.js", "function": "getWaitingExecutions" }
|
||||
2025-09-11T07:31:10.881Z [Rudder] debug: no existing flush timer, creating new one
|
||||
15:31:11.599 [34mdebug[39m [34mSkipped browserId check on /rest/push[39m { "file": "auth.service.js", "function": "resolveJwt" }
|
||||
15:31:11.599 [34mdebug[39m [34mAdd editor-UI session[39m { "pushRef": "f8wwyvn8h5", "file": "abstract.push.js", "function": "add" }
|
||||
15:31:11.847 [34mdebug[39m [34mQuerying database for waiting executions[39m { "scopes": ["waiting-executions"], "file": "wait-tracker.js", "function": "getWaitingExecutions" }
|
||||
2025-09-11T07:31:20.882Z [Rudder] debug: in flush
|
||||
2025-09-11T07:31:20.882Z [Rudder] debug: cancelling existing flushTimer...
|
||||
15:32:11.849 [34mdebug[39m [34mQuerying database for waiting executions[39m { "scopes": ["waiting-executions"], "file": "wait-tracker.js", "function": "getWaitingExecutions" }
|
||||
15:33:11.851 [34mdebug[39m [34mQuerying database for waiting executions[39m { "scopes": ["waiting-executions"], "file": "wait-tracker.js", "function": "getWaitingExecutions" }
|
||||
15:34:11.851 [34mdebug[39m [34mQuerying database for waiting executions[39m { "scopes": ["waiting-executions"], "file": "wait-tracker.js", "function": "getWaitingExecutions" }
|
||||
15:35:11.852 [34mdebug[39m [34mQuerying database for waiting executions[39m { "scopes": ["waiting-executions"], "file": "wait-tracker.js", "function": "getWaitingExecutions" }
|
||||
15:36:11.852 [34mdebug[39m [34mQuerying database for waiting executions[39m { "scopes": ["waiting-executions"], "file": "wait-tracker.js", "function": "getWaitingExecutions" }
|
||||
sh: line 1: 2116 Killed: 9 ./n8n
|
||||
ELIFECYCLE Command failed with exit code 137.
|
||||
64
n8n-n8n-1.109.2/n8n-lan-20250911-171831.log
Normal file
64
n8n-n8n-1.109.2/n8n-lan-20250911-171831.log
Normal file
@@ -0,0 +1,64 @@
|
||||
|
||||
> n8n-monorepo@1.109.2 start /Users/xiaoqi/Documents/Dev/Project/2025-09-08_n8nDEMO演示/n8n-n8n-1.109.2
|
||||
> run-script-os
|
||||
|
||||
|
||||
> n8n-monorepo@1.109.2 start:default
|
||||
> cd packages/cli/bin && ./n8n
|
||||
|
||||
17:18:33.626 [33mwarn[39m [33mPermissions 0644 for n8n settings file /Users/xiaoqi/.n8n/config are too wide. This is ignored for now, but in the future n8n will attempt to change the permissions automatically. To automatically enforce correct permissions now set N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true (recommended), or turn this check off set N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=false.[39m { "file": "instance-settings.js", "function": "ensureSettingsFilePermissions" }
|
||||
17:18:33.628 [34mdebug[39m [34mUser settings loaded from: /Users/xiaoqi/.n8n/config[39m { "file": "instance-settings.js", "function": "loadOrCreate" }
|
||||
17:18:34.634 [34mdebug[39m [34mReceived CLI command[39m { "execPath": "/Users/xiaoqi/.nvm/versions/node/v22.18.0/bin/node", "scriptPath": "/Users/xiaoqi/Documents/Dev/Project/2025-09-08_n8nDEMO演示/n8n-n8n-1.109.2/packages/cli/bin/n8n", "args": [], "flags": { }, "file": "cli-parser.js", "function": "parse" }
|
||||
17:18:34.636 [32minfo[39m [32mInitializing n8n process[39m { "file": "start.js", "function": "init" }
|
||||
17:18:34.705 [34mdebug[39m [34mLazy-loading nodes and credentials from n8n-nodes-base[39m { "nodes": 482, "credentials": 385, "file": "lazy-package-directory-loader.js", "function": "loadAll" }
|
||||
17:18:34.712 [34mdebug[39m [34mLazy-loading nodes and credentials from @n8n/n8n-nodes-langchain[39m { "nodes": 101, "credentials": 23, "file": "lazy-package-directory-loader.js", "function": "loadAll" }
|
||||
17:18:34.834 [32minfo[39m [32mn8n ready on ::, port 5678[39m { "file": "abstract-server.js", "function": "init" }
|
||||
17:18:34.858 [32minfo[39m [32mn8n Task Broker ready on 127.0.0.1, port 5679[39m { "file": "task-broker-server.js", "function": "setupHttpServer" }
|
||||
17:18:34.902 [32minfo[39m [32mInitializing AuthRolesService...[39m { "file": "auth.roles.service.js", "function": "init" }
|
||||
17:18:34.906 [34mdebug[39m [34mNo scopes to update.[39m { "file": "auth.roles.service.js", "function": "syncScopes" }
|
||||
17:18:34.912 [34mdebug[39m [34mNo global roles to update.[39m { "file": "auth.roles.service.js", "function": "syncRoles" }
|
||||
17:18:34.912 [34mdebug[39m [34mNo project roles to update.[39m { "file": "auth.roles.service.js", "function": "syncRoles" }
|
||||
17:18:34.912 [34mdebug[39m [34mNo credential roles to update.[39m { "file": "auth.roles.service.js", "function": "syncRoles" }
|
||||
17:18:34.912 [34mdebug[39m [34mNo workflow roles to update.[39m { "file": "auth.roles.service.js", "function": "syncRoles" }
|
||||
17:18:34.912 [32minfo[39m [32mAuthRolesService initialized successfully.[39m { "file": "auth.roles.service.js", "function": "init" }
|
||||
17:18:34.913 [34mdebug[39m [34m[license SDK] initializing for deviceFingerprint ae3350da9cb7f10f65d772716d59f5bd404f92cc574010d8d1736b89b12fb451[39m { "scopes": ["license"], "file": "LicenseManager.js", "function": "log" }
|
||||
17:18:34.914 [32minfo[39m [32m[license SDK] Skipping renewal on init: license cert is not initialized[39m { "scopes": ["license"], "file": "LicenseManager.js", "function": "log" }
|
||||
17:18:34.914 [34mdebug[39m [34mLicense initialized[39m { "scopes": ["license"], "file": "license.js", "function": "init" }
|
||||
17:18:34.914 [34mdebug[39m [34mQuerying database for waiting executions[39m { "scopes": ["waiting-executions"], "file": "wait-tracker.js", "function": "getWaitingExecutions" }
|
||||
17:18:34.915 [34mdebug[39m [34mStarted tracking waiting executions[39m { "scopes": ["waiting-executions"], "file": "wait-tracker.js", "function": "startTracking" }
|
||||
17:18:34.915 [34mdebug[39m [34mWait tracker init complete[39m { "file": "start.js", "function": "init" }
|
||||
17:18:34.917 [34mdebug[39m [34mBinary data service init complete[39m { "file": "start.js", "function": "init" }
|
||||
17:18:34.917 [34mdebug[39m [34mData deduplication service init complete[39m { "file": "start.js", "function": "init" }
|
||||
17:18:34.917 [34mdebug[39m [34mExternal hooks init complete[39m { "file": "start.js", "function": "init" }
|
||||
17:18:34.917 [34mdebug[39m [34mWorkflow history init complete[39m { "file": "start.js", "function": "init" }
|
||||
17:18:34.919 [34mdebug[39m [34mTest runner cleanup complete[39m { "file": "start.js", "function": "init" }
|
||||
17:18:35.232 [34mdebug[39m [34mStarted flushing timer[39m { "scopes": ["insights"], "file": "insights-collection.service.js", "function": "startFlushingTimer" }
|
||||
17:18:35.233 [34mdebug[39m [34mStarted compaction timer[39m { "scopes": ["insights"], "file": "insights-compaction.service.js", "function": "startCompactionTimer" }
|
||||
17:18:35.233 [34mdebug[39m [34mStarted pruning timer[39m { "scopes": ["insights"], "file": "insights-pruning.service.js", "function": "startPruningTimer" }
|
||||
17:18:35.233 [34mdebug[39m [34mInitialized module "insights"[39m { "file": "module-registry.js", "function": "initModules" }
|
||||
17:18:35.233 [34mdebug[39m [34mSkipped init for unlicensed module "external-secrets"[39m { "file": "module-registry.js", "function": "initModules" }
|
||||
17:18:35.236 [34mdebug[39m [34mInitialized module "community-packages"[39m { "file": "module-registry.js", "function": "initModules" }
|
||||
17:18:35.532 [32minfo[39m [32mRegistered runner "JS Task Runner" (6ddx_e3bRtA0JIeFrYegv) [39m { "file": "task-broker-ws-server.js", "function": "onMessage" }
|
||||
17:18:35.705 [34mdebug[39m [34mOIDC login is disabled.[39m { "file": "oidc.service.ee.js", "function": "init" }
|
||||
17:18:35.727 [34mdebug[39m [34mInitializing event bus...[39m { "file": "message-event-bus.js", "function": "initialize" }
|
||||
17:18:35.730 [34mdebug[39m [34mInitializing event writer[39m { "file": "message-event-bus.js", "function": "initialize" }
|
||||
17:18:35.731 [34mdebug[39m [34mChecking for unsent event messages[39m { "file": "message-event-bus.js", "function": "initialize" }
|
||||
17:18:35.746 [34mdebug[39m [34mStart logging into /Users/xiaoqi/.n8n/n8nEventLog.log [39m { "file": "message-event-bus.js", "function": "initialize" }
|
||||
17:18:35.747 [34mdebug[39m [34mMessageEventBus initialized[39m { "file": "message-event-bus.js", "function": "initialize" }
|
||||
17:18:35.748 [32minfo[39m [32mVersion: 1.109.2[39m { "file": "abstract-server.js", "function": "start" }
|
||||
17:18:35.748 [32minfo[39m [32mLocale: zh-CN[39m { "file": "abstract-server.js", "function": "start" }
|
||||
17:18:35.748 [34mdebug[39m [34mServer ID: main-j8W4blAUcFAaagOo[39m { "file": "server.js", "function": "start" }
|
||||
17:18:35.748 [34mdebug[39m [34mSoft-deletion every 60 minutes[39m { "scopes": ["pruning"], "file": "executions-pruning.service.js", "function": "scheduleRollingSoftDeletions" }
|
||||
17:18:35.748 [34mdebug[39m [34mHard-deletion in next 15 minutes[39m { "scopes": ["pruning"], "file": "executions-pruning.service.js", "function": "scheduleNextHardDeletion" }
|
||||
17:18:35.748 [34mdebug[39m [34mStarted pruning timers[39m { "scopes": ["pruning"], "file": "executions-pruning.service.js", "function": "startPruning" }
|
||||
2025-09-11T09:18:35.750Z [Rudder] debug: in flush
|
||||
2025-09-11T09:18:35.751Z [Rudder] debug: no existing flush timer, creating new one
|
||||
17:18:35.776 [32minfo[39m [32m[39m
|
||||
[32mEditor is now accessible via:[39m
|
||||
[32mhttp://192.168.2.90:5678[39m { "file": "base-command.js", "function": "log" }
|
||||
17:18:40.207 [34mdebug[39m [34mSkipped browserId check on /rest/push[39m { "file": "auth.service.js", "function": "resolveJwt" }
|
||||
17:18:40.208 [34mdebug[39m [34mAdd editor-UI session[39m { "pushRef": "9pqpx0tz24", "file": "abstract.push.js", "function": "add" }
|
||||
2025-09-11T09:18:45.752Z [Rudder] debug: in flush
|
||||
2025-09-11T09:18:45.752Z [Rudder] debug: cancelling existing flushTimer...
|
||||
(node:88836) [DEP0060] DeprecationWarning: The `util._extend` API is deprecated. Please use Object.assign() instead.
|
||||
(Use `node --trace-deprecation ...` to show where the warning was created)
|
||||
288
n8n-n8n-1.109.2/n8n-lan-20250911-172047.log
Normal file
288
n8n-n8n-1.109.2/n8n-lan-20250911-172047.log
Normal file
@@ -0,0 +1,288 @@
|
||||
|
||||
> n8n-monorepo@1.109.2 start /Users/xiaoqi/Documents/Dev/Project/2025-09-08_n8nDEMO演示/n8n-n8n-1.109.2
|
||||
> run-script-os
|
||||
|
||||
|
||||
> n8n-monorepo@1.109.2 start:default
|
||||
> cd packages/cli/bin && ./n8n
|
||||
|
||||
17:20:48.648 [33mwarn[39m [33mPermissions 0644 for n8n settings file /Users/xiaoqi/.n8n/config are too wide. This is ignored for now, but in the future n8n will attempt to change the permissions automatically. To automatically enforce correct permissions now set N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true (recommended), or turn this check off set N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=false.[39m { "file": "instance-settings.js", "function": "ensureSettingsFilePermissions" }
|
||||
17:20:48.649 [34mdebug[39m [34mUser settings loaded from: /Users/xiaoqi/.n8n/config[39m { "file": "instance-settings.js", "function": "loadOrCreate" }
|
||||
17:20:49.385 [34mdebug[39m [34mReceived CLI command[39m { "execPath": "/Users/xiaoqi/.nvm/versions/node/v22.18.0/bin/node", "scriptPath": "/Users/xiaoqi/Documents/Dev/Project/2025-09-08_n8nDEMO演示/n8n-n8n-1.109.2/packages/cli/bin/n8n", "args": [], "flags": { }, "file": "cli-parser.js", "function": "parse" }
|
||||
17:20:49.387 [32minfo[39m [32mInitializing n8n process[39m { "file": "start.js", "function": "init" }
|
||||
17:20:49.450 [34mdebug[39m [34mLazy-loading nodes and credentials from n8n-nodes-base[39m { "nodes": 482, "credentials": 385, "file": "lazy-package-directory-loader.js", "function": "loadAll" }
|
||||
17:20:49.456 [34mdebug[39m [34mLazy-loading nodes and credentials from @n8n/n8n-nodes-langchain[39m { "nodes": 101, "credentials": 23, "file": "lazy-package-directory-loader.js", "function": "loadAll" }
|
||||
17:20:49.562 [32minfo[39m [32mn8n ready on ::, port 5678[39m { "file": "abstract-server.js", "function": "init" }
|
||||
17:20:49.570 [33mwarn[39m [33mMigrations in progress, please do NOT stop the process.[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.570 [32minfo[39m [32mStarting migration InitialMigration1588102412422[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.571 [32minfo[39m [32mFinished migration InitialMigration1588102412422[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.573 [32minfo[39m [32mStarting migration WebhookModel1592445003908[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.574 [32minfo[39m [32mFinished migration WebhookModel1592445003908[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.574 [32minfo[39m [32mStarting migration CreateIndexStoppedAt1594825041918[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.575 [32minfo[39m [32mFinished migration CreateIndexStoppedAt1594825041918[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.575 [32minfo[39m [32mStarting migration MakeStoppedAtNullable1607431743769[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.575 [32minfo[39m [32mFinished migration MakeStoppedAtNullable1607431743769[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.576 [32minfo[39m [32mStarting migration AddWebhookId1611071044839[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.577 [32minfo[39m [32mFinished migration AddWebhookId1611071044839[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.578 [32minfo[39m [32mStarting migration CreateTagEntity1617213344594[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.580 [32minfo[39m [32mFinished migration CreateTagEntity1617213344594[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.581 [32minfo[39m [32mStarting migration UniqueWorkflowNames1620821879465[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.581 [32minfo[39m [32mFinished migration UniqueWorkflowNames1620821879465[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.582 [32minfo[39m [32mStarting migration AddWaitColumn1621707690587[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.583 [32minfo[39m [32mFinished migration AddWaitColumn1621707690587[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.583 [32minfo[39m [32mStarting migration UpdateWorkflowCredentials1630330987096[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.584 [32minfo[39m [32mFinished migration UpdateWorkflowCredentials1630330987096[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.585 [32minfo[39m [32mStarting migration AddExecutionEntityIndexes1644421939510[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.585 [32minfo[39m [32mFinished migration AddExecutionEntityIndexes1644421939510[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.586 [32minfo[39m [32mStarting migration CreateUserManagement1646992772331[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.588 [32minfo[39m [32mFinished migration CreateUserManagement1646992772331[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.589 [32minfo[39m [32mStarting migration LowerCaseUserEmail1648740597343[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.589 [32minfo[39m [32mFinished migration LowerCaseUserEmail1648740597343[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.589 [32minfo[39m [32mStarting migration CommunityNodes1652254514001[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.589 [32minfo[39m [32mFinished migration CommunityNodes1652254514001[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.590 [32minfo[39m [32mStarting migration AddUserSettings1652367743993[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.591 [32minfo[39m [32mFinished migration AddUserSettings1652367743993[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.591 [32minfo[39m [32mStarting migration AddAPIKeyColumn1652905585850[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.592 [32minfo[39m [32mFinished migration AddAPIKeyColumn1652905585850[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.593 [32minfo[39m [32mStarting migration IntroducePinData1654089251344[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.593 [32minfo[39m [32mFinished migration IntroducePinData1654089251344[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.594 [32minfo[39m [32mStarting migration AddNodeIds1658930531669[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.594 [32minfo[39m [32mFinished migration AddNodeIds1658930531669[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.594 [32minfo[39m [32mStarting migration AddJsonKeyPinData1659888469333[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.594 [32minfo[39m [32mFinished migration AddJsonKeyPinData1659888469333[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.595 [32minfo[39m [32mStarting migration CreateCredentialsUserRole1660062385367[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.595 [32minfo[39m [32mFinished migration CreateCredentialsUserRole1660062385367[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.595 [32minfo[39m [32mStarting migration CreateWorkflowsEditorRole1663755770892[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.595 [32minfo[39m [32mFinished migration CreateWorkflowsEditorRole1663755770892[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.596 [32minfo[39m [32mStarting migration WorkflowStatistics1664196174000[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.596 [32minfo[39m [32mFinished migration WorkflowStatistics1664196174000[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.597 [32minfo[39m [32mStarting migration CreateCredentialUsageTable1665484192211[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.597 [32minfo[39m [32mFinished migration CreateCredentialUsageTable1665484192211[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.597 [32minfo[39m [32mStarting migration RemoveCredentialUsageTable1665754637024[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.597 [32minfo[39m [32mFinished migration RemoveCredentialUsageTable1665754637024[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.598 [32minfo[39m [32mStarting migration AddWorkflowVersionIdColumn1669739707124[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.598 [32minfo[39m [32mFinished migration AddWorkflowVersionIdColumn1669739707124[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.598 [32minfo[39m [32mStarting migration AddTriggerCountColumn1669823906993[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.599 [32minfo[39m [32mFinished migration AddTriggerCountColumn1669823906993[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.599 [32minfo[39m [32mStarting migration MessageEventBusDestinations1671535397530[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.599 [32minfo[39m [32mFinished migration MessageEventBusDestinations1671535397530[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.600 [32minfo[39m [32mStarting migration RemoveWorkflowDataLoadedFlag1671726148419[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.600 [32minfo[39m [32mFinished migration RemoveWorkflowDataLoadedFlag1671726148419[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.601 [32minfo[39m [32mStarting migration DeleteExecutionsWithWorkflows1673268682475[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.602 [32minfo[39m [32mFinished migration DeleteExecutionsWithWorkflows1673268682475[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.603 [32minfo[39m [32mStarting migration AddStatusToExecutions1674138566000[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.603 [32minfo[39m [32mFinished migration AddStatusToExecutions1674138566000[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.604 [32minfo[39m [32mStarting migration CreateLdapEntities1674509946020[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.604 [32minfo[39m [32mFinished migration CreateLdapEntities1674509946020[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.604 [32minfo[39m [32mStarting migration PurgeInvalidWorkflowConnections1675940580449[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.605 [32minfo[39m [32mFinished migration PurgeInvalidWorkflowConnections1675940580449[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.606 [32minfo[39m [32mStarting migration MigrateExecutionStatus1676996103000[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.606 [32minfo[39m [32mFinished migration MigrateExecutionStatus1676996103000[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.606 [32minfo[39m [32mStarting migration UpdateRunningExecutionStatus1677237073720[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.607 [32minfo[39m [32mFinished migration UpdateRunningExecutionStatus1677237073720[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.607 [32minfo[39m [32mStarting migration CreateVariables1677501636752[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.607 [32minfo[39m [32mFinished migration CreateVariables1677501636752[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.607 [32minfo[39m [32mStarting migration CreateExecutionMetadataTable1679416281777[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.608 [32minfo[39m [32mFinished migration CreateExecutionMetadataTable1679416281777[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.608 [32minfo[39m [32mStarting migration AddUserActivatedProperty1681134145996[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.609 [32minfo[39m [32mFinished migration AddUserActivatedProperty1681134145996[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.609 [32minfo[39m [32mStarting migration RemoveSkipOwnerSetup1681134145997[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.609 [32minfo[39m [32mFinished migration RemoveSkipOwnerSetup1681134145997[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.609 [32minfo[39m [32mStarting migration MigrateIntegerKeysToString1690000000002[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.610 [34mdebug[39m [34mPruning was requested, but was not enabled[39m { "file": "1690000000002-MigrateIntegerKeysToString.js", "function": "pruneExecutionsData" }
|
||||
17:20:49.619 [32minfo[39m [32mFinished migration MigrateIntegerKeysToString1690000000002[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.620 [32minfo[39m [32mStarting migration SeparateExecutionData1690000000010[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.622 [32minfo[39m [32mFinished migration SeparateExecutionData1690000000010[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.622 [32minfo[39m [32mStarting migration FixMissingIndicesFromStringIdMigration1690000000020[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.622 [32minfo[39m [32mFinished migration FixMissingIndicesFromStringIdMigration1690000000020[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.623 [32minfo[39m [32mStarting migration RemoveResetPasswordColumns1690000000030[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.627 [32minfo[39m [32mFinished migration RemoveResetPasswordColumns1690000000030[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.628 [32minfo[39m [32mStarting migration AddMfaColumns1690000000030[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.630 [32minfo[39m [32mFinished migration AddMfaColumns1690000000030[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.630 [32minfo[39m [32mStarting migration CreateWorkflowNameIndex1691088862123[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.631 [32minfo[39m [32mFinished migration CreateWorkflowNameIndex1691088862123[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.631 [32minfo[39m [32mStarting migration CreateWorkflowHistoryTable1692967111175[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.632 [32minfo[39m [32mFinished migration CreateWorkflowHistoryTable1692967111175[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.632 [32minfo[39m [32mStarting migration ExecutionSoftDelete1693491613982[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.635 [32minfo[39m [32mFinished migration ExecutionSoftDelete1693491613982[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.636 [32minfo[39m [32mStarting migration DisallowOrphanExecutions1693554410387[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.639 [32minfo[39m [32mFinished migration DisallowOrphanExecutions1693554410387[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.641 [32minfo[39m [32mStarting migration AddWorkflowMetadata1695128658538[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.642 [32minfo[39m [32mFinished migration AddWorkflowMetadata1695128658538[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.643 [32minfo[39m [32mStarting migration ModifyWorkflowHistoryNodesAndConnections1695829275184[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.646 [32minfo[39m [32mFinished migration ModifyWorkflowHistoryNodesAndConnections1695829275184[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.647 [32minfo[39m [32mStarting migration AddGlobalAdminRole1700571993961[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.647 [32minfo[39m [32mFinished migration AddGlobalAdminRole1700571993961[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.647 [32minfo[39m [32mStarting migration DropRoleMapping1705429061930[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.665 [32minfo[39m [32mFinished migration DropRoleMapping1705429061930[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.665 [32minfo[39m [32mStarting migration RemoveFailedExecutionStatus1711018413374[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.666 [32minfo[39m [32mFinished migration RemoveFailedExecutionStatus1711018413374[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.666 [32minfo[39m [32mStarting migration MoveSshKeysToDatabase1711390882123[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.666 [32minfo[39m [32m[MoveSshKeysToDatabase1711390882123] No SSH keys in filesystem, skipping[39m { "file": "1711390882123-MoveSshKeysToDatabase.js", "function": "up" }
|
||||
17:20:49.666 [32minfo[39m [32mFinished migration MoveSshKeysToDatabase1711390882123[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.667 [32minfo[39m [32mStarting migration RemoveNodesAccess1712044305787[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.668 [32minfo[39m [32mFinished migration RemoveNodesAccess1712044305787[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.669 [32minfo[39m [32mStarting migration CreateProject1714133768519[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.681 [32minfo[39m [32mFinished migration CreateProject1714133768519[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.682 [32minfo[39m [32mStarting migration MakeExecutionStatusNonNullable1714133768521[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.684 [32minfo[39m [32mFinished migration MakeExecutionStatusNonNullable1714133768521[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.684 [32minfo[39m [32mStarting migration AddActivatedAtUserSetting1717498465931[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.685 [32minfo[39m [32mFinished migration AddActivatedAtUserSetting1717498465931[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.685 [32minfo[39m [32mStarting migration AddConstraintToExecutionMetadata1720101653148[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.687 [32minfo[39m [32mFinished migration AddConstraintToExecutionMetadata1720101653148[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.687 [32minfo[39m [32mStarting migration CreateInvalidAuthTokenTable1723627610222[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.687 [32minfo[39m [32mFinished migration CreateInvalidAuthTokenTable1723627610222[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.688 [32minfo[39m [32mStarting migration RefactorExecutionIndices1723796243146[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.689 [32minfo[39m [32mFinished migration RefactorExecutionIndices1723796243146[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.689 [32minfo[39m [32mStarting migration CreateAnnotationTables1724753530828[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.690 [32minfo[39m [32mFinished migration CreateAnnotationTables1724753530828[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.690 [32minfo[39m [32mStarting migration AddApiKeysTable1724951148974[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.692 [32minfo[39m [32mFinished migration AddApiKeysTable1724951148974[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.693 [32minfo[39m [32mStarting migration CreateProcessedDataTable1726606152711[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.693 [32minfo[39m [32mFinished migration CreateProcessedDataTable1726606152711[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.694 [32minfo[39m [32mStarting migration SeparateExecutionCreationFromStart1727427440136[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.697 [32minfo[39m [32mFinished migration SeparateExecutionCreationFromStart1727427440136[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.697 [32minfo[39m [32mStarting migration AddMissingPrimaryKeyOnAnnotationTagMapping1728659839644[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.698 [32minfo[39m [32mFinished migration AddMissingPrimaryKeyOnAnnotationTagMapping1728659839644[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.698 [32minfo[39m [32mStarting migration UpdateProcessedDataValueColumnToText1729607673464[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.702 [32minfo[39m [32mFinished migration UpdateProcessedDataValueColumnToText1729607673464[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.703 [32minfo[39m [32mStarting migration AddProjectIcons1729607673469[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.705 [32minfo[39m [32mFinished migration AddProjectIcons1729607673469[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.705 [32minfo[39m [32mStarting migration CreateTestDefinitionTable1730386903556[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.706 [32minfo[39m [32mFinished migration CreateTestDefinitionTable1730386903556[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.706 [32minfo[39m [32mStarting migration AddDescriptionToTestDefinition1731404028106[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.708 [32minfo[39m [32mFinished migration AddDescriptionToTestDefinition1731404028106[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.708 [32minfo[39m [32mStarting migration MigrateTestDefinitionKeyToString1731582748663[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.710 [32minfo[39m [32mFinished migration MigrateTestDefinitionKeyToString1731582748663[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.711 [32minfo[39m [32mStarting migration CreateTestMetricTable1732271325258[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.711 [32minfo[39m [32mFinished migration CreateTestMetricTable1732271325258[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.711 [32minfo[39m [32mStarting migration CreateTestRun1732549866705[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.712 [32minfo[39m [32mFinished migration CreateTestRun1732549866705[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.712 [32minfo[39m [32mStarting migration AddMockedNodesColumnToTestDefinition1733133775640[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.713 [32minfo[39m [32mFinished migration AddMockedNodesColumnToTestDefinition1733133775640[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.713 [32minfo[39m [32mStarting migration AddManagedColumnToCredentialsTable1734479635324[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.714 [32minfo[39m [32mFinished migration AddManagedColumnToCredentialsTable1734479635324[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.714 [32minfo[39m [32mStarting migration AddStatsColumnsToTestRun1736172058779[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.716 [32minfo[39m [32mFinished migration AddStatsColumnsToTestRun1736172058779[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.717 [32minfo[39m [32mStarting migration CreateTestCaseExecutionTable1736947513045[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.717 [32minfo[39m [32mFinished migration CreateTestCaseExecutionTable1736947513045[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.718 [32minfo[39m [32mStarting migration AddErrorColumnsToTestRuns1737715421462[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.719 [32minfo[39m [32mFinished migration AddErrorColumnsToTestRuns1737715421462[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.721 [32minfo[39m [32mStarting migration CreateFolderTable1738709609940[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.722 [32minfo[39m [32mFinished migration CreateFolderTable1738709609940[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.723 [32minfo[39m [32mStarting migration CreateAnalyticsTables1739549398681[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.723 [32minfo[39m [32mFinished migration CreateAnalyticsTables1739549398681[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.724 [32minfo[39m [32mStarting migration UpdateParentFolderIdColumn1740445074052[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.726 [32minfo[39m [32mFinished migration UpdateParentFolderIdColumn1740445074052[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.726 [32minfo[39m [32mStarting migration RenameAnalyticsToInsights1741167584277[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.729 [32minfo[39m [32mFinished migration RenameAnalyticsToInsights1741167584277[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.730 [32minfo[39m [32mStarting migration AddScopesColumnToApiKeys1742918400000[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.733 [32minfo[39m [32mFinished migration AddScopesColumnToApiKeys1742918400000[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.733 [32minfo[39m [32mStarting migration ClearEvaluation1745322634000[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.736 [32minfo[39m [32mFinished migration ClearEvaluation1745322634000[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.736 [32minfo[39m [32mStarting migration AddWorkflowStatisticsRootCount1745587087521[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.737 [32minfo[39m [32mFinished migration AddWorkflowStatisticsRootCount1745587087521[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.737 [32minfo[39m [32mStarting migration AddWorkflowArchivedColumn1745934666076[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.738 [32minfo[39m [32mFinished migration AddWorkflowArchivedColumn1745934666076[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.739 [32minfo[39m [32mStarting migration DropRoleTable1745934666077[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.739 [32minfo[39m [32mFinished migration DropRoleTable1745934666077[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.740 [32minfo[39m [32mStarting migration AddProjectDescriptionColumn1747824239000[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.740 [32minfo[39m [32mFinished migration AddProjectDescriptionColumn1747824239000[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.741 [32minfo[39m [32mStarting migration AddLastActiveAtColumnToUser1750252139166[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.741 [32minfo[39m [32mFinished migration AddLastActiveAtColumnToUser1750252139166[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.742 [32minfo[39m [32mStarting migration AddScopeTables1750252139166[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.742 [32minfo[39m [32mFinished migration AddScopeTables1750252139166[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.743 [32minfo[39m [32mStarting migration AddRolesTables1750252139167[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.744 [32minfo[39m [32mFinished migration AddRolesTables1750252139167[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.744 [32minfo[39m [32mStarting migration LinkRoleToUserTable1750252139168[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.749 [32minfo[39m [32mFinished migration LinkRoleToUserTable1750252139168[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.750 [32minfo[39m [32mStarting migration AddInputsOutputsToTestCaseExecution1752669793000[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.752 [32minfo[39m [32mFinished migration AddInputsOutputsToTestCaseExecution1752669793000[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.752 [32minfo[39m [32mStarting migration CreateDataStoreTables1754475614601[39m { "file": "migration-helpers.js", "function": "logMigrationStart" }
|
||||
17:20:49.753 [32minfo[39m [32mFinished migration CreateDataStoreTables1754475614601[39m { "file": "migration-helpers.js", "function": "logMigrationEnd" }
|
||||
17:20:49.769 [32minfo[39m [32mn8n Task Broker ready on 127.0.0.1, port 5679[39m { "file": "task-broker-server.js", "function": "setupHttpServer" }
|
||||
17:20:49.800 [32minfo[39m [32mInitializing AuthRolesService...[39m { "file": "auth.roles.service.js", "function": "init" }
|
||||
17:20:49.801 [32minfo[39m [32mUpdating 120 scopes...[39m { "file": "auth.roles.service.js", "function": "syncScopes" }
|
||||
17:20:49.810 [32minfo[39m [32mScopes updated successfully.[39m { "file": "auth.roles.service.js", "function": "syncScopes" }
|
||||
17:20:49.812 [32minfo[39m [32mUpdating 3 global roles...[39m { "file": "auth.roles.service.js", "function": "syncRoles" }
|
||||
17:20:49.820 [32minfo[39m [32mglobal roles updated successfully.[39m { "file": "auth.roles.service.js", "function": "syncRoles" }
|
||||
17:20:49.823 [32minfo[39m [32mUpdating 4 project roles...[39m { "file": "auth.roles.service.js", "function": "syncRoles" }
|
||||
17:20:49.828 [32minfo[39m [32mproject roles updated successfully.[39m { "file": "auth.roles.service.js", "function": "syncRoles" }
|
||||
17:20:49.828 [32minfo[39m [32mUpdating 2 credential roles...[39m { "file": "auth.roles.service.js", "function": "syncRoles" }
|
||||
17:20:49.830 [32minfo[39m [32mcredential roles updated successfully.[39m { "file": "auth.roles.service.js", "function": "syncRoles" }
|
||||
17:20:49.830 [32minfo[39m [32mUpdating 2 workflow roles...[39m { "file": "auth.roles.service.js", "function": "syncRoles" }
|
||||
17:20:49.832 [32minfo[39m [32mworkflow roles updated successfully.[39m { "file": "auth.roles.service.js", "function": "syncRoles" }
|
||||
17:20:49.832 [32minfo[39m [32mAuthRolesService initialized successfully.[39m { "file": "auth.roles.service.js", "function": "init" }
|
||||
17:20:49.832 [34mdebug[39m [34m[license SDK] initializing for deviceFingerprint ae3350da9cb7f10f65d772716d59f5bd404f92cc574010d8d1736b89b12fb451[39m { "scopes": ["license"], "file": "LicenseManager.js", "function": "log" }
|
||||
17:20:49.833 [32minfo[39m [32m[license SDK] Skipping renewal on init: license cert is not initialized[39m { "scopes": ["license"], "file": "LicenseManager.js", "function": "log" }
|
||||
17:20:49.833 [34mdebug[39m [34mLicense initialized[39m { "scopes": ["license"], "file": "license.js", "function": "init" }
|
||||
17:20:49.833 [34mdebug[39m [34mQuerying database for waiting executions[39m { "scopes": ["waiting-executions"], "file": "wait-tracker.js", "function": "getWaitingExecutions" }
|
||||
17:20:49.834 [34mdebug[39m [34mStarted tracking waiting executions[39m { "scopes": ["waiting-executions"], "file": "wait-tracker.js", "function": "startTracking" }
|
||||
17:20:49.834 [34mdebug[39m [34mWait tracker init complete[39m { "file": "start.js", "function": "init" }
|
||||
17:20:49.835 [34mdebug[39m [34mBinary data service init complete[39m { "file": "start.js", "function": "init" }
|
||||
17:20:49.835 [34mdebug[39m [34mData deduplication service init complete[39m { "file": "start.js", "function": "init" }
|
||||
17:20:49.835 [34mdebug[39m [34mExternal hooks init complete[39m { "file": "start.js", "function": "init" }
|
||||
17:20:49.835 [34mdebug[39m [34mWorkflow history init complete[39m { "file": "start.js", "function": "init" }
|
||||
17:20:49.836 [34mdebug[39m [34mTest runner cleanup complete[39m { "file": "start.js", "function": "init" }
|
||||
17:20:50.134 [34mdebug[39m [34mStarted flushing timer[39m { "scopes": ["insights"], "file": "insights-collection.service.js", "function": "startFlushingTimer" }
|
||||
17:20:50.134 [34mdebug[39m [34mStarted compaction timer[39m { "scopes": ["insights"], "file": "insights-compaction.service.js", "function": "startCompactionTimer" }
|
||||
17:20:50.135 [34mdebug[39m [34mStarted pruning timer[39m { "scopes": ["insights"], "file": "insights-pruning.service.js", "function": "startPruningTimer" }
|
||||
17:20:50.135 [34mdebug[39m [34mInitialized module "insights"[39m { "file": "module-registry.js", "function": "initModules" }
|
||||
17:20:50.135 [34mdebug[39m [34mSkipped init for unlicensed module "external-secrets"[39m { "file": "module-registry.js", "function": "initModules" }
|
||||
17:20:50.137 [34mdebug[39m [34mInitialized module "community-packages"[39m { "file": "module-registry.js", "function": "initModules" }
|
||||
17:20:50.533 [32minfo[39m [32mRegistered runner "JS Task Runner" (_jpYCeYiputJbJjKgp9_L) [39m { "file": "task-broker-ws-server.js", "function": "onMessage" }
|
||||
17:20:50.534 [34mdebug[39m [34mOIDC login is disabled.[39m { "file": "oidc.service.ee.js", "function": "init" }
|
||||
17:20:50.597 [34mdebug[39m [34mInitializing event bus...[39m { "file": "message-event-bus.js", "function": "initialize" }
|
||||
17:20:50.598 [34mdebug[39m [34mInitializing event writer[39m { "file": "message-event-bus.js", "function": "initialize" }
|
||||
17:20:50.600 [34mdebug[39m [34mChecking for unsent event messages[39m { "file": "message-event-bus.js", "function": "initialize" }
|
||||
17:20:50.601 [34mdebug[39m [34mStart logging into /Users/xiaoqi/.n8n/n8nEventLog.log [39m { "file": "message-event-bus.js", "function": "initialize" }
|
||||
17:20:50.601 [34mdebug[39m [34mMessageEventBus initialized[39m { "file": "message-event-bus.js", "function": "initialize" }
|
||||
17:20:50.602 [32minfo[39m [32mVersion: 1.109.2[39m { "file": "abstract-server.js", "function": "start" }
|
||||
17:20:50.602 [32minfo[39m [32mLocale: zh-CN[39m { "file": "abstract-server.js", "function": "start" }
|
||||
17:20:50.602 [34mdebug[39m [34mServer ID: main-CzyJ1d0MkDl62WYs[39m { "file": "server.js", "function": "start" }
|
||||
17:20:50.603 [34mdebug[39m [34mSoft-deletion every 60 minutes[39m { "scopes": ["pruning"], "file": "executions-pruning.service.js", "function": "scheduleRollingSoftDeletions" }
|
||||
17:20:50.603 [34mdebug[39m [34mHard-deletion in next 15 minutes[39m { "scopes": ["pruning"], "file": "executions-pruning.service.js", "function": "scheduleNextHardDeletion" }
|
||||
17:20:50.603 [34mdebug[39m [34mStarted pruning timers[39m { "scopes": ["pruning"], "file": "executions-pruning.service.js", "function": "startPruning" }
|
||||
2025-09-11T09:20:50.604Z [Rudder] debug: in flush
|
||||
2025-09-11T09:20:50.605Z [Rudder] debug: no existing flush timer, creating new one
|
||||
17:20:50.629 [32minfo[39m [32m[39m
|
||||
[32mEditor is now accessible via:[39m
|
||||
[32mhttp://192.168.2.90:5678[39m { "file": "base-command.js", "function": "log" }
|
||||
2025-09-11T09:21:00.606Z [Rudder] debug: in flush
|
||||
2025-09-11T09:21:00.607Z [Rudder] debug: cancelling existing flushTimer...
|
||||
(node:96237) [DEP0060] DeprecationWarning: The `util._extend` API is deprecated. Please use Object.assign() instead.
|
||||
(Use `node --trace-deprecation ...` to show where the warning was created)
|
||||
17:21:49.834 [34mdebug[39m [34mQuerying database for waiting executions[39m { "scopes": ["waiting-executions"], "file": "wait-tracker.js", "function": "getWaitingExecutions" }
|
||||
17:22:49.836 [34mdebug[39m [34mQuerying database for waiting executions[39m { "scopes": ["waiting-executions"], "file": "wait-tracker.js", "function": "getWaitingExecutions" }
|
||||
17:23:29.331 [32minfo[39m [32mReceived SIGTERM. Shutting down...[39m { "file": "base-command.js" }
|
||||
17:23:29.332 [34mdebug[39m [34mShutting down component "License.shutdown()"[39m { "file": "shutdown.service.js", "function": "shutdownComponent" }
|
||||
17:23:29.332 [34mdebug[39m [34mShutting down component "Push.onShutdown()"[39m { "file": "shutdown.service.js", "function": "shutdownComponent" }
|
||||
17:23:29.332 [34mdebug[39m [34mShutting down component "ActiveWorkflowManager.removeAllTriggerAndPollerBasedWorkflows()"[39m { "file": "shutdown.service.js", "function": "shutdownComponent" }
|
||||
17:23:29.332 [34mdebug[39m [34mShutting down component "AbstractServer.onShutdown()"[39m { "file": "shutdown.service.js", "function": "shutdownComponent" }
|
||||
17:23:29.332 [34mdebug[39m [34mShutting down component "ChatService.shutdown()"[39m { "file": "shutdown.service.js", "function": "shutdownComponent" }
|
||||
17:23:29.332 [34mdebug[39m [34mShutting down component "ChatServer.shutdown()"[39m { "file": "shutdown.service.js", "function": "shutdownComponent" }
|
||||
17:23:29.332 [34mdebug[39m [34mShutting down component "ExecutionsPruningService.shutdown()"[39m { "file": "shutdown.service.js", "function": "shutdownComponent" }
|
||||
17:23:29.332 [34mdebug[39m [34mStopped pruning timers[39m { "scopes": ["pruning"], "file": "executions-pruning.service.js", "function": "stopPruning" }
|
||||
17:23:29.332 [34mdebug[39m [34mShutting down component "InsightsModule.shutdown()"[39m { "file": "shutdown.service.js", "function": "shutdownComponent" }
|
||||
17:23:29.332 [34mdebug[39m [34mShutting down component "ExternalSecretsModule.shutdown()"[39m { "file": "shutdown.service.js", "function": "shutdownComponent" }
|
||||
17:23:29.332 [34mdebug[39m [34mShutting down component "TaskRunnerModule.stop()"[39m { "file": "shutdown.service.js", "function": "shutdownComponent" }
|
||||
17:23:29.333 [34mdebug[39m [34mShutting down component "TaskRunnerProcess.stop()"[39m { "file": "shutdown.service.js", "function": "shutdownComponent" }
|
||||
ELIFECYCLE Command failed.
|
||||
17:23:29.367 [34mdebug[39m [34mLicense shut down[39m { "scopes": ["license"], "file": "license.js", "function": "shutdown" }
|
||||
17:23:29.367 [34mdebug[39m [34mStopped flushing timer[39m { "scopes": ["insights"], "file": "insights-collection.service.js", "function": "stopFlushingTimer" }
|
||||
17:23:29.367 [34mdebug[39m [34mFlushing remaining insights before shutdown[39m { "scopes": ["insights"], "file": "insights-collection.service.js", "function": "shutdown" }
|
||||
17:23:29.367 [34mdebug[39m [34mExternal secrets manager shut down[39m { "scopes": ["external-secrets"], "file": "external-secrets-manager.ee.js", "function": "shutdown" }
|
||||
17:23:29.368 [34mdebug[39m [34mStopped compaction timer[39m { "scopes": ["insights"], "file": "insights-compaction.service.js", "function": "stopCompactionTimer" }
|
||||
17:23:29.368 [34mdebug[39m [34mStopped pruning timer[39m { "scopes": ["insights"], "file": "insights-pruning.service.js", "function": "stopPruningTimer" }
|
||||
17:23:29.368 [34mdebug[39m [34mDeregistered runner "_jpYCeYiputJbJjKgp9_L"[39m { "file": "task-broker-ws-server.js", "function": "removeConnection" }
|
||||
17:23:29.368 [32minfo[39m [32m[Task Runner]: Received SIGTERM signal, shutting down...[39m { "scopes": ["task-runner"], "file": "forward-to-logger.js" }
|
||||
17:23:29.369 [32minfo[39m [32m[Task Runner]: Task runner stopped[39m { "scopes": ["task-runner"], "file": "forward-to-logger.js" }
|
||||
17:23:29.372 [34mdebug[39m [34mShutting down component "Telemetry.stopTracking()"[39m { "file": "shutdown.service.js", "function": "shutdownComponent" }
|
||||
2025-09-11T09:23:29.373Z [Rudder] debug: in flush
|
||||
2025-09-11T09:23:29.373Z [Rudder] debug: queue is empty, but a flush already exists
|
||||
17:23:29.374 [32minfo[39m [32m[39m
|
||||
[32mStopping n8n...[39m { "file": "start.js", "function": "stopProcess" }
|
||||
17:23:29.374 [34mdebug[39m [34mStopped tracking waiting executions[39m { "scopes": ["waiting-executions"], "file": "wait-tracker.js", "function": "stopTracking" }
|
||||
2025-09-11T09:23:29.374Z [Rudder] debug: no existing flush timer, creating new one
|
||||
17:23:29.374 [34mdebug[39m [34mShutting down event writer...[39m { "file": "message-event-bus.js", "function": "close" }
|
||||
17:23:29.376 [34mdebug[39m [34mEventBus shut down.[39m { "file": "message-event-bus.js", "function": "close" }
|
||||
23
n8n-n8n-1.109.2/n8n-network-20250911-152219.log
Normal file
23
n8n-n8n-1.109.2/n8n-network-20250911-152219.log
Normal file
@@ -0,0 +1,23 @@
|
||||
|
||||
> n8n-monorepo@1.109.2 start /Users/xiaoqi/Documents/Dev/Project/2025-09-08_n8nDEMO演示/n8n-n8n-1.109.2
|
||||
> run-script-os
|
||||
|
||||
|
||||
> n8n-monorepo@1.109.2 start:default
|
||||
> cd packages/cli/bin && ./n8n
|
||||
|
||||
Permissions 0644 for n8n settings file /Users/xiaoqi/.n8n/config are too wide. This is ignored for now, but in the future n8n will attempt to change the permissions automatically. To automatically enforce correct permissions now set N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true (recommended), or turn this check off set N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=false.
|
||||
Initializing n8n process
|
||||
n8n ready on ::, port 5678
|
||||
n8n Task Broker ready on 127.0.0.1, port 5679
|
||||
Initializing AuthRolesService...
|
||||
AuthRolesService initialized successfully.
|
||||
[license SDK] Skipping renewal on init: license cert is not initialized
|
||||
Registered runner "JS Task Runner" (0K_a3KeF4PxVhGtRq-MW_)
|
||||
Version: 1.109.2
|
||||
Locale: zh-CN
|
||||
|
||||
Editor is now accessible via:
|
||||
http://192.168.2.90:5678
|
||||
(node:89507) [DEP0060] DeprecationWarning: The `util._extend` API is deprecated. Please use Object.assign() instead.
|
||||
(Use `node --trace-deprecation ...` to show where the warning was created)
|
||||
248
n8n-n8n-1.109.2/start-demo.sh
Executable file
248
n8n-n8n-1.109.2/start-demo.sh
Executable file
@@ -0,0 +1,248 @@
|
||||
#!/bin/bash
|
||||
|
||||
# n8n 演示模式启动脚本 - 完全跳过设置
|
||||
# 仅用于演示和测试
|
||||
|
||||
set -e
|
||||
|
||||
# 颜色定义
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m'
|
||||
|
||||
# 打印函数
|
||||
print_info() { echo -e "${BLUE}[信息]${NC} $1"; }
|
||||
print_success() { echo -e "${GREEN}[成功]${NC} $1"; }
|
||||
print_warning() { echo -e "${YELLOW}[警告]${NC} $1"; }
|
||||
print_error() { echo -e "${RED}[错误]${NC} $1"; }
|
||||
|
||||
# 获取局域网IP
|
||||
get_lan_ip() {
|
||||
if [[ "$OSTYPE" == "darwin"* ]]; then
|
||||
ifconfig | grep "inet " | grep -v 127.0.0.1 | head -1 | awk '{print $2}'
|
||||
else
|
||||
hostname -I | awk '{print $1}'
|
||||
fi
|
||||
}
|
||||
|
||||
# 停止现有进程
|
||||
stop_existing() {
|
||||
print_info "正在停止现有的 n8n 进程..."
|
||||
pkill -f "n8n" 2>/dev/null || true
|
||||
pkill -f "pnpm" 2>/dev/null || true
|
||||
sleep 2
|
||||
print_success "已清理现有进程"
|
||||
}
|
||||
|
||||
# 创建预配置的数据库
|
||||
setup_demo_database() {
|
||||
print_info "设置演示数据库..."
|
||||
|
||||
# 备份现有数据库
|
||||
if [ -f "$HOME/.n8n/database.sqlite" ]; then
|
||||
cp "$HOME/.n8n/database.sqlite" "$HOME/.n8n/database.sqlite.backup.$(date +%Y%m%d%H%M%S)"
|
||||
print_info "已备份现有数据库"
|
||||
fi
|
||||
|
||||
# 创建配置文件
|
||||
mkdir -p "$HOME/.n8n"
|
||||
|
||||
# 创建一个已初始化的配置
|
||||
cat > "$HOME/.n8n/config" << 'EOF'
|
||||
{
|
||||
"instanceId": "demo-instance",
|
||||
"version": "1.109.2",
|
||||
"isNpmAvailable": false,
|
||||
"skipOwnerSetup": true
|
||||
}
|
||||
EOF
|
||||
|
||||
print_success "演示配置已创建"
|
||||
}
|
||||
|
||||
# 主函数
|
||||
main() {
|
||||
echo -e "${BLUE}╔════════════════════════════════════════╗${NC}"
|
||||
echo -e "${BLUE}║ n8n 演示模式启动脚本 ║${NC}"
|
||||
echo -e "${BLUE}╚════════════════════════════════════════╝${NC}"
|
||||
echo
|
||||
|
||||
# 切换到n8n目录
|
||||
cd "$(dirname "$0")"
|
||||
|
||||
# 停止现有进程
|
||||
stop_existing
|
||||
|
||||
# 设置演示数据库
|
||||
setup_demo_database
|
||||
|
||||
# 获取IP地址
|
||||
LAN_IP=$(get_lan_ip)
|
||||
if [ -z "$LAN_IP" ]; then
|
||||
print_error "无法获取局域网IP地址"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
print_success "检测到局域网IP: $LAN_IP"
|
||||
|
||||
# 设置环境变量 - 演示模式
|
||||
print_info "配置演示模式环境变量..."
|
||||
|
||||
# 基础配置
|
||||
export N8N_DEFAULT_LOCALE=zh-CN
|
||||
export N8N_HOST=0.0.0.0
|
||||
export N8N_PORT=5678
|
||||
export N8N_LOG_LEVEL=error # 只显示错误,减少日志
|
||||
|
||||
# URL配置
|
||||
export N8N_EDITOR_BASE_URL="http://${LAN_IP}:5678"
|
||||
export WEBHOOK_URL="http://${LAN_IP}:5678"
|
||||
export N8N_PROTOCOL=http
|
||||
|
||||
# 完全跳过认证和设置
|
||||
export N8N_BASIC_AUTH_ACTIVE=false
|
||||
export N8N_AUTH_EXCLUDE_ENDPOINTS="/**"
|
||||
export N8N_USER_MANAGEMENT_DISABLED=true
|
||||
export N8N_SKIP_OWNER_SETUP=true
|
||||
export N8N_DEPLOYMENT_TYPE=demo
|
||||
export N8N_PUBLIC_API_DISABLED=false
|
||||
export N8N_PUBLIC_API_ENDPOINT="http://${LAN_IP}:5678/api"
|
||||
|
||||
# Cookie和Session配置 - 最宽松
|
||||
export N8N_SECURE_COOKIE=false
|
||||
export N8N_SESSION_COOKIE_SAME_SITE=none
|
||||
export N8N_SESSION_COOKIE_SECURE=false
|
||||
export N8N_SESSION_COOKIE_DOMAIN=""
|
||||
|
||||
# CORS配置 - 允许所有
|
||||
export N8N_CORS_ENABLED=true
|
||||
export N8N_CORS_ORIGINS="*"
|
||||
export N8N_CORS_ALLOW_HEADERS="*"
|
||||
export N8N_CORS_ALLOW_METHODS="*"
|
||||
export N8N_CORS_ALLOW_CREDENTIALS=true
|
||||
|
||||
# WebSocket配置
|
||||
export N8N_PUSH_BACKEND=websocket
|
||||
|
||||
# 性能优化
|
||||
export N8N_RUNNERS_ENABLED=true
|
||||
export N8N_BLOCK_ENV_ACCESS_IN_NODE=false
|
||||
export DB_SQLITE_POOL_SIZE=10
|
||||
export N8N_WORKFLOW_TAGS_DISABLED=false
|
||||
export N8N_PERSONALIZATION_ENABLED=false
|
||||
export N8N_DIAGNOSTICS_ENABLED=false
|
||||
export N8N_VERSION_NOTIFICATIONS_ENABLED=false
|
||||
|
||||
# 禁用遥测
|
||||
export N8N_DIAGNOSTICS_DISABLED=true
|
||||
export N8N_TELEMETRY_DISABLED=true
|
||||
|
||||
print_success "演示环境变量配置完成"
|
||||
|
||||
# 创建演示配置文件
|
||||
cat > .env.demo << EOF
|
||||
# n8n 演示模式配置
|
||||
N8N_DEFAULT_LOCALE=zh-CN
|
||||
N8N_HOST=0.0.0.0
|
||||
N8N_PORT=5678
|
||||
N8N_EDITOR_BASE_URL=http://${LAN_IP}:5678
|
||||
WEBHOOK_URL=http://${LAN_IP}:5678
|
||||
N8N_PROTOCOL=http
|
||||
|
||||
# 跳过所有认证和设置
|
||||
N8N_BASIC_AUTH_ACTIVE=false
|
||||
N8N_AUTH_EXCLUDE_ENDPOINTS=/**
|
||||
N8N_USER_MANAGEMENT_DISABLED=true
|
||||
N8N_SKIP_OWNER_SETUP=true
|
||||
|
||||
# CORS配置
|
||||
N8N_CORS_ENABLED=true
|
||||
N8N_CORS_ORIGINS=*
|
||||
N8N_CORS_ALLOW_CREDENTIALS=true
|
||||
|
||||
# 禁用遥测
|
||||
N8N_DIAGNOSTICS_DISABLED=true
|
||||
N8N_TELEMETRY_DISABLED=true
|
||||
EOF
|
||||
|
||||
print_info "已生成配置文件 .env.demo"
|
||||
|
||||
# 检查构建状态
|
||||
if [ ! -d "packages/cli/dist" ]; then
|
||||
print_warning "项目需要构建,正在构建..."
|
||||
pnpm build > build.log 2>&1 || {
|
||||
print_error "构建失败,查看 build.log"
|
||||
exit 1
|
||||
}
|
||||
fi
|
||||
|
||||
# 启动n8n
|
||||
print_info "正在启动 n8n 演示模式..."
|
||||
|
||||
# 创建日志文件
|
||||
LOG_FILE="n8n-demo-$(date +%Y%m%d-%H%M%S).log"
|
||||
|
||||
# 启动命令(带错误过滤)
|
||||
pnpm start 2>&1 | grep -v "401" | grep -v "Unauthorized" | tee "$LOG_FILE" &
|
||||
N8N_PID=$!
|
||||
|
||||
# 等待启动
|
||||
echo -n "等待服务启动"
|
||||
for i in {1..30}; do
|
||||
if curl -s "http://localhost:5678" >/dev/null 2>&1; then
|
||||
break
|
||||
fi
|
||||
echo -n "."
|
||||
sleep 1
|
||||
done
|
||||
echo
|
||||
|
||||
# 检查启动状态
|
||||
if curl -s "http://localhost:5678" >/dev/null 2>&1; then
|
||||
print_success "n8n 演示模式启动成功!"
|
||||
|
||||
echo
|
||||
echo -e "${GREEN}╔════════════════════════════════════════╗${NC}"
|
||||
echo -e "${GREEN}║ n8n 演示模式 ║${NC}"
|
||||
echo -e "${GREEN}╠════════════════════════════════════════╣${NC}"
|
||||
echo -e "${GREEN}║${NC} 🏠 本地访问:"
|
||||
echo -e "${GREEN}║${NC} ${BLUE}http://localhost:5678${NC}"
|
||||
echo -e "${GREEN}║${NC}"
|
||||
echo -e "${GREEN}║${NC} 🌐 局域网访问:"
|
||||
echo -e "${GREEN}║${NC} ${BLUE}http://${LAN_IP}:5678${NC}"
|
||||
echo -e "${GREEN}║${NC}"
|
||||
echo -e "${GREEN}║${NC} 📱 移动设备访问:"
|
||||
echo -e "${GREEN}║${NC} ${BLUE}http://${LAN_IP}:5678${NC}"
|
||||
echo -e "${GREEN}╠════════════════════════════════════════╣${NC}"
|
||||
echo -e "${GREEN}║${NC} ✅ 无需注册或登录"
|
||||
echo -e "${GREEN}║${NC} ✅ 直接创建工作流"
|
||||
echo -e "${GREEN}║${NC} ✅ 适合演示和测试"
|
||||
echo -e "${GREEN}║${NC} ⚠️ 仅用于开发环境"
|
||||
echo -e "${GREEN}╠════════════════════════════════════════╣${NC}"
|
||||
echo -e "${GREEN}║${NC} 进程PID: ${YELLOW}$N8N_PID${NC}"
|
||||
echo -e "${GREEN}║${NC} 日志文件: ${YELLOW}$LOG_FILE${NC}"
|
||||
echo -e "${GREEN}║${NC} 界面语言: 中文"
|
||||
echo -e "${GREEN}╚════════════════════════════════════════╝${NC}"
|
||||
echo
|
||||
|
||||
print_success "所有设置已完成,无需任何认证即可使用!"
|
||||
echo
|
||||
print_info "按 Ctrl+C 停止服务"
|
||||
|
||||
# 捕获退出信号
|
||||
trap 'print_info "正在停止 n8n..."; kill $N8N_PID 2>/dev/null; exit 0' INT
|
||||
|
||||
# 保持运行
|
||||
wait $N8N_PID
|
||||
else
|
||||
print_error "n8n 启动失败"
|
||||
echo "查看日志: $LOG_FILE"
|
||||
tail -20 "$LOG_FILE"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# 运行
|
||||
main "$@"
|
||||
221
n8n-n8n-1.109.2/start-final.sh
Executable file
221
n8n-n8n-1.109.2/start-final.sh
Executable file
@@ -0,0 +1,221 @@
|
||||
#!/bin/bash
|
||||
|
||||
# n8n 最终无认证启动脚本
|
||||
# 完全跳过所有认证和设置
|
||||
|
||||
set -e
|
||||
|
||||
# 颜色定义
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m'
|
||||
|
||||
# 打印函数
|
||||
print_info() { echo -e "${BLUE}[信息]${NC} $1"; }
|
||||
print_success() { echo -e "${GREEN}[成功]${NC} $1"; }
|
||||
print_warning() { echo -e "${YELLOW}[警告]${NC} $1"; }
|
||||
print_error() { echo -e "${RED}[错误]${NC} $1"; }
|
||||
|
||||
# 获取局域网IP
|
||||
get_lan_ip() {
|
||||
if [[ "$OSTYPE" == "darwin"* ]]; then
|
||||
ifconfig | grep "inet " | grep -v 127.0.0.1 | head -1 | awk '{print $2}'
|
||||
else
|
||||
hostname -I | awk '{print $1}'
|
||||
fi
|
||||
}
|
||||
|
||||
# 主函数
|
||||
main() {
|
||||
echo -e "${BLUE}╔════════════════════════════════════════╗${NC}"
|
||||
echo -e "${BLUE}║ n8n 无认证模式启动 ║${NC}"
|
||||
echo -e "${BLUE}╚════════════════════════════════════════╝${NC}"
|
||||
echo
|
||||
|
||||
# 切换到n8n目录
|
||||
cd "$(dirname "$0")"
|
||||
|
||||
# 停止所有现有进程
|
||||
print_info "停止现有 n8n 进程..."
|
||||
pkill -f "n8n" 2>/dev/null || true
|
||||
pkill -f "pnpm" 2>/dev/null || true
|
||||
sleep 2
|
||||
|
||||
# 清理旧数据
|
||||
print_info "清理旧配置和数据..."
|
||||
rm -f ~/.n8n/config
|
||||
rm -f ~/.n8n/database.sqlite*
|
||||
rm -f ~/.n8n/*.json
|
||||
|
||||
# 创建必要的目录
|
||||
mkdir -p ~/.n8n
|
||||
|
||||
# 创建预配置文件,跳过所有设置
|
||||
print_info "创建跳过设置的配置..."
|
||||
cat > ~/.n8n/.n8n-config << 'EOF'
|
||||
{
|
||||
"instanceId": "demo-instance",
|
||||
"encryptionKey": "n8n-demo-key-2024",
|
||||
"skipOwnerSetup": true,
|
||||
"isNpmAvailable": false,
|
||||
"database": {
|
||||
"type": "sqlite",
|
||||
"sqlite": {
|
||||
"database": "database.sqlite"
|
||||
}
|
||||
}
|
||||
}
|
||||
EOF
|
||||
|
||||
# 获取IP地址
|
||||
LAN_IP=$(get_lan_ip)
|
||||
if [ -z "$LAN_IP" ]; then
|
||||
print_error "无法获取局域网IP地址"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
print_success "检测到局域网IP: $LAN_IP"
|
||||
|
||||
# 构建项目(如果需要)
|
||||
if [ ! -d "packages/cli/dist" ]; then
|
||||
print_warning "项目需要构建,正在构建..."
|
||||
pnpm build > build.log 2>&1 || {
|
||||
print_error "构建失败"
|
||||
tail -20 build.log
|
||||
exit 1
|
||||
}
|
||||
print_success "构建完成"
|
||||
fi
|
||||
|
||||
# 设置所有必要的环境变量
|
||||
print_info "配置环境变量..."
|
||||
|
||||
# 导出所有环境变量
|
||||
export NODE_ENV=production
|
||||
export N8N_DEFAULT_LOCALE=zh-CN
|
||||
export N8N_HOST=0.0.0.0
|
||||
export N8N_PORT=5678
|
||||
export N8N_PROTOCOL=http
|
||||
|
||||
# URL配置
|
||||
export N8N_EDITOR_BASE_URL="http://${LAN_IP}:5678"
|
||||
export WEBHOOK_URL="http://${LAN_IP}:5678"
|
||||
export N8N_WEBHOOK_URL="http://${LAN_IP}:5678"
|
||||
|
||||
# 完全禁用认证
|
||||
export N8N_BASIC_AUTH_ACTIVE=false
|
||||
export N8N_USER_MANAGEMENT_DISABLED=true
|
||||
export N8N_SKIP_OWNER_SETUP=true
|
||||
export N8N_AUTH_SKIP_OWNER_SETUP=true
|
||||
export N8N_DEPLOYMENT_TYPE=n8n-internal
|
||||
export N8N_PERSONALIZATION_ENABLED=false
|
||||
|
||||
# 禁用所有安全检查
|
||||
export N8N_SECURE_COOKIE=false
|
||||
export N8N_SESSION_COOKIE_SECURE=false
|
||||
export N8N_SESSION_COOKIE_SAME_SITE=none
|
||||
export N8N_SESSION_COOKIE_DOMAIN=""
|
||||
|
||||
# CORS配置 - 允许所有
|
||||
export N8N_CORS_ENABLED=true
|
||||
export N8N_CORS_ORIGINS="*"
|
||||
export N8N_CORS_ALLOW_HEADERS="*"
|
||||
export N8N_CORS_ALLOW_METHODS="*"
|
||||
export N8N_CORS_ALLOW_CREDENTIALS=true
|
||||
|
||||
# 加密密钥
|
||||
export N8N_ENCRYPTION_KEY="n8n-demo-key-2024"
|
||||
|
||||
# 公共API
|
||||
export N8N_PUBLIC_API_DISABLED=false
|
||||
export N8N_PUBLIC_API_ENDPOINT="http://${LAN_IP}:5678/api"
|
||||
|
||||
# 其他配置
|
||||
export N8N_PUSH_BACKEND=websocket
|
||||
export N8N_WORKFLOW_TAGS_DISABLED=false
|
||||
export N8N_DIAGNOSTICS_ENABLED=false
|
||||
export N8N_VERSION_NOTIFICATIONS_ENABLED=false
|
||||
export N8N_TELEMETRY_DISABLED=true
|
||||
export N8N_DIAGNOSTICS_DISABLED=true
|
||||
export N8N_HIRING_BANNER_ENABLED=false
|
||||
export N8N_LOG_LEVEL=error
|
||||
export N8N_LOG_OUTPUT=console
|
||||
export N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=false
|
||||
|
||||
# 数据库配置
|
||||
export DB_TYPE=sqlite
|
||||
export DB_SQLITE_DATABASE=~/.n8n/database.sqlite
|
||||
|
||||
# 任务运行器
|
||||
export N8N_RUNNERS_ENABLED=true
|
||||
export N8N_BLOCK_ENV_ACCESS_IN_NODE=false
|
||||
|
||||
print_success "环境变量配置完成"
|
||||
|
||||
# 创建启动日志
|
||||
LOG_FILE="n8n-$(date +%Y%m%d-%H%M%S).log"
|
||||
|
||||
# 启动n8n
|
||||
print_info "正在启动 n8n..."
|
||||
|
||||
# 直接运行CLI
|
||||
node packages/cli/bin/n8n 2>&1 | tee "$LOG_FILE" &
|
||||
N8N_PID=$!
|
||||
|
||||
# 等待启动
|
||||
echo -n "等待服务启动"
|
||||
for i in {1..30}; do
|
||||
if curl -s "http://localhost:5678" >/dev/null 2>&1; then
|
||||
break
|
||||
fi
|
||||
echo -n "."
|
||||
sleep 1
|
||||
done
|
||||
echo
|
||||
|
||||
# 检查启动状态
|
||||
if curl -s "http://localhost:5678" >/dev/null 2>&1; then
|
||||
print_success "n8n 启动成功!"
|
||||
|
||||
echo
|
||||
echo -e "${GREEN}╔════════════════════════════════════════╗${NC}"
|
||||
echo -e "${GREEN}║ n8n 无认证模式运行中 ║${NC}"
|
||||
echo -e "${GREEN}╠════════════════════════════════════════╣${NC}"
|
||||
echo -e "${GREEN}║${NC} 🏠 本地访问:"
|
||||
echo -e "${GREEN}║${NC} ${BLUE}http://localhost:5678${NC}"
|
||||
echo -e "${GREEN}║${NC}"
|
||||
echo -e "${GREEN}║${NC} 🌐 局域网访问:"
|
||||
echo -e "${GREEN}║${NC} ${BLUE}http://${LAN_IP}:5678${NC}"
|
||||
echo -e "${GREEN}║${NC}"
|
||||
echo -e "${GREEN}║${NC} 📱 移动设备访问:"
|
||||
echo -e "${GREEN}║${NC} ${BLUE}http://${LAN_IP}:5678${NC}"
|
||||
echo -e "${GREEN}╠════════════════════════════════════════╣${NC}"
|
||||
echo -e "${GREEN}║${NC} ✅ 无需任何认证"
|
||||
echo -e "${GREEN}║${NC} ✅ 直接创建工作流"
|
||||
echo -e "${GREEN}║${NC} ✅ 支持局域网访问"
|
||||
echo -e "${GREEN}║${NC} ⚠️ 仅用于开发/演示"
|
||||
echo -e "${GREEN}╠════════════════════════════════════════╣${NC}"
|
||||
echo -e "${GREEN}║${NC} 进程PID: ${YELLOW}$N8N_PID${NC}"
|
||||
echo -e "${GREEN}║${NC} 日志文件: ${YELLOW}$LOG_FILE${NC}"
|
||||
echo -e "${GREEN}╚════════════════════════════════════════╝${NC}"
|
||||
echo
|
||||
|
||||
print_info "按 Ctrl+C 停止服务"
|
||||
|
||||
# 捕获退出信号
|
||||
trap 'print_info "正在停止 n8n..."; kill $N8N_PID 2>/dev/null; exit 0' INT
|
||||
|
||||
# 保持运行
|
||||
wait $N8N_PID
|
||||
else
|
||||
print_error "n8n 启动失败"
|
||||
echo "查看日志: $LOG_FILE"
|
||||
tail -20 "$LOG_FILE"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# 运行
|
||||
main "$@"
|
||||
224
n8n-n8n-1.109.2/start-lan.sh
Executable file
224
n8n-n8n-1.109.2/start-lan.sh
Executable file
@@ -0,0 +1,224 @@
|
||||
#!/bin/bash
|
||||
|
||||
# n8n 局域网完整访问解决方案
|
||||
# 解决认证、Cookie和CORS问题
|
||||
|
||||
set -e
|
||||
|
||||
# 颜色定义
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m'
|
||||
|
||||
# 打印函数
|
||||
print_info() { echo -e "${BLUE}[信息]${NC} $1"; }
|
||||
print_success() { echo -e "${GREEN}[成功]${NC} $1"; }
|
||||
print_warning() { echo -e "${YELLOW}[警告]${NC} $1"; }
|
||||
print_error() { echo -e "${RED}[错误]${NC} $1"; }
|
||||
|
||||
# 获取局域网IP
|
||||
get_lan_ip() {
|
||||
if [[ "$OSTYPE" == "darwin"* ]]; then
|
||||
ifconfig | grep "inet " | grep -v 127.0.0.1 | head -1 | awk '{print $2}'
|
||||
else
|
||||
hostname -I | awk '{print $1}'
|
||||
fi
|
||||
}
|
||||
|
||||
# 停止现有进程
|
||||
stop_existing() {
|
||||
print_info "正在停止现有的 n8n 进程..."
|
||||
pkill -f "pnpm.*dev" 2>/dev/null || true
|
||||
pkill -f "pnpm.*start" 2>/dev/null || true
|
||||
pkill -f "n8n" 2>/dev/null || true
|
||||
sleep 2
|
||||
print_success "已清理现有进程"
|
||||
}
|
||||
|
||||
# 主函数
|
||||
main() {
|
||||
print_info "n8n 局域网完整访问解决方案"
|
||||
|
||||
# 切换到n8n目录
|
||||
cd "$(dirname "$0")"
|
||||
|
||||
# 停止现有进程
|
||||
stop_existing
|
||||
|
||||
# 获取IP地址
|
||||
LAN_IP=$(get_lan_ip)
|
||||
if [ -z "$LAN_IP" ]; then
|
||||
print_error "无法获取局域网IP地址"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
print_success "检测到局域网IP: $LAN_IP"
|
||||
|
||||
# 设置环境变量 - 修复认证问题的关键配置
|
||||
print_info "配置认证和会话环境变量..."
|
||||
|
||||
# 基础配置
|
||||
export N8N_DEFAULT_LOCALE=zh-CN
|
||||
export N8N_HOST=0.0.0.0
|
||||
export N8N_PORT=5678
|
||||
export N8N_LOG_LEVEL=debug
|
||||
|
||||
# URL配置 - 统一使用IP地址
|
||||
export N8N_EDITOR_BASE_URL="http://${LAN_IP}:5678"
|
||||
export WEBHOOK_URL="http://${LAN_IP}:5678"
|
||||
export N8N_PROTOCOL=http
|
||||
|
||||
# 关键:禁用认证(开发环境)
|
||||
export N8N_BASIC_AUTH_ACTIVE=false
|
||||
export N8N_AUTH_EXCLUDE_ENDPOINTS="/**"
|
||||
|
||||
# Cookie和Session配置 - 关键配置
|
||||
export N8N_SECURE_COOKIE=false
|
||||
export N8N_SESSION_COOKIE_SAME_SITE=none
|
||||
export N8N_SESSION_COOKIE_SECURE=false
|
||||
export N8N_SESSION_COOKIE_DOMAIN=""
|
||||
export N8N_SESSION_COOKIE_NAME=n8n.sessionId
|
||||
|
||||
# CORS配置 - 允许所有源(开发环境)
|
||||
export N8N_CORS_ENABLED=true
|
||||
export N8N_CORS_ORIGINS="*"
|
||||
export N8N_CORS_ALLOW_HEADERS="*"
|
||||
export N8N_CORS_ALLOW_METHODS="*"
|
||||
|
||||
# WebSocket配置
|
||||
export N8N_PUSH_BACKEND=websocket
|
||||
|
||||
# 其他优化
|
||||
export N8N_RUNNERS_ENABLED=true
|
||||
export N8N_BLOCK_ENV_ACCESS_IN_NODE=false
|
||||
export DB_SQLITE_POOL_SIZE=5
|
||||
export N8N_SKIP_AUTH_ROUTES=true
|
||||
export N8N_PUBLIC_API_DISABLED=false
|
||||
|
||||
# 创建数据目录(如果不存在)
|
||||
if [ ! -d "$HOME/.n8n" ]; then
|
||||
mkdir -p "$HOME/.n8n"
|
||||
print_info "创建了 n8n 数据目录"
|
||||
fi
|
||||
|
||||
print_success "环境变量配置完成"
|
||||
|
||||
# 创建.env文件作为备份
|
||||
cat > .env.lan << EOF
|
||||
# n8n 局域网完整访问配置
|
||||
N8N_DEFAULT_LOCALE=zh-CN
|
||||
N8N_HOST=0.0.0.0
|
||||
N8N_PORT=5678
|
||||
N8N_EDITOR_BASE_URL=http://${LAN_IP}:5678
|
||||
WEBHOOK_URL=http://${LAN_IP}:5678
|
||||
N8N_PROTOCOL=http
|
||||
|
||||
# 认证配置(开发环境 - 禁用认证)
|
||||
N8N_BASIC_AUTH_ACTIVE=false
|
||||
N8N_AUTH_EXCLUDE_ENDPOINTS=/**
|
||||
N8N_SKIP_AUTH_ROUTES=true
|
||||
|
||||
# Cookie配置
|
||||
N8N_SECURE_COOKIE=false
|
||||
N8N_SESSION_COOKIE_SAME_SITE=none
|
||||
N8N_SESSION_COOKIE_SECURE=false
|
||||
N8N_SESSION_COOKIE_DOMAIN=
|
||||
|
||||
# CORS配置(开发环境 - 允许所有)
|
||||
N8N_CORS_ENABLED=true
|
||||
N8N_CORS_ORIGINS=*
|
||||
N8N_CORS_ALLOW_HEADERS=*
|
||||
N8N_CORS_ALLOW_METHODS=*
|
||||
|
||||
# WebSocket
|
||||
N8N_PUSH_BACKEND=websocket
|
||||
|
||||
# 其他
|
||||
N8N_RUNNERS_ENABLED=true
|
||||
N8N_BLOCK_ENV_ACCESS_IN_NODE=false
|
||||
DB_SQLITE_POOL_SIZE=5
|
||||
N8N_PUBLIC_API_DISABLED=false
|
||||
EOF
|
||||
|
||||
print_info "已生成配置文件 .env.lan"
|
||||
|
||||
# 检查构建状态
|
||||
if [ ! -d "packages/cli/dist" ]; then
|
||||
print_warning "项目需要构建,正在构建..."
|
||||
pnpm build > build.log 2>&1 || {
|
||||
print_error "构建失败,查看 build.log"
|
||||
exit 1
|
||||
}
|
||||
fi
|
||||
|
||||
# 启动n8n
|
||||
print_info "正在启动 n8n(开发模式,无需认证)..."
|
||||
|
||||
# 创建日志文件
|
||||
LOG_FILE="n8n-lan-$(date +%Y%m%d-%H%M%S).log"
|
||||
|
||||
# 启动命令
|
||||
pnpm start > "$LOG_FILE" 2>&1 &
|
||||
N8N_PID=$!
|
||||
|
||||
# 等待启动
|
||||
echo -n "等待服务启动"
|
||||
for i in {1..30}; do
|
||||
if curl -s "http://localhost:5678" >/dev/null 2>&1; then
|
||||
break
|
||||
fi
|
||||
echo -n "."
|
||||
sleep 1
|
||||
done
|
||||
echo
|
||||
|
||||
# 检查启动状态
|
||||
if curl -s "http://localhost:5678" >/dev/null 2>&1; then
|
||||
print_success "n8n 启动成功!"
|
||||
|
||||
echo
|
||||
echo -e "${GREEN}╔════════════════════════════════════════╗${NC}"
|
||||
echo -e "${GREEN}║ n8n 局域网访问信息(开发模式) ║${NC}"
|
||||
echo -e "${GREEN}╠════════════════════════════════════════╣${NC}"
|
||||
echo -e "${GREEN}║${NC} 🏠 本地访问:"
|
||||
echo -e "${GREEN}║${NC} ${BLUE}http://localhost:5678${NC}"
|
||||
echo -e "${GREEN}║${NC}"
|
||||
echo -e "${GREEN}║${NC} 🌐 局域网访问:"
|
||||
echo -e "${GREEN}║${NC} ${BLUE}http://${LAN_IP}:5678${NC}"
|
||||
echo -e "${GREEN}║${NC}"
|
||||
echo -e "${GREEN}║${NC} 📱 移动设备访问:"
|
||||
echo -e "${GREEN}║${NC} ${BLUE}http://${LAN_IP}:5678${NC}"
|
||||
echo -e "${GREEN}╠════════════════════════════════════════╣${NC}"
|
||||
echo -e "${GREEN}║${NC} 模式: ${YELLOW}开发模式(无需认证)${NC}"
|
||||
echo -e "${GREEN}║${NC} 进程PID: ${YELLOW}$N8N_PID${NC}"
|
||||
echo -e "${GREEN}║${NC} 日志文件: ${YELLOW}$LOG_FILE${NC}"
|
||||
echo -e "${GREEN}║${NC} 界面语言: 中文"
|
||||
echo -e "${GREEN}╚════════════════════════════════════════╝${NC}"
|
||||
echo
|
||||
|
||||
print_warning "注意事项:"
|
||||
echo " ✓ 开发模式已禁用认证,任何人都可以访问"
|
||||
echo " ✓ 局域网访问直接使用: http://${LAN_IP}:5678"
|
||||
echo " ✓ 无需登录即可使用"
|
||||
echo " ✓ 确保防火墙允许 5678 端口"
|
||||
echo " ✓ 生产环境请勿使用此配置!"
|
||||
echo
|
||||
print_info "按 Ctrl+C 停止服务"
|
||||
|
||||
# 捕获退出信号
|
||||
trap 'print_info "正在停止 n8n..."; kill $N8N_PID 2>/dev/null; exit 0' INT
|
||||
|
||||
# 显示日志
|
||||
tail -f "$LOG_FILE"
|
||||
else
|
||||
print_error "n8n 启动失败"
|
||||
echo "查看日志: $LOG_FILE"
|
||||
tail -20 "$LOG_FILE"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# 运行
|
||||
main "$@"
|
||||
185
n8n-n8n-1.109.2/start-network.sh
Executable file
185
n8n-n8n-1.109.2/start-network.sh
Executable file
@@ -0,0 +1,185 @@
|
||||
#!/bin/bash
|
||||
|
||||
# n8n 局域网访问优化版启动脚本
|
||||
# 解决Cookie、CORS和认证问题
|
||||
|
||||
set -e
|
||||
|
||||
# 颜色定义
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m'
|
||||
|
||||
# 打印函数
|
||||
print_info() { echo -e "${BLUE}[信息]${NC} $1"; }
|
||||
print_success() { echo -e "${GREEN}[成功]${NC} $1"; }
|
||||
print_warning() { echo -e "${YELLOW}[警告]${NC} $1"; }
|
||||
print_error() { echo -e "${RED}[错误]${NC} $1"; }
|
||||
|
||||
# 获取局域网IP
|
||||
get_lan_ip() {
|
||||
if [[ "$OSTYPE" == "darwin"* ]]; then
|
||||
ifconfig | grep "inet " | grep -v 127.0.0.1 | head -1 | awk '{print $2}'
|
||||
else
|
||||
hostname -I | awk '{print $1}'
|
||||
fi
|
||||
}
|
||||
|
||||
# 停止现有进程
|
||||
stop_existing() {
|
||||
print_info "正在停止现有的 n8n 进程..."
|
||||
pkill -f "pnpm.*dev" 2>/dev/null || true
|
||||
pkill -f "pnpm.*start" 2>/dev/null || true
|
||||
pkill -f "n8n" 2>/dev/null || true
|
||||
sleep 2
|
||||
print_success "已清理现有进程"
|
||||
}
|
||||
|
||||
# 主函数
|
||||
main() {
|
||||
print_info "n8n 局域网访问配置启动器"
|
||||
|
||||
# 切换到n8n目录
|
||||
cd "$(dirname "$0")"
|
||||
|
||||
# 停止现有进程
|
||||
stop_existing
|
||||
|
||||
# 获取IP地址
|
||||
LAN_IP=$(get_lan_ip)
|
||||
if [ -z "$LAN_IP" ]; then
|
||||
print_error "无法获取局域网IP地址"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
print_success "检测到局域网IP: $LAN_IP"
|
||||
|
||||
# 设置环境变量
|
||||
print_info "配置环境变量..."
|
||||
|
||||
# 基础配置
|
||||
export N8N_DEFAULT_LOCALE=zh-CN
|
||||
export N8N_HOST=0.0.0.0
|
||||
export N8N_PORT=5678
|
||||
|
||||
# URL配置 - 关键!必须设置正确的URL
|
||||
export N8N_EDITOR_BASE_URL="http://${LAN_IP}:5678"
|
||||
export WEBHOOK_URL="http://${LAN_IP}:5678"
|
||||
export N8N_PROTOCOL=http
|
||||
|
||||
# Cookie和Session配置
|
||||
export N8N_SECURE_COOKIE=false
|
||||
export N8N_SESSION_COOKIE_SAME_SITE=lax
|
||||
export N8N_SESSION_COOKIE_SECURE=false
|
||||
|
||||
# CORS配置
|
||||
export N8N_CORS_ENABLED=true
|
||||
export N8N_CORS_ORIGINS="http://localhost:5678,http://${LAN_IP}:5678,http://127.0.0.1:5678"
|
||||
|
||||
# 认证配置
|
||||
export N8N_AUTH_EXCLUDE_ENDPOINTS="rest/health,/healthz,/metrics"
|
||||
export N8N_PUSH_BACKEND=websocket
|
||||
|
||||
# 其他优化
|
||||
export N8N_RUNNERS_ENABLED=true
|
||||
export N8N_BLOCK_ENV_ACCESS_IN_NODE=false
|
||||
export DB_SQLITE_POOL_SIZE=5
|
||||
|
||||
print_success "环境变量配置完成"
|
||||
|
||||
# 创建.env文件作为备份
|
||||
cat > .env.network << EOF
|
||||
# n8n 局域网访问配置
|
||||
N8N_DEFAULT_LOCALE=zh-CN
|
||||
N8N_HOST=0.0.0.0
|
||||
N8N_PORT=5678
|
||||
N8N_EDITOR_BASE_URL=http://${LAN_IP}:5678
|
||||
WEBHOOK_URL=http://${LAN_IP}:5678
|
||||
N8N_PROTOCOL=http
|
||||
N8N_SECURE_COOKIE=false
|
||||
N8N_SESSION_COOKIE_SAME_SITE=lax
|
||||
N8N_SESSION_COOKIE_SECURE=false
|
||||
N8N_CORS_ENABLED=true
|
||||
N8N_CORS_ORIGINS=http://localhost:5678,http://${LAN_IP}:5678,http://127.0.0.1:5678
|
||||
EOF
|
||||
|
||||
print_info "已生成配置文件 .env.network"
|
||||
|
||||
# 检查构建状态
|
||||
if [ ! -d "packages/cli/dist" ]; then
|
||||
print_warning "项目需要构建,正在构建..."
|
||||
pnpm build > build.log 2>&1 || {
|
||||
print_error "构建失败,查看 build.log"
|
||||
exit 1
|
||||
}
|
||||
fi
|
||||
|
||||
# 启动n8n
|
||||
print_info "正在启动 n8n..."
|
||||
|
||||
# 创建日志文件
|
||||
LOG_FILE="n8n-network-$(date +%Y%m%d-%H%M%S).log"
|
||||
|
||||
# 启动命令
|
||||
pnpm start > "$LOG_FILE" 2>&1 &
|
||||
N8N_PID=$!
|
||||
|
||||
# 等待启动
|
||||
echo -n "等待服务启动"
|
||||
for i in {1..30}; do
|
||||
if curl -s "http://localhost:5678/rest/health" >/dev/null 2>&1; then
|
||||
break
|
||||
fi
|
||||
echo -n "."
|
||||
sleep 1
|
||||
done
|
||||
echo
|
||||
|
||||
# 检查启动状态
|
||||
if curl -s "http://localhost:5678/rest/health" >/dev/null 2>&1; then
|
||||
print_success "n8n 启动成功!"
|
||||
|
||||
echo
|
||||
echo -e "${GREEN}╔════════════════════════════════════════╗${NC}"
|
||||
echo -e "${GREEN}║ n8n 局域网访问信息 ║${NC}"
|
||||
echo -e "${GREEN}╠════════════════════════════════════════╣${NC}"
|
||||
echo -e "${GREEN}║${NC} 🏠 本地访问:"
|
||||
echo -e "${GREEN}║${NC} ${BLUE}http://localhost:5678${NC}"
|
||||
echo -e "${GREEN}║${NC}"
|
||||
echo -e "${GREEN}║${NC} 🌐 局域网访问:"
|
||||
echo -e "${GREEN}║${NC} ${BLUE}http://${LAN_IP}:5678${NC}"
|
||||
echo -e "${GREEN}║${NC}"
|
||||
echo -e "${GREEN}║${NC} 📱 移动设备访问:"
|
||||
echo -e "${GREEN}║${NC} ${BLUE}http://${LAN_IP}:5678${NC}"
|
||||
echo -e "${GREEN}╠════════════════════════════════════════╣${NC}"
|
||||
echo -e "${GREEN}║${NC} 进程PID: ${YELLOW}$N8N_PID${NC}"
|
||||
echo -e "${GREEN}║${NC} 日志文件: ${YELLOW}$LOG_FILE${NC}"
|
||||
echo -e "${GREEN}║${NC} 界面语言: 中文"
|
||||
echo -e "${GREEN}╚════════════════════════════════════════╝${NC}"
|
||||
echo
|
||||
|
||||
print_warning "重要提示:"
|
||||
echo " ✓ 局域网访问请统一使用: http://${LAN_IP}:5678"
|
||||
echo " ✓ 不要混用 localhost 和 IP 地址"
|
||||
echo " ✓ 首次访问需要创建管理员账户"
|
||||
echo " ✓ 确保防火墙允许 5678 端口"
|
||||
echo
|
||||
print_info "按 Ctrl+C 停止服务"
|
||||
|
||||
# 捕获退出信号
|
||||
trap 'print_info "正在停止 n8n..."; kill $N8N_PID 2>/dev/null; exit 0' INT
|
||||
|
||||
# 显示日志
|
||||
tail -f "$LOG_FILE"
|
||||
else
|
||||
print_error "n8n 启动失败"
|
||||
echo "查看日志: $LOG_FILE"
|
||||
tail -20 "$LOG_FILE"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# 运行
|
||||
main "$@"
|
||||
217
n8n-n8n-1.109.2/start-noauth.sh
Executable file
217
n8n-n8n-1.109.2/start-noauth.sh
Executable file
@@ -0,0 +1,217 @@
|
||||
#!/bin/bash
|
||||
|
||||
# n8n 完全无认证启动脚本(开发用)
|
||||
# 警告:仅用于开发环境!
|
||||
|
||||
set -e
|
||||
|
||||
# 颜色定义
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m'
|
||||
|
||||
# 打印函数
|
||||
print_info() { echo -e "${BLUE}[信息]${NC} $1"; }
|
||||
print_success() { echo -e "${GREEN}[成功]${NC} $1"; }
|
||||
print_warning() { echo -e "${YELLOW}[警告]${NC} $1"; }
|
||||
print_error() { echo -e "${RED}[错误]${NC} $1"; }
|
||||
|
||||
# 获取局域网IP
|
||||
get_lan_ip() {
|
||||
if [[ "$OSTYPE" == "darwin"* ]]; then
|
||||
ifconfig | grep "inet " | grep -v 127.0.0.1 | head -1 | awk '{print $2}'
|
||||
else
|
||||
hostname -I | awk '{print $1}'
|
||||
fi
|
||||
}
|
||||
|
||||
# 停止现有进程
|
||||
stop_existing() {
|
||||
print_info "正在停止现有的 n8n 进程..."
|
||||
pkill -f "n8n" 2>/dev/null || true
|
||||
sleep 2
|
||||
print_success "已清理现有进程"
|
||||
}
|
||||
|
||||
# 备份并清空用户数据(可选)
|
||||
handle_auth() {
|
||||
if [ -f "$HOME/.n8n/database.sqlite" ]; then
|
||||
print_warning "检测到已存在用户数据库"
|
||||
echo "选择操作:"
|
||||
echo "1) 保留现有用户(需要登录)"
|
||||
echo "2) 备份并重置(无需登录)"
|
||||
echo "3) 直接使用测试账号"
|
||||
read -p "请选择 (1/2/3): " choice
|
||||
|
||||
case $choice in
|
||||
2)
|
||||
print_info "备份现有数据库..."
|
||||
cp "$HOME/.n8n/database.sqlite" "$HOME/.n8n/database.sqlite.backup.$(date +%Y%m%d%H%M%S)"
|
||||
rm -f "$HOME/.n8n/database.sqlite"*
|
||||
print_success "数据库已备份并重置"
|
||||
;;
|
||||
3)
|
||||
print_info "将使用测试账号信息:"
|
||||
echo -e "${GREEN}邮箱: admin@test.com${NC}"
|
||||
echo -e "${GREEN}密码: n8n123456${NC}"
|
||||
;;
|
||||
*)
|
||||
print_info "保留现有用户数据"
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
}
|
||||
|
||||
# 主函数
|
||||
main() {
|
||||
print_info "n8n 开发环境快速启动(可选无认证)"
|
||||
|
||||
# 切换到n8n目录
|
||||
cd "$(dirname "$0")"
|
||||
|
||||
# 停止现有进程
|
||||
stop_existing
|
||||
|
||||
# 处理认证
|
||||
handle_auth
|
||||
|
||||
# 获取IP地址
|
||||
LAN_IP=$(get_lan_ip)
|
||||
if [ -z "$LAN_IP" ]; then
|
||||
print_error "无法获取局域网IP地址"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
print_success "检测到局域网IP: $LAN_IP"
|
||||
|
||||
# 设置环境变量
|
||||
print_info "配置环境变量..."
|
||||
|
||||
# 基础配置
|
||||
export N8N_DEFAULT_LOCALE=zh-CN
|
||||
export N8N_HOST=0.0.0.0
|
||||
export N8N_PORT=5678
|
||||
export N8N_LOG_LEVEL=info
|
||||
|
||||
# URL配置
|
||||
export N8N_EDITOR_BASE_URL="http://${LAN_IP}:5678"
|
||||
export WEBHOOK_URL="http://${LAN_IP}:5678"
|
||||
export N8N_PROTOCOL=http
|
||||
|
||||
# 如果没有用户数据库,完全禁用认证
|
||||
if [ ! -f "$HOME/.n8n/database.sqlite" ]; then
|
||||
export N8N_BASIC_AUTH_ACTIVE=false
|
||||
export N8N_AUTH_EXCLUDE_ENDPOINTS="/**"
|
||||
export N8N_USER_MANAGEMENT_DISABLED=true
|
||||
print_warning "无用户模式:完全禁用认证"
|
||||
else
|
||||
# 有用户数据库,保持标准认证但优化CORS
|
||||
export N8N_USER_MANAGEMENT_DISABLED=false
|
||||
print_info "标准模式:需要使用账号登录"
|
||||
fi
|
||||
|
||||
# Cookie和Session配置
|
||||
export N8N_SECURE_COOKIE=false
|
||||
export N8N_SESSION_COOKIE_SAME_SITE=none
|
||||
export N8N_SESSION_COOKIE_SECURE=false
|
||||
|
||||
# CORS配置
|
||||
export N8N_CORS_ENABLED=true
|
||||
export N8N_CORS_ORIGINS="*"
|
||||
|
||||
# 其他优化
|
||||
export N8N_PUSH_BACKEND=websocket
|
||||
export N8N_RUNNERS_ENABLED=true
|
||||
export N8N_BLOCK_ENV_ACCESS_IN_NODE=false
|
||||
export DB_SQLITE_POOL_SIZE=5
|
||||
|
||||
print_success "环境变量配置完成"
|
||||
|
||||
# 检查构建状态
|
||||
if [ ! -d "packages/cli/dist" ]; then
|
||||
print_warning "项目需要构建,正在构建..."
|
||||
pnpm build > build.log 2>&1 || {
|
||||
print_error "构建失败,查看 build.log"
|
||||
exit 1
|
||||
}
|
||||
fi
|
||||
|
||||
# 启动n8n
|
||||
print_info "正在启动 n8n..."
|
||||
|
||||
# 创建日志文件
|
||||
LOG_FILE="n8n-dev-$(date +%Y%m%d-%H%M%S).log"
|
||||
|
||||
# 启动命令
|
||||
pnpm start > "$LOG_FILE" 2>&1 &
|
||||
N8N_PID=$!
|
||||
|
||||
# 等待启动
|
||||
echo -n "等待服务启动"
|
||||
for i in {1..30}; do
|
||||
if curl -s "http://localhost:5678" >/dev/null 2>&1; then
|
||||
break
|
||||
fi
|
||||
echo -n "."
|
||||
sleep 1
|
||||
done
|
||||
echo
|
||||
|
||||
# 检查启动状态
|
||||
if curl -s "http://localhost:5678" >/dev/null 2>&1; then
|
||||
print_success "n8n 启动成功!"
|
||||
|
||||
echo
|
||||
echo -e "${GREEN}╔════════════════════════════════════════╗${NC}"
|
||||
echo -e "${GREEN}║ n8n 开发环境信息 ║${NC}"
|
||||
echo -e "${GREEN}╠════════════════════════════════════════╣${NC}"
|
||||
echo -e "${GREEN}║${NC} 🏠 本地访问:"
|
||||
echo -e "${GREEN}║${NC} ${BLUE}http://localhost:5678${NC}"
|
||||
echo -e "${GREEN}║${NC}"
|
||||
echo -e "${GREEN}║${NC} 🌐 局域网访问:"
|
||||
echo -e "${GREEN}║${NC} ${BLUE}http://${LAN_IP}:5678${NC}"
|
||||
echo -e "${GREEN}║${NC}"
|
||||
|
||||
if [ ! -f "$HOME/.n8n/database.sqlite" ]; then
|
||||
echo -e "${GREEN}║${NC} 模式: ${YELLOW}无认证模式${NC}"
|
||||
echo -e "${GREEN}║${NC} 说明: 直接访问,无需登录"
|
||||
else
|
||||
echo -e "${GREEN}║${NC} 模式: ${YELLOW}标准认证模式${NC}"
|
||||
echo -e "${GREEN}║${NC} 说明: 使用已有账号登录"
|
||||
echo -e "${GREEN}║${NC}"
|
||||
echo -e "${GREEN}║${NC} 测试账号(如果创建过):"
|
||||
echo -e "${GREEN}║${NC} 邮箱: admin@test.com"
|
||||
echo -e "${GREEN}║${NC} 密码: n8n123456"
|
||||
fi
|
||||
|
||||
echo -e "${GREEN}╠════════════════════════════════════════╣${NC}"
|
||||
echo -e "${GREEN}║${NC} 进程PID: ${YELLOW}$N8N_PID${NC}"
|
||||
echo -e "${GREEN}║${NC} 日志文件: ${YELLOW}$LOG_FILE${NC}"
|
||||
echo -e "${GREEN}║${NC} 界面语言: 中文"
|
||||
echo -e "${GREEN}╚════════════════════════════════════════╝${NC}"
|
||||
echo
|
||||
|
||||
print_warning "提示:"
|
||||
echo " ✓ 确保防火墙允许 5678 端口"
|
||||
echo " ✓ 如需重置用户,删除 ~/.n8n/database.sqlite"
|
||||
echo " ✓ 生产环境请使用标准认证!"
|
||||
echo
|
||||
print_info "按 Ctrl+C 停止服务"
|
||||
|
||||
# 捕获退出信号
|
||||
trap 'print_info "正在停止 n8n..."; kill $N8N_PID 2>/dev/null; exit 0' INT
|
||||
|
||||
# 显示日志
|
||||
tail -f "$LOG_FILE"
|
||||
else
|
||||
print_error "n8n 启动失败"
|
||||
echo "查看日志: $LOG_FILE"
|
||||
tail -20 "$LOG_FILE"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# 运行
|
||||
main "$@"
|
||||
322
n8n-n8n-1.109.2/start-optimized.sh
Executable file
322
n8n-n8n-1.109.2/start-optimized.sh
Executable file
@@ -0,0 +1,322 @@
|
||||
#!/bin/bash
|
||||
|
||||
# n8n 优化版启动脚本 - 解决所有警告
|
||||
# 作者: 小齐
|
||||
# 最后更新: 2025-09-11
|
||||
|
||||
set -e
|
||||
|
||||
# 颜色定义
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m'
|
||||
|
||||
# 打印函数
|
||||
print_info() { echo -e "${BLUE}[信息]${NC} $1"; }
|
||||
print_success() { echo -e "${GREEN}[成功]${NC} $1"; }
|
||||
print_warning() { echo -e "${YELLOW}[警告]${NC} $1"; }
|
||||
print_error() { echo -e "${RED}[错误]${NC} $1"; }
|
||||
|
||||
# 显示启动横幅
|
||||
show_banner() {
|
||||
echo -e "${BLUE}"
|
||||
echo "╔══════════════════════════════════════╗"
|
||||
echo "║ n8n 中文版优化启动脚本 ║"
|
||||
echo "║ 版本: n8n-1.109.2 (无警告版) ║"
|
||||
echo "║ 维护者: xiaoqi ║"
|
||||
echo "╚══════════════════════════════════════╝"
|
||||
echo -e "${NC}"
|
||||
}
|
||||
|
||||
# 修复配置文件权限
|
||||
fix_permissions() {
|
||||
print_info "检查配置文件权限..."
|
||||
|
||||
# 检查并修复 .n8n 目录权限
|
||||
if [ -d "$HOME/.n8n" ]; then
|
||||
if [ -f "$HOME/.n8n/config" ]; then
|
||||
chmod 600 "$HOME/.n8n/config"
|
||||
print_success "配置文件权限已修复"
|
||||
fi
|
||||
else
|
||||
mkdir -p "$HOME/.n8n"
|
||||
touch "$HOME/.n8n/config"
|
||||
chmod 600 "$HOME/.n8n/config"
|
||||
print_success "创建并设置了配置文件权限"
|
||||
fi
|
||||
}
|
||||
|
||||
# 检查依赖
|
||||
check_dependencies() {
|
||||
print_info "正在检查系统依赖..."
|
||||
|
||||
if ! command -v node &> /dev/null; then
|
||||
print_error "Node.js 未安装或未在 PATH 中"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! command -v pnpm &> /dev/null; then
|
||||
print_error "pnpm 未安装或未在 PATH 中"
|
||||
print_info "请先安装 pnpm: npm install -g pnpm"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
print_success "依赖检查通过"
|
||||
}
|
||||
|
||||
# 检查端口占用
|
||||
check_port() {
|
||||
local port=5678
|
||||
if lsof -Pi :$port -sTCP:LISTEN -t >/dev/null 2>&1; then
|
||||
print_warning "端口 $port 已被占用"
|
||||
print_info "正在查看占用进程..."
|
||||
lsof -i :$port | head -5
|
||||
|
||||
read -p "是否杀死占用进程?(y/N): " kill_process
|
||||
if [[ $kill_process =~ ^[Yy]$ ]]; then
|
||||
print_info "正在终止占用进程..."
|
||||
lsof -ti:$port | xargs kill -9 2>/dev/null || true
|
||||
sleep 1
|
||||
print_success "进程已终止"
|
||||
else
|
||||
print_error "无法启动 n8n,端口被占用"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# 停止现有的 n8n 进程
|
||||
stop_existing() {
|
||||
print_info "正在停止现有的 n8n 进程..."
|
||||
|
||||
pkill -f "pnpm.*dev" 2>/dev/null || true
|
||||
pkill -f "pnpm.*start" 2>/dev/null || true
|
||||
pkill -f "turbo.*dev" 2>/dev/null || true
|
||||
pkill -f "n8n" 2>/dev/null || true
|
||||
|
||||
sleep 2
|
||||
print_success "已停止现有进程"
|
||||
}
|
||||
|
||||
# 设置环境变量
|
||||
setup_environment() {
|
||||
print_info "正在设置优化的环境变量..."
|
||||
|
||||
# 获取局域网IP地址
|
||||
local lan_ip=""
|
||||
if [[ "$OSTYPE" == "darwin"* ]]; then
|
||||
lan_ip=$(ifconfig | grep "inet " | grep -v 127.0.0.1 | head -1 | awk '{print $2}')
|
||||
else
|
||||
lan_ip=$(hostname -I | awk '{print $1}')
|
||||
fi
|
||||
|
||||
# 基础配置
|
||||
export N8N_DEFAULT_LOCALE=zh-CN
|
||||
export N8N_HOST=0.0.0.0
|
||||
export N8N_PORT=5678
|
||||
|
||||
# 权限配置 - 解决权限警告
|
||||
export N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
|
||||
|
||||
# 安全配置
|
||||
export N8N_SECURE_COOKIE=false
|
||||
export N8N_SESSION_COOKIE_SAME_SITE=lax
|
||||
export N8N_SESSION_COOKIE_SECURE=false
|
||||
|
||||
# 性能优化
|
||||
export DB_SQLITE_POOL_SIZE=5
|
||||
export N8N_RUNNERS_ENABLED=true
|
||||
export N8N_BLOCK_ENV_ACCESS_IN_NODE=false
|
||||
|
||||
# Node.js 优化 - 避免废弃警告
|
||||
export NODE_NO_WARNINGS=1
|
||||
export NODE_OPTIONS="--no-deprecation"
|
||||
|
||||
# 设置URL
|
||||
if [ -n "$lan_ip" ]; then
|
||||
export N8N_EDITOR_BASE_URL="http://${lan_ip}:5678"
|
||||
export WEBHOOK_URL="http://${lan_ip}:5678"
|
||||
export N8N_PROTOCOL=http
|
||||
fi
|
||||
|
||||
# CORS配置
|
||||
export N8N_CORS_ENABLED=true
|
||||
if [ -n "$lan_ip" ]; then
|
||||
export N8N_CORS_ORIGINS="http://localhost:5678,http://${lan_ip}:5678,http://127.0.0.1:5678"
|
||||
fi
|
||||
|
||||
print_success "环境变量已优化设置"
|
||||
echo " - 中文界面: 已启用"
|
||||
echo " - 权限检查: 已启用"
|
||||
echo " - 废弃警告: 已禁用"
|
||||
echo " - 网络监听: 0.0.0.0:5678"
|
||||
if [ -n "$lan_ip" ]; then
|
||||
echo " - 局域网IP: ${lan_ip}"
|
||||
fi
|
||||
}
|
||||
|
||||
# 检查构建状态
|
||||
check_build() {
|
||||
if [ ! -d "packages/cli/dist" ] || [ ! -d "packages/core/dist" ]; then
|
||||
print_warning "检测到项目需要构建"
|
||||
read -p "是否现在构建项目?(y/N): " build_project
|
||||
|
||||
if [[ $build_project =~ ^[Yy]$ ]]; then
|
||||
print_info "正在构建项目..."
|
||||
pnpm build > build.log 2>&1 &
|
||||
BUILD_PID=$!
|
||||
|
||||
while kill -0 $BUILD_PID 2>/dev/null; do
|
||||
echo -n "."
|
||||
sleep 2
|
||||
done
|
||||
echo
|
||||
|
||||
if wait $BUILD_PID; then
|
||||
print_success "项目构建完成"
|
||||
else
|
||||
print_error "构建失败,请查看 build.log"
|
||||
tail -20 build.log
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# 启动 n8n
|
||||
start_n8n() {
|
||||
print_info "正在启动优化版 n8n 中文版..."
|
||||
|
||||
# 创建日志文件
|
||||
local log_file="n8n-$(date +%Y%m%d-%H%M%S).log"
|
||||
|
||||
# 启动 n8n(带优化参数)
|
||||
echo -e "${GREEN}正在启动 n8n 服务(无警告模式)...${NC}"
|
||||
NODE_NO_WARNINGS=1 NODE_OPTIONS="--no-deprecation" pnpm start > "$log_file" 2>&1 &
|
||||
N8N_PID=$!
|
||||
|
||||
# 等待启动
|
||||
echo -n "等待 n8n 启动"
|
||||
for i in {1..30}; do
|
||||
if curl -s http://localhost:5678 >/dev/null 2>&1; then
|
||||
break
|
||||
fi
|
||||
echo -n "."
|
||||
sleep 1
|
||||
done
|
||||
echo
|
||||
|
||||
# 检查是否启动成功
|
||||
if curl -s http://localhost:5678 >/dev/null 2>&1; then
|
||||
print_success "n8n 启动成功!"
|
||||
|
||||
# 获取局域网IP地址
|
||||
local lan_ip=""
|
||||
if [[ "$OSTYPE" == "darwin"* ]]; then
|
||||
lan_ip=$(ifconfig | grep "inet " | grep -v 127.0.0.1 | head -1 | awk '{print $2}')
|
||||
else
|
||||
lan_ip=$(hostname -I | awk '{print $1}')
|
||||
fi
|
||||
|
||||
echo
|
||||
echo -e "${GREEN}╔════════════════════════════════════════╗${NC}"
|
||||
echo -e "${GREEN}║ n8n 启动信息 ║${NC}"
|
||||
echo -e "${GREEN}╠════════════════════════════════════════╣${NC}"
|
||||
echo -e "${GREEN}║${NC} 📱 本地访问:"
|
||||
echo -e "${GREEN}║${NC} ${BLUE}http://localhost:5678${NC}"
|
||||
echo -e "${GREEN}║${NC}"
|
||||
if [ -n "$lan_ip" ]; then
|
||||
echo -e "${GREEN}║${NC} 🌐 局域网访问:"
|
||||
echo -e "${GREEN}║${NC} ${BLUE}http://${lan_ip}:5678${NC}"
|
||||
echo -e "${GREEN}║${NC}"
|
||||
echo -e "${GREEN}║${NC} 📌 提示: 统一使用以下地址"
|
||||
echo -e "${GREEN}║${NC} ${BLUE}http://${lan_ip}:5678${NC}"
|
||||
fi
|
||||
echo -e "${GREEN}╠════════════════════════════════════════╣${NC}"
|
||||
echo -e "${GREEN}║${NC} 🌏 界面语言: ${GREEN}中文 (zh-CN)${NC}"
|
||||
echo -e "${GREEN}║${NC} 📋 进程 PID: ${YELLOW}$N8N_PID${NC}"
|
||||
echo -e "${GREEN}║${NC} 📝 日志文件: ${YELLOW}$log_file${NC}"
|
||||
echo -e "${GREEN}║${NC} ✅ 无警告模式: ${GREEN}已启用${NC}"
|
||||
echo -e "${GREEN}╚════════════════════════════════════════╝${NC}"
|
||||
echo
|
||||
print_info "使用 Ctrl+C 停止服务"
|
||||
|
||||
if [ -n "$lan_ip" ]; then
|
||||
echo
|
||||
print_success "优化项:"
|
||||
echo " ✓ 配置文件权限已修复"
|
||||
echo " ✓ Node.js 废弃警告已禁用"
|
||||
echo " ✓ 局域网访问已配置"
|
||||
echo " ✓ CORS 已正确设置"
|
||||
fi
|
||||
|
||||
# 保持脚本运行并显示日志(过滤警告)
|
||||
trap 'print_info "正在停止 n8n..."; kill $N8N_PID 2>/dev/null; exit 0' INT
|
||||
tail -f "$log_file" | grep -v "DeprecationWarning" | grep -v "DEP0060"
|
||||
else
|
||||
print_error "n8n 启动失败"
|
||||
print_info "查看日志文件: $log_file"
|
||||
tail -20 "$log_file"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# 检查并切换到正确目录
|
||||
check_and_change_directory() {
|
||||
local current_dir="$(pwd)"
|
||||
local script_path="$(readlink -f "$0" 2>/dev/null || realpath "$0" 2>/dev/null || echo "$0")"
|
||||
local script_dir="$(dirname "$script_path")"
|
||||
|
||||
if [[ -f "package.json" && -d "packages" ]]; then
|
||||
print_info "检测到当前已在 n8n 项目目录"
|
||||
return 0
|
||||
fi
|
||||
|
||||
if [[ "$script_dir" == *"n8n-n8n-1.109.2"* ]]; then
|
||||
print_info "切换到脚本所在的 n8n 项目目录: $script_dir"
|
||||
cd "$script_dir" || {
|
||||
print_error "无法切换到目录: $script_dir"
|
||||
exit 1
|
||||
}
|
||||
print_success "已切换到正确的 n8n 项目目录"
|
||||
return 0
|
||||
fi
|
||||
|
||||
print_error "未找到 n8n 项目目录"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# 主函数
|
||||
main() {
|
||||
# 显示横幅
|
||||
show_banner
|
||||
|
||||
# 检查并切换到正确目录
|
||||
check_and_change_directory
|
||||
|
||||
# 修复权限
|
||||
fix_permissions
|
||||
|
||||
# 检查依赖
|
||||
check_dependencies
|
||||
|
||||
# 检查端口
|
||||
check_port
|
||||
|
||||
# 停止现有进程
|
||||
stop_existing
|
||||
|
||||
# 设置环境变量
|
||||
setup_environment
|
||||
|
||||
# 检查构建状态
|
||||
check_build
|
||||
|
||||
# 正常启动
|
||||
start_n8n
|
||||
}
|
||||
|
||||
# 运行主函数
|
||||
main "$@"
|
||||
34
n8n-n8n-1.109.2/start-windows.bat
Normal file
34
n8n-n8n-1.109.2/start-windows.bat
Normal file
@@ -0,0 +1,34 @@
|
||||
@echo off
|
||||
echo ================================================
|
||||
echo Starting n8n with Windows Configuration
|
||||
echo ================================================
|
||||
|
||||
REM 设置环境变量
|
||||
set N8N_PORT=5678
|
||||
set N8N_HOST=0.0.0.0
|
||||
set N8N_PROTOCOL=http
|
||||
set N8N_CORS_ENABLED=true
|
||||
set N8N_CORS_ORIGINS=http://localhost:*,http://192.168.*.*:*,http://127.0.0.1:*
|
||||
set N8N_USER_MANAGEMENT_DISABLED=true
|
||||
set N8N_SKIP_OWNER_SETUP=true
|
||||
set N8N_PUSH_BACKEND=websocket
|
||||
set WEBHOOK_URL=http://localhost:5678
|
||||
set N8N_DEFAULT_LOCALE=zh-CN
|
||||
set N8N_LOG_LEVEL=error
|
||||
set N8N_DIAGNOSTICS_ENABLED=false
|
||||
set N8N_ENCRYPTION_KEY=your-encryption-key-here
|
||||
|
||||
echo.
|
||||
echo Configuration:
|
||||
echo - Port: %N8N_PORT%
|
||||
echo - CORS: Enabled for all local/LAN access
|
||||
echo - Authentication: Disabled
|
||||
echo - Language: Chinese
|
||||
echo - WebSocket: Enabled
|
||||
echo.
|
||||
|
||||
REM 启动 n8n
|
||||
echo Starting n8n...
|
||||
pnpm start
|
||||
|
||||
pause
|
||||
@@ -99,16 +99,44 @@ stop_existing() {
|
||||
setup_environment() {
|
||||
print_info "正在设置环境变量..."
|
||||
|
||||
# 获取局域网IP地址
|
||||
local lan_ip=""
|
||||
if [[ "$OSTYPE" == "darwin"* ]]; then
|
||||
# macOS
|
||||
lan_ip=$(ifconfig | grep "inet " | grep -v 127.0.0.1 | head -1 | awk '{print $2}')
|
||||
else
|
||||
# Linux
|
||||
lan_ip=$(hostname -I | awk '{print $1}')
|
||||
fi
|
||||
|
||||
export N8N_DEFAULT_LOCALE=zh-CN
|
||||
export N8N_SECURE_COOKIE=false
|
||||
export DB_SQLITE_POOL_SIZE=5
|
||||
export N8N_RUNNERS_ENABLED=true
|
||||
export N8N_BLOCK_ENV_ACCESS_IN_NODE=false
|
||||
export N8N_HOST=0.0.0.0
|
||||
export N8N_PORT=5678
|
||||
|
||||
# 设置Webhook URL和Editor URL以支持局域网访问
|
||||
if [ -n "$lan_ip" ]; then
|
||||
export N8N_EDITOR_BASE_URL="http://${lan_ip}:5678"
|
||||
export WEBHOOK_URL="http://${lan_ip}:5678"
|
||||
export N8N_PROTOCOL=http
|
||||
fi
|
||||
|
||||
# Session和Cookie配置
|
||||
export N8N_SESSION_COOKIE_SAME_SITE=none
|
||||
export N8N_SESSION_COOKIE_SECURE=false
|
||||
|
||||
print_success "环境变量已设置"
|
||||
echo " - N8N_DEFAULT_LOCALE=zh-CN"
|
||||
echo " - N8N_SECURE_COOKIE=false"
|
||||
echo " - DB_SQLITE_POOL_SIZE=5"
|
||||
echo " - N8N_HOST=0.0.0.0 (监听所有网络接口)"
|
||||
echo " - N8N_PORT=5678"
|
||||
if [ -n "$lan_ip" ]; then
|
||||
echo " - N8N_EDITOR_BASE_URL=http://${lan_ip}:5678"
|
||||
fi
|
||||
echo " - Session配置已优化以支持局域网访问"
|
||||
}
|
||||
|
||||
# 检查构建状态
|
||||
@@ -166,9 +194,25 @@ start_n8n() {
|
||||
# 检查是否启动成功
|
||||
if curl -s http://localhost:5678 >/dev/null 2>&1; then
|
||||
print_success "n8n 启动成功!"
|
||||
|
||||
# 获取局域网IP地址
|
||||
local lan_ip=""
|
||||
if [[ "$OSTYPE" == "darwin"* ]]; then
|
||||
# macOS
|
||||
lan_ip=$(ifconfig | grep "inet " | grep -v 127.0.0.1 | head -1 | awk '{print $2}')
|
||||
else
|
||||
# Linux
|
||||
lan_ip=$(hostname -I | awk '{print $1}')
|
||||
fi
|
||||
|
||||
echo
|
||||
echo -e "${GREEN}========== 启动信息 ==========${NC}"
|
||||
echo -e "📱 访问地址: ${BLUE}http://localhost:5678${NC}"
|
||||
echo -e "📱 本地访问: ${BLUE}http://localhost:5678${NC}"
|
||||
if [ -n "$lan_ip" ]; then
|
||||
echo -e "🌐 局域网访问: ${BLUE}http://${lan_ip}:5678${NC}"
|
||||
echo -e "📌 提示: 局域网访问请使用 ${BLUE}http://${lan_ip}:5678${NC} 完整地址"
|
||||
echo -e " 避免使用 localhost 或 127.0.0.1"
|
||||
fi
|
||||
echo -e "🌏 界面语言: ${GREEN}中文 (zh-CN)${NC}"
|
||||
echo -e "📋 进程 PID: ${YELLOW}$N8N_PID${NC}"
|
||||
echo -e "📝 日志文件: ${YELLOW}$log_file${NC}"
|
||||
@@ -176,6 +220,14 @@ start_n8n() {
|
||||
echo
|
||||
print_info "使用 Ctrl+C 停止服务"
|
||||
|
||||
if [ -n "$lan_ip" ]; then
|
||||
echo
|
||||
print_warning "局域网访问注意事项:"
|
||||
echo " 1. 确保防火墙允许 5678 端口"
|
||||
echo " 2. 首次访问需要创建账户"
|
||||
echo " 3. 使用同一个IP地址保持登录状态"
|
||||
fi
|
||||
|
||||
# 保持脚本运行并显示日志
|
||||
trap 'print_info "正在停止 n8n..."; kill $N8N_PID 2>/dev/null; exit 0' INT
|
||||
tail -f "$log_file"
|
||||
|
||||
Reference in New Issue
Block a user