1
0
Fork 0
notebooklm-api/setup.sh

113 lines
4.2 KiB
Bash
Executable File

#!/usr/bin/env bash
set -e
# ── Màu terminal ──────────────────────────────────────────────────────────────
GREEN='\033[0;32m'; YELLOW='\033[1;33m'; RED='\033[0;31m'; NC='\033[0m'
ok() { echo -e "${GREEN}${NC} $1"; }
warn() { echo -e "${YELLOW}!${NC} $1"; }
fail() { echo -e "${RED}${NC} $1"; exit 1; }
hdr() { echo -e "\n${GREEN}── $1 ──${NC}"; }
echo ""
echo " NotebookLM API — Setup"
echo " ======================"
# ── 1. Node.js ────────────────────────────────────────────────────────────────
hdr "Kiểm tra Node.js"
if ! command -v node &>/dev/null; then
fail "Node.js chưa được cài. Tải tại https://nodejs.org (cần v18+)"
fi
NODE_VER=$(node -e "process.exit(parseInt(process.versions.node))")
# node -e exit trick: dùng node để lấy version number
NODE_MAJOR=$(node -e "console.log(parseInt(process.versions.node))")
if [ "$NODE_MAJOR" -lt 18 ]; then
fail "Node.js $NODE_MAJOR quá cũ. Cần v18 trở lên."
fi
ok "Node.js $(node -v)"
# ── 2. Chrome ────────────────────────────────────────────────────────────────
hdr "Kiểm tra Google Chrome"
CHROME_FOUND=false
CHROME_PATHS=(
"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
"/Applications/Chromium.app/Contents/MacOS/Chromium"
"/usr/bin/google-chrome"
"/usr/bin/google-chrome-stable"
"/usr/bin/chromium-browser"
"/usr/bin/chromium"
)
for p in "${CHROME_PATHS[@]}"; do
if [ -f "$p" ]; then
ok "Chrome: $p"
CHROME_FOUND=true
break
fi
done
if [ "$CHROME_FOUND" = false ]; then
warn "Không tìm thấy Chrome — Puppeteer sẽ dùng Chromium tích hợp"
warn "Khuyến nghị cài Google Chrome: https://www.google.com/chrome"
fi
# ── 3. npm install ────────────────────────────────────────────────────────────
hdr "Cài đặt dependencies"
if [ -d "node_modules" ]; then
ok "node_modules đã tồn tại — bỏ qua npm install"
warn "Chạy 'npm install' thủ công nếu cần cập nhật packages"
else
npm install
ok "npm install xong"
fi
# ── 4. .env ───────────────────────────────────────────────────────────────────
hdr "Cấu hình môi trường"
if [ ! -f ".env" ]; then
if [ -f ".env.example" ]; then
cp .env.example .env
ok ".env tạo từ .env.example"
else
cat > .env <<'EOF'
PORT=3456
HEADLESS=false
# CHROME_PATH=/Applications/Google Chrome.app/Contents/MacOS/Google Chrome
API_KEY=
EOF
ok ".env tạo mới với cấu hình mặc định"
fi
else
ok ".env đã tồn tại"
fi
# ── 5. chrome-profile ─────────────────────────────────────────────────────────
if [ ! -d "chrome-profile" ]; then
mkdir -p chrome-profile
ok "Thư mục chrome-profile/ tạo mới"
fi
# ── 6. Kết quả ────────────────────────────────────────────────────────────────
echo ""
echo -e "${GREEN}Setup hoàn tất!${NC}"
echo ""
echo " Khởi động server:"
echo " npm start"
echo ""
echo " Sau khi server chạy, đăng nhập Google:"
echo " curl -X POST http://localhost:3456/api/auth/login"
echo ""
echo " Swagger UI: http://localhost:3456/docs"
echo " Tài liệu: API.md"
echo ""
# ── 7. Hỏi có muốn start ngay không ─────────────────────────────────────────
read -r -p "Khởi động server ngay bây giờ? [y/N] " REPLY
if [[ "$REPLY" =~ ^[Yy]$ ]]; then
echo ""
npm start
fi