docs: 创建专业的项目 README 文档
详细说明: - 添加完整的项目介绍和架构说明 - 包含 7 个 AI Agent 的详细介绍 - 添加技术栈和 Mermaid 架构图 - 完善安装和使用指南 - 添加开发指南和 Git 工作流 - 新增 Windows 快速部署文档 - 更新前端组件和启动脚本 - 添加多种环境配置文件 修改的文件: - 新增 README.md 主文档 - 新增 doc/ 目录及部署文档 - 更新前端演示系统组件 - 添加多个启动脚本变体 - 配置文件优化 影响的功能模块: - 项目文档体系 - 部署和启动流程 - 前端展示系统 - 环境配置管理
This commit is contained in:
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 "$@"
|
||||
Reference in New Issue
Block a user