Menjalankan Aplikasi atau Bot Menggunakan PM2 Agar Aktif 24/7

PM2 adalah process manager untuk aplikasi Node.js (dan aplikasi JavaScript pada umumnya) yang berjalan di sisi server. Selain menjaga proses tetap hidup, PM2 menyediakan fitur auto-restart, manajemen log, pemantauan resource, hingga cluster mode untuk memanfaatkan banyak core CPU. Untuk membuat aplikasi atau bot aktif 24/7, PM2 akan menjalankan ulang proses yang berhenti dan — melalui perintah pm2 startup — mendaftarkan dirinya ke systemd agar ikut menyala saat VPS reboot.

Pengertian

PM2 bekerja dengan cara membungkus aplikasi kita dalam sebuah proses yang ia awasi. Jika aplikasi keluar karena error atau kehabisan memori, PM2 akan menjalankannya kembali sesuai aturan yang ditentukan (secara bawaan restart otomatis aktif). PM2 menyimpan daftar proses ke dalam dump file yang dipulihkan saat booting, sehingga aplikasi kembali berjalan tanpa intervensi manual.

Fungsi dan Manfaat

  • Auto-restart: proses yang mati akan otomatis dijalankan ulang, cocok untuk bot yang harus selalu online.
  • Startup otomatis: pm2 startup mengintegrasikan PM2 ke systemd agar daftar aplikasi pulih setelah reboot.
  • Manajemen log: seluruh output dapat dibaca dengan pm2 logs tanpa berkas log manual.
  • Monitoring: perintah pm2 monit menampilkan CPU, memori, dan status tiap proses secara langsung.
  • Cluster mode: menjalankan beberapa instance sekaligus untuk memanfaatkan multi-core dan melakukan zero-downtime reload.
  • Ecosystem file: konfigurasi banyak aplikasi disimpan rapi dalam ecosystem.config.js.

Kelebihan dan Kekurangan

AspekKelebihanKekurangan / Risiko
KemudahanPerintah sederhana, cocok untuk pemula Node.js.Fokus utama pada ekosistem Node.js.
KetahananAuto-restart dan startup otomatis via systemd.Lupa pm2 save menyebabkan proses tidak pulih saat reboot.
MonitoringDashboard pm2 monit dan log terpusat.Log dapat membesar bila tidak dibatasi.
SkalabilitasCluster mode untuk multi-core.Boros memori jika terlalu banyak instance.

Penggunaan (Cara Menggunakan PM2)

  1. Instal PM2 secara global:
    bash
    sudo npm install -g pm2
  2. Jalankan aplikasi atau bot (misalnya bot.js):
    bash
    pm2 start bot.js --name mybot
  3. Simpan daftar proses dan pasang startup agar aktif saat boot:
    bash
    pm2 save
    pm2 startup

Perintah pm2 startup akan mencetak baris perintah sudo env ... pm2 startup systemd -u ... yang harus dijalankan agar PM2 terdaftar di systemd.

  1. Perintah dasar yang sering dipakai:
    bash
    pm2 list            # melihat semua proses
    pm2 logs mybot      # melihat log
    pm2 restart mybot   # restart
    pm2 stop mybot      # menghentikan sementara
    pm2 delete mybot    # menghapus dari daftar

Untuk menjalankan beberapa aplikasi sekaligus dengan konfigurasi rapi, gunakan ecosystem.config.js:

javascript
module.exports = {
  apps: [
    {
      name: 'mybot',
      script: 'bot.js',
      instances: 1,
      autorestart: true,
      env: {
        NODE_ENV: 'production',
      },
    },
  ],
};

Lalu jalankan dengan pm2 start ecosystem.config.js dan pm2 save.

Troubleshoot

  • Tidak jalan setelah reboot: pastikan Anda menjalankan pm2 save (menyimpan daftar) dan pm2 startup (mendaftar ke systemd). Tanpa keduanya, proses tidak akan pulih otomatis.
  • Proses sering restart (looping): periksa aplikasi mengapa ia keluar. Cek pm2 logs mybot. Jika keluar karena error berulang, PM2 akan terus mencoba menjalankan ulang.
  • Log membesar: PM2 menyimpan log di ~/.pm2/logs/. Aktifkan rotasi dengan pm2 install pm2-logrotate dan atur batas ukurannya.
  • Ingin menjalankan non-root: jalankan pm2 startup systemd -u username --hp /home/username agar layanan PM2 berjalan sebagai user tersebut, bukan root.
  • Mengubah konfigurasi: setelah mengedit ecosystem.config.js, jalankan pm2 delete mybot lalu pm2 start ecosystem.config.js dan pm2 save kembali.

Artikel Terkait