5.3 KiB
Setup — dari clone sampai aplikasi terbuka dengan data
Panduan ini untuk komputer yang belum pernah menjalankan proyek ini. Ikuti berurutan; setiap langkah punya cara memastikan ia berhasil.
Perkiraan waktu: 20–40 menit, sebagian besar menunggu unduhan model LLM (~5 GB).
Yang harus sudah terpasang
| Cara memeriksa | |
|---|---|
| Docker Desktop | docker info |
| Node.js 18+ | node -v |
| Python 3.10+ | python3 --version |
1. Clone dan pasang dependensi
git clone https://github.com/abdshomad/dashboard-solusi-ai-peternakan-ayam.git
cd dashboard-solusi-ai-peternakan-ayam
git checkout Alfreda
npm install
npm install --prefix backend
pip3 install -r "AI Insight/requirements.txt"
2. Siapkan file .env
Ada dua file, dan DB_PASSWORD di keduanya harus sama persis.
cp .env.example .env
cp backend/.env.example backend/.env
Buka keduanya, ganti DB_PASSWORD dengan satu password yang sama.
Jebakan paling sering:
DB_PORTharus 15432, bukan 5432. Postgres di Docker dipetakan ke 15432 supaya tidak bentrok dengan Postgres yang mungkin sudah terpasang di komputer Anda. Nilai ini sudah benar dibackend/.env.example— jangan diubah jadi 5432.
3. Nyalakan Postgres dan Ollama
Hanya dua container ini. Jangan docker compose up seluruhnya — container
backend/frontend/rag akan berebut port dengan proses yang dijalankan
start_all.sh di langkah 6.
docker compose up -d database llm
Tunggu sampai database siap:
until docker exec dashboard-database pg_isready -U dashboard_user -d dashboard_db; do sleep 1; done
Kalau port 11434 bentrok: aplikasi Ollama bawaan macOS menahannya. Matikan
dulu dengan osascript -e 'quit app "Ollama"'.
4. Unduh model LLM
Sekitar 5 GB, jalan sekali saja.
docker exec dashboard-llm ollama pull qwen2.5:7b
Pastikan sudah ada:
curl -s http://localhost:11434/api/tags | grep qwen2.5
Nama model ini harus sama dengan LLM_MODEL_NAME di backend/.env. Kalau
berbeda, semua AI Insight gagal dengan error model not found.
5. Isi database
Langkah ini tidak otomatis. Skema dan migrasi memang dibuat sendiri saat backend start, tapi tabelnya akan kosong. Tanpa langkah ini dashboard terbuka tanpa kandang, tanpa siklus, dan semua AI Insight menulis "data tidak tersedia" — yang mudah disalahartikan sebagai aplikasi rusak.
docker exec -i dashboard-database psql -U dashboard_user -d dashboard_db < backup.sql
Pastikan datanya masuk:
docker exec dashboard-database psql -U dashboard_user -d dashboard_db -c \
"select count(*) from mortality_records;"
Harusnya 270.
6. Jalankan aplikasinya
bash start_all.sh
Skrip ini menyalakan tiga layanan (RAG, backend, frontend) lalu menampilkan alamat yang harus dibuka, misalnya:
🌐 Frontend: http://localhost:3000
🔧 Backend API: http://localhost:5001 (health: /health)
🧠 RAG Service: http://localhost:5002
Bukalah alamat yang tertulis di keluaran itu, jangan diasumsikan. Vite
memakai port 3000, tapi mundur ke 3001, 3002, dan seterusnya kalau port itu
sedang dipakai proses lain. Backend menerima port localhost mana pun saat
NODE_ENV=development, jadi berapa pun portnya aplikasinya tetap jalan.
Skrip berakhir dengan tail -f pada log backend dan tidak pernah keluar
sendiri. Tekan Ctrl+C untuk berhenti menonton log — layanannya tetap hidup.
7. Pastikan semuanya benar-benar hidup
curl -s -o /dev/null -w "backend %{http_code}\n" http://localhost:5001/health
curl -s -o /dev/null -w "rag %{http_code}\n" http://localhost:5002/health
curl -s http://localhost:5001/api/kandangs | head -c 80
Ketiganya harus 200, dan perintah terakhir harus mengembalikan
{"success":true,"data":[{"id":1,"name":"Kandang Atas"....
Kalau /health sudah 200 tapi /api/kandangs gagal, berarti backend hidup
tapi database tidak terjangkau — periksa ulang DB_PORT=15432 di langkah 2.
Menghentikan semuanya
pkill -f "rag_service.py"; pkill -f "node server.js"; pkill -f vite
docker compose stop database llm # opsional
Kalau ada yang salah
| Gejala | Penyebab yang paling mungkin |
|---|---|
ECONNREFUSED 127.0.0.1:15432 |
container database belum jalan, atau DB_PORT salah |
| Dashboard terbuka tapi semua angka kosong | langkah 5 (isi database) terlewat |
| AI Insight error model not found | LLM_MODEL_NAME tidak cocok dengan model yang di-pull |
Folder tidak ditemukan: .../AI Insight |
start_all.sh dijalankan dari salinan di luar repo |
| Halaman tampil tapi data gagal dimuat | backend mati — cek /tmp/backend.log |
| Generate AI Insight lama sekali | wajar: 2–5 menit per laporan di CPU. Cek /tmp/backend.log |
Log ada di /tmp/backend.log, /tmp/frontend.log, dan /tmp/rag_service.log.
Catatan teknis yang lebih dalam — keputusan desain, jebakan yang sudah
ditemukan, dan pekerjaan yang masih terbuka — ada di CATATAN-LANJUTAN.md.