Berikut panduan lengkap dan rapi untuk menjalankan aplikasi Node.js dengan PM2 menggunakan ecosystem.config.js.
Ini adalah cara terbaik untuk production, karena:
-
bisa menyimpan banyak konfigurasi (env, mode cluster, log)
-
bisa restart otomatis
-
bisa auto deploy
-
rapi & profesional (digunakan banyak developer)
✅ 1. Buat File Ecosystem
Di folder project kamu, jalankan:
pm2 init
Akan muncul file:
ecosystem.config.js
Namun file default sangat basic.
Di bawah ini saya buatkan versi production-grade yang lebih bagus.
🟦 2. Contoh ecosystem.config.js (Rekomendasi untuk Server ISP)
Buat file:
ecosystem.config.js
Isi dengan:
module.exports = {
apps: [
{
name: "radius-server",
script: "./src/index.js",
instances: "max", // gunakan semua CPU
exec_mode: "cluster", // mode cluster
watch: false, // matikan watch (bahaya di production)
env: {
NODE_ENV: "development"
},
env_production: {
NODE_ENV: "production"
},
error_file: "./logs/error.log",
out_file: "./logs/output.log",
log_date_format: "YYYY-MM-DD HH:mm:ss",
max_memory_restart: "500M" // restart jika RAM > 500MB
}
]
}
Catatan:
-
instances: "max"→ scaling otomatis sesuai jumlah core CPU. -
logs berada di folder
logs(buat manual):
mkdir logs
🟩 3. Menjalankan PM2 Menggunakan Ecosystem
Jika file ecosystem ada di folder project:
Development
pm2 start ecosystem.config.js
Production
pm2 start ecosystem.config.js --env production
Cek status:
pm2 status
🟨 4. Restart Menggunakan Ecosystem
pm2 restart ecosystem.config.js --env production
Atau untuk semua app:
pm2 restart all
🟧 5. Stop / Delete App
Stop:
pm2 stop radius-server
Delete:
pm2 delete radius-server
🟦 6. Auto Start PM2 Saat Server Reboot
pm2 startup
PM2 akan memberikan command tambahan seperti:
sudo env PATH=$PATH:/usr/bin pm2 startup systemd -u root --hp /root
Copy paste perintah tersebut.
Lalu simpan proses aktif:
pm2 save
🟪 7. Auto Deploy ke Server (Opsional & Keren)
PM2 ecosystem bisa buat auto-deploy via Git.
Tambahkan:
deploy: {
production: {
user: "root",
host: "123.123.123.123",
ref: "origin/main",
repo: "git@github.com:username/repo.git",
path: "/srv/nodejs-radius",
'post-deploy': "npm install && pm2 reload ecosystem.config.js --env production"
}
}
Deployment:
pm2 deploy production
🟢 8. Contoh .env Jika Butuh
Untuk aplikasi Node.js + PostgreSQL:
NODE_ENV=production
PORT=3000
DB_HOST=127.0.0.1
DB_USER=radius_user
DB_PASS=xxxx
DB_NAME=radiusdb
PM2 otomatis membaca .env jika kamu memuatnya di kode.
🎯 Ringkasan Cara Praktis
-
Buat file ecosystem.config.js
-
Jalankan:
pm2 start ecosystem.config.js --env production -
Simpan:
pm2 save -
Buat auto boot:
pm2 startup
Selesai.
Kalau kamu mau, saya bisa:
-
buat file ecosystem khusus untuk Node.js Radius Server kamu
-
buat version untuk OLT Management App
-
buat template folder production lengkap (pm2, logs, backup, deploy script)
Tinggal bilang saja.
