100 lines
3.2 KiB
Bash
100 lines
3.2 KiB
Bash
#!/bin/bash
|
|
# start_all.sh — Jalankan semua service sekaligus
|
|
# Usage: bash start_all.sh
|
|
|
|
set -e
|
|
|
|
# Semua path diturunkan dari lokasi skrip ini, bukan ditulis mutlak, supaya
|
|
# repo ini bisa di-clone ke folder mana pun di komputer siapa pun. Sebelumnya
|
|
# ketiganya menunjuk ke /Users/<satu orang>/..., jadi skrip ini pasti gagal di
|
|
# mesin lain.
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
|
|
# Layanan RAG ada DI DALAM repo ini (lengkap dengan chroma_db dan documents),
|
|
# jadi tidak perlu folder tetangga di luar repo.
|
|
RAG_DIR="$SCRIPT_DIR/AI Insight"
|
|
BACKEND_DIR="$SCRIPT_DIR/backend"
|
|
FRONTEND_DIR="$SCRIPT_DIR"
|
|
|
|
# `set -e` membuat cd yang gagal berhenti tanpa penjelasan. Periksa dulu supaya
|
|
# pesannya bisa dimengerti.
|
|
for dir in "$RAG_DIR" "$BACKEND_DIR"; do
|
|
if [ ! -d "$dir" ]; then
|
|
echo "❌ Folder tidak ditemukan: $dir"
|
|
echo " Jalankan skrip ini dari dalam repo hasil clone, jangan disalin keluar."
|
|
exit 1
|
|
fi
|
|
done
|
|
|
|
if [ ! -f "$BACKEND_DIR/.env" ]; then
|
|
echo "⚠️ $BACKEND_DIR/.env belum ada."
|
|
echo " Salin dari contohnya dulu: cp backend/.env.example backend/.env"
|
|
echo " Tanpa itu backend tidak tahu alamat database dan model LLM."
|
|
exit 1
|
|
fi
|
|
|
|
|
|
echo "====================================================="
|
|
echo " AI Insight - Starting All Services"
|
|
echo "====================================================="
|
|
|
|
# 1. RAG Service (Python FastAPI, port 5002)
|
|
echo ""
|
|
echo "[1/3] Starting RAG Service (port 5002)..."
|
|
pkill -f "rag_service.py" 2>/dev/null || true
|
|
sleep 1
|
|
cd "$RAG_DIR"
|
|
python3 rag_service.py > /tmp/rag_service.log 2>&1 &
|
|
RAG_PID=$!
|
|
echo " RAG Service PID: $RAG_PID"
|
|
echo " Logs: /tmp/rag_service.log"
|
|
|
|
# Tunggu RAG service ready
|
|
echo " Waiting for RAG Service to start..."
|
|
for i in {1..15}; do
|
|
if curl -s http://localhost:5002/health > /dev/null 2>&1; then
|
|
echo " ✅ RAG Service ready!"
|
|
break
|
|
fi
|
|
sleep 2
|
|
done
|
|
|
|
# 2. Backend Node.js (port 5001)
|
|
echo ""
|
|
echo "[2/3] Starting Backend (port 5001)..."
|
|
pkill -f "node server.js" 2>/dev/null || true
|
|
sleep 1
|
|
cd "$BACKEND_DIR"
|
|
npm run dev > /tmp/backend.log 2>&1 &
|
|
BACKEND_PID=$!
|
|
echo " Backend PID: $BACKEND_PID"
|
|
echo " Logs: /tmp/backend.log"
|
|
sleep 3
|
|
|
|
# 3. Frontend Vite (port 3000 atau 5173)
|
|
echo ""
|
|
echo "[3/3] Starting Frontend..."
|
|
cd "$FRONTEND_DIR"
|
|
npm run dev > /tmp/frontend.log 2>&1 &
|
|
FRONTEND_PID=$!
|
|
echo " Frontend PID: $FRONTEND_PID"
|
|
echo " Logs: /tmp/frontend.log"
|
|
sleep 3
|
|
|
|
echo ""
|
|
echo "====================================================="
|
|
echo " All services started!"
|
|
# Vite sering jatuh ke port lain kalau 3000 dipakai proses lain, jadi baca
|
|
# port yang benar-benar dipilih daripada menebak.
|
|
FRONTEND_URL="$(grep -m1 -o 'http://localhost:[0-9]*' /tmp/frontend.log 2>/dev/null || true)"
|
|
echo " 🌐 Frontend: ${FRONTEND_URL:-lihat /tmp/frontend.log}"
|
|
echo " 🔧 Backend API: http://localhost:5001 (health: /health)"
|
|
echo " 🧠 RAG Service: http://localhost:5002"
|
|
echo " 🤖 Ollama: http://localhost:11434 (docker compose up -d database llm)"
|
|
echo "====================================================="
|
|
echo ""
|
|
echo "To stop all: pkill -f 'rag_service.py'; pkill -f 'node server.js'; pkill -f 'vite'"
|
|
echo ""
|
|
echo "Watching logs (Ctrl+C to stop watching, services keep running):"
|
|
tail -f /tmp/backend.log
|