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. Pasang startup dan simpan daftar proses agar aktif saat boot:
    bash
    pm2 startup
    pm2 save

Perintah pm2 startup akan mencetak baris perintah sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u user --hp /home/user yang harus disalin dan dijalankan agar PM2 terdaftar di systemd. Setelah itu, jalankan pm2 save untuk menyimpan daftar proses.

  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 startup (mendaftar ke systemd) lalu pm2 save (menyimpan daftar). 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