Menjalankan Node.js dengan PM2 menggunakan ecosystem.config.js

 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

  1. Buat file ecosystem.config.js

  2. Jalankan:

    pm2 start ecosystem.config.js --env production
    
  3. Simpan:

    pm2 save
    
  4. 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.