Files
Agent-n8n/n8n-n8n-1.109.2/start-noauth.sh
Yep_Q 2fcaf21842 docs: 创建专业的项目 README 文档
详细说明:
- 添加完整的项目介绍和架构说明
- 包含 7 个 AI Agent 的详细介绍
- 添加技术栈和 Mermaid 架构图
- 完善安装和使用指南
- 添加开发指南和 Git 工作流
- 新增 Windows 快速部署文档
- 更新前端组件和启动脚本
- 添加多种环境配置文件

修改的文件:
- 新增 README.md 主文档
- 新增 doc/ 目录及部署文档
- 更新前端演示系统组件
- 添加多个启动脚本变体
- 配置文件优化

影响的功能模块:
- 项目文档体系
- 部署和启动流程
- 前端展示系统
- 环境配置管理
2025-09-14 18:53:27 +08:00

217 lines
6.9 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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 "$@"