Lewati ke konten
RazinSaid

Deploy Aplikasi Node.js ke VPS dengan PM2

RS
Razin Said
4 menit baca

Pernah nggak, kamu jalanin app Node.js di VPS pakai node app.js, terus begitu terminal ditutup atau server reboot, aplikasinya langsung mati? Nah, di situlah PM2 masuk. PM2 ini process manager yang tugasnya bikin aplikasi kamu tetap hidup: dia jaga app tetap jalan, auto-restart pas crash, dan otomatis nyala lagi tiap VPS booting. Yuk kita bahas langkahnya pelan-pelan dari nol.

Apa Itu PM2 dan Kenapa Perlu?

PM2 (kepanjangannya Process Manager 2) itu tool buat ngurus aplikasi Node.js di lingkungan produksi. Beberapa hal yang dia kerjain:

  • Jalanin aplikasi di background (daemon), jadi nggak keiket sama sesi terminal.
  • Auto-restart aplikasi kalau crash atau kebanyakan makan memori.
  • Nyalain aplikasi otomatis tiap server hidup.
  • Kasih log dan monitoring sederhana.

Tanpa PM2, kamu harus ngakalin semua ini manual pakai systemd atau screen. Ribet. Makanya PM2 bikin urusannya jauh lebih ringkas.

Persiapan VPS

Sebelum mulai, pastikan kamu udah punya akses ke VPS dan lumayan nyaman main di terminal. Kalau masih agak asing, mending baca dulu perintah Linux dasar untuk developer biar navigasi di server nggak bikin bingung. Soal keamanan dasar server, boleh juga mampir ke cara hardening VPS Ubuntu dari serangan.

Langkah awal, instal Node.js dulu. Cara yang paling rapi lewat NodeSource. Ini contoh buat Node.js versi LTS:

curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt install nodejs -y

Habis itu cek instalasinya udah bener apa belum:

node -v
npm -v

Menyiapkan Aplikasi

Sekarang naikin kode aplikasi ke VPS. Biasanya sih paling gampang lewat git clone dari repo kamu:

git clone https://github.com/username/aplikasi-saya.git
cd aplikasi-saya
npm install

Sebelum lanjut, coba jalanin aplikasinya manual dulu buat mastiin nggak ada error yang nyangkut:

node app.js

Kalau aplikasi kamu dengerin di port tertentu (misal 3000), buka aja di browser pakai IP VPS plus port-nya. Udah kelihatan jalan? Stop dulu pakai Ctrl + C, terus kita lanjut pasang PM2.

Memasang dan Menjalankan dengan PM2

Pasang PM2 secara global lewat npm:

sudo npm install -g pm2

Terus jalanin aplikasi kamu pakai PM2:

pm2 start app.js --name aplikasi-saya

Flag --name itu buat ngasih nama biar gampang dikenali. Nah, sekarang aplikasi udah jalan di background. Coba lihat daftar process yang lagi dikelola PM2:

pm2 list

Bakal muncul tabel isinya nama, status (online), sama pemakaian memori. Kalau mau intip log-nya langsung:

pm2 logs aplikasi-saya

Bikin App Jalan Otomatis Saat Boot

Bagian ini penting banget, soalnya inilah yang bikin aplikasi tetap hidup setelah server reboot. PM2 punya fitur startup yang otomatis bikinin skrip systemd:

pm2 startup

Perintah ini bakal ngeluarin satu baris perintah yang harus kamu salin terus jalanin (biasanya diawali sudo env PATH=...). Habis itu dijalanin, simpan daftar process yang lagi aktif sekarang biar PM2 tahu apa aja yang harus dinyalain lagi nanti:

pm2 save

Beres. Sekarang kalau VPS reboot, aplikasi kamu bakal otomatis hidup lagi. Mau ngetes? Coba sudo reboot, terus masuk lagi dan jalanin pm2 list buat mastiin statusnya online.

Ngurus Aplikasi Sehari-hari

Beberapa perintah PM2 yang bakal sering kamu pakai:

pm2 restart aplikasi-saya   # restart setelah update kode
pm2 stop aplikasi-saya      # hentikan sementara
pm2 delete aplikasi-saya    # hapus dari daftar PM2
pm2 monit                   # pantau CPU dan memori real-time

Habis narik kode baru pakai git pull, alurnya biasanya gini: npm install dulu (kalau ada dependensi baru), baru pm2 restart aplikasi-saya.

Menyambungkan dengan nginx

Aplikasi Node.js umumnya jalan di port kayak 3000, sementara pengunjung ngaksesnya lewat port 80 atau 443. Nah, solusinya pakai reverse proxy pakai nginx, yang tugasnya nerusin request dari domain ke aplikasi Node.js kamu.

server {
    listen 80;
    server_name app.contoh.com;

    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

Kalau reverse proxy-nya udah aktif, jangan lupa amanin pakai HTTPS lewat cara pasang SSL Let's Encrypt gratis di nginx.

FAQ

Apa bedanya PM2 sama systemd?

Dua-duanya sama-sama bisa jaga process tetap hidup. Bedanya, PM2 emang dirancang khusus buat Node.js, lengkap sama fitur kayak cluster mode, reload tanpa downtime, dan monitoring bawaan. Jadi buat developer JavaScript ya lebih praktis.

PM2 bisa jalanin banyak aplikasi sekaligus nggak?

Bisa banget. Tinggal jalanin beberapa pm2 start dengan nama beda-beda. Semuanya bakal muncul di pm2 list dan diurus terpisah.

Gimana kalau aplikasi terus-terusan crash setelah dijalanin PM2?

Cek dulu penyebabnya lewat pm2 logs nama-app. PM2 emang bakal terus nyoba restart, tapi kamu tetap harus benerin bug di kode yang bikin app-nya crash. Kalau nggak, ya restart-nya bakal muter terus.

Penutup

Intinya, dengan PM2 aplikasi Node.js kamu jadi tahan banting di produksi: tetap hidup, auto-restart, dan otomatis nyala pas server dinyalain. Tambahin reverse proxy nginx sama SSL, kamu udah punya setup deploy yang beneran layak produksi.

Satu tips kecil tapi sering kelupaan: selalu jalanin pm2 save tiap habis ngubah daftar aplikasi yang jalan. Banyak yang skip langkah ini, terus kaget aplikasinya nggak ikut hidup setelah server reboot.

Bagikan: XWhatsAppFacebookLinkedIn

Artikel terkait