5.6 KiB
🚨 URGENT: Railway Worker Setup - Step by Step
❌ Masalah: Tidak Ada Log di Railway
Berdasarkan screenshot Firebase Anda, data kontrol sudah BENAR ✅:
{
"waktu": true,
"waktu_1": "06:41",
"waktu_2": "16:38",
"durasi_1": 600,
"durasi_2": 104
}
Root Cause: Railway Worker belum running atau tidak bisa akses Firebase.
✅ SOLUSI LENGKAP
🎯 Opsi 1: Test Lokal Dulu (RECOMMENDED)
Sebelum deploy ke Railway, test koneksi Firebase di komputer Anda:
Step 1: Download Firebase Service Account Key
- Buka Firebase Console
- Pilih project Project TA (project-ta-951b4)
- Klik ⚙️ Project Settings (pojok kiri bawah)
- Tab Service Accounts
- Klik Generate New Private Key
- Download file JSON (jangan share ke siapapun!)
Step 2: Setup Environment Variables Lokal
-
Buka file JSON yang di-download
-
Copy 3 nilai ini:
{ "project_id": "project-ta-951b4", "private_key": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n", "client_email": "firebase-adminsdk-xxxxx@project-ta-951b4.iam.gserviceaccount.com" } -
Buat file
.envdi folderrailway-worker/:cd f:\ApsGo\ApsGo\railway-worker copy .env.template .env notepad .env -
Isi dengan credentials dari JSON:
FIREBASE_PROJECT_ID=project-ta-951b4 FIREBASE_CLIENT_EMAIL=firebase-adminsdk-xxxxx@project-ta-951b4.iam.gserviceaccount.com FIREBASE_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\nMIIEv...\n-----END PRIVATE KEY-----\n" FIREBASE_DATABASE_URL=https://project-ta-951b4-default-rtdb.firebaseio.comPENTING untuk FIREBASE_PRIVATE_KEY:
- Harus ada quotes:
"..." - Harus ada
\ndi awal dan akhir - Jangan ubah format dari JSON
- Harus ada quotes:
Step 3: Test Koneksi Firebase
cd f:\ApsGo\ApsGo\railway-worker
npm run test:firebase
Expected output:
✅ All required environment variables are set
✅ Firebase Admin SDK initialized
✅ Successfully read /kontrol data
✅ Waktu mode is ENABLED
✅ Jadwal 1: 06:41
✅ Jadwal 2: 16:38
Jika berhasil:
- Credentials Anda benar ✅
- Firebase accessible ✅
- Siap deploy ke Railway ✅
Jika error:
- Check private key format (harus ada quotes dan \n)
- Check client email benar
- Check Firebase Database rules allow admin access
Step 4: Test Worker Lokal (Optional)
Jika koneksi OK, test worker secara lokal:
# Install Redis lokal (optional, skip jika tidak punya)
# Atau comment out Redis parts di worker.js untuk test
# Run worker
npm run dev
Tunggu sampai waktu schedule (06:41 atau 16:38), worker akan trigger otomatis.
🎯 Opsi 2: Deploy Langsung ke Railway
Jika test lokal berhasil, deploy ke Railway:
Step 1: Commit Changes
cd f:\ApsGo\ApsGo
git add .
git commit -m "Update Railway Worker configuration"
git push origin main
Step 2: Setup Railway Environment Variables
- Login ke Railway Dashboard
- Pilih project ApsGo
- Klik service worker
- Tab Variables
- Tambahkan 4 variables (gunakan nilai yang sama dari .env lokal):
| Variable | Value |
|---|---|
FIREBASE_PROJECT_ID |
project-ta-951b4 |
FIREBASE_CLIENT_EMAIL |
firebase-adminsdk-xxxxx@project-ta-951b4.iam.gserviceaccount.com |
FIREBASE_PRIVATE_KEY |
"-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n" |
FIREBASE_DATABASE_URL |
https://project-ta-951b4-default-rtdb.firebaseio.com |
CRITICAL: Copy-paste EXACT values from your working local .env file!
Step 3: Redeploy
Railway will auto-redeploy after adding variables, or manually:
- Tab Deployments
- Klik ... (three dots)
- Redeploy
Step 4: Check Logs
Tab Logs, expected output:
🚀 Starting ApsGo Railway Worker...
✅ All required environment variables are set
✅ Firebase Admin initialized
✅ Redis connected
✨ ApsGo Railway Worker is running!
⏰ Checking scheduled watering...
🔍 Quick Troubleshooting
Error: "Missing environment variables"
→ .env file tidak ada atau belum diisi → Fix: Ikuti Step 2 di atas
Error: "Firebase initialization failed"
→ Private key format salah → Fix: Copy EXACT value dari JSON, dengan quotes dan \n
Error: "PERMISSION_DENIED"
→ Firebase rules tidak allow service account → Fix: Check Firebase Realtime Database Rules
No Error, tapi No Logs
→ Worker belum deploy/running → Fix: Check Railway Deployments tab
📊 Verifikasi Data Firebase (From Your Screenshot)
✅ Your Firebase data is CORRECT:
kontrol/
├─ waktu: true ✅ Mode enabled
├─ waktu_1: "06:41" ✅ Schedule 1
├─ waktu_2: "16:38" ✅ Schedule 2
├─ durasi_1: 600 ✅ 10 minutes
├─ durasi_2: 104 ✅ 1.7 minutes
├─ batas_atas: 80 ✅ Sensor threshold
├─ batas_bawah: 50 ✅
├─ otomatis: false ℹ️ Sensor mode disabled
└─ mode_sensor: "smart" ✅
Flutter app sudah benar! Masalahnya di Railway Worker yang belum running.
🎯 Next Steps
MULAI DARI SINI:
-
✅ Test koneksi Firebase lokal:
cd f:\ApsGo\ApsGo\railway-worker npm run test:firebase -
✅ Jika berhasil, deploy ke Railway (ikuti Opsi 2)
-
✅ Monitor Railway logs
-
✅ Test dengan set jadwal 2-3 menit dari sekarang
📞 Need Help?
Jika masih stuck:
- Screenshot output dari
npm run test:firebase - Screenshot Railway logs (jika sudah deploy)
- Screenshot Firebase Service Account settings
Mari kita debug bersama!