Cara Deploy NodeJS di VPS Production untuk Sistem Stabil & Aman

Cara Deploy NodeJS di VPS Production untuk Sistem Stabil & Aman

Membangun aplikasi NodeJS secara lokal adalah satu hal. Menjalankannya di VPS production dengan aman, stabil, dan siap trafik bisnis adalah hal yang sangat berbeda.

Banyak aplikasi NodeJS gagal bukan karena kodenya buruk, tetapi karena deployment yang tidak siap production.

Masalah umum yang sering terjadi:

  • Aplikasi mati saat server restart
  • Memory leak tanpa monitoring
  • Error tidak terdeteksi
  • Keamanan server lemah
  • Scaling sulit

Artikel ini akan membahas cara deploy NodeJS di VPS production secara profesional, mulai dari persiapan server, konfigurasi keamanan, proses deployment, hingga best practice maintenance jangka panjang.


1. Persiapan VPS untuk NodeJS Production

1.1 Pilih VPS yang Tepat

Untuk aplikasi bisnis kecil–menengah:

  • 2 vCPU
  • 2–4 GB RAM
  • SSD storage

Provider apa pun bisa digunakan (AWS, GCP, DigitalOcean, Vultr, lokal), konsepnya sama.


1.2 Gunakan OS Linux (Ubuntu LTS)

Rekomendasi:

  • Ubuntu 20.04 atau 22.04 LTS

Alasan:

  • Stabil
  • Dokumentasi lengkap
  • Kompatibel dengan NodeJS ecosystem

2. Konfigurasi Dasar Server (Wajib)

2.1 Login Aman ke Server

Gunakan SSH key, jangan password.

ssh user@ip-server

Nonaktifkan login root via SSH setelah setup.


2.2 Update Sistem

sudo apt update && sudo apt upgrade -y

2.3 Install Tool Dasar

sudo apt install -y curl git build-essential

3. Install NodeJS di VPS (Cara Aman)

3.1 Gunakan Node Version Manager (NVM)

Jangan install NodeJS langsung via apt.

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash

Reload shell:

source ~/.bashrc

Install versi LTS:

nvm install --lts
nvm use --lts

Keuntungan NVM:

  • Mudah upgrade
  • Isolasi versi
  • Aman untuk production

4. Struktur Aplikasi NodeJS Production

Struktur ideal:

/var/www/app-name
 ├── src
 ├── config
 ├── logs
 ├── .env
 ├── package.json

Pisahkan:

  • Konfigurasi
  • Kode
  • Log

5. Environment Variable (WAJIB)

5.1 Jangan Hardcode Konfigurasi

Gunakan .env:

NODE_ENV=production
PORT=3000
DB_HOST=localhost
JWT_SECRET=xxxx

Gunakan library:

npm install dotenv
require('dotenv').config();

6. Gunakan Process Manager (PM2)

6.1 Kenapa PM2 Wajib di Production?

Tanpa PM2:

  • App mati → server reboot → mati selamanya

Dengan PM2:

  • Auto restart
  • Log management
  • Monitoring memory & CPU

Install PM2:

npm install -g pm2

Jalankan aplikasi:

pm2 start src/index.js --name app-production

Autostart saat reboot:

pm2 startup
pm2 save

7. Reverse Proxy dengan Nginx

7.1 Kenapa Tidak Langsung Buka Port NodeJS?

Masalah:

  • Tidak aman
  • Tidak scalable
  • Tidak SEO friendly

Solusi: Nginx sebagai reverse proxy


7.2 Install Nginx

sudo apt install nginx -y

7.3 Konfigurasi Nginx untuk NodeJS

server {
    listen 80;
    server_name domainanda.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;
    }
}

Aktifkan config:

sudo ln -s /etc/nginx/sites-available/app /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

8. HTTPS dengan SSL (WAJIB)

8.1 Install Certbot

sudo apt install certbot python3-certbot-nginx -y

Generate SSL:

sudo certbot --nginx -d domainanda.com

Auto renew:

sudo certbot renew --dry-run

9. Keamanan Server untuk NodeJS

9.1 Firewall (UFW)

sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw enable

9.2 Jangan Jalankan NodeJS sebagai Root

Gunakan user khusus:

adduser nodeapp

9.3 Lindungi Environment Variable

  • Permission file .env
  • Jangan commit ke Git

10. Logging & Monitoring

10.1 Logging dengan PM2

pm2 logs

Pisahkan:

  • error.log
  • access.log

10.2 Monitoring Resource

pm2 monit

Pantau:

  • Memory leak
  • CPU spike

11. Zero Downtime Deployment

11.1 Restart Aman

pm2 reload app-production

Bukan:

pm2 restart

11.2 Git-Based Deployment

git pull origin main
npm install --production
pm2 reload app-production

12. Backup & Recovery

Wajib:

  • Backup database
  • Backup env config
  • Snapshot VPS

Jangan menunggu insiden.


13. Scaling NodeJS di VPS

13.1 Cluster Mode PM2

pm2 start src/index.js -i max

Gunakan semua core CPU.


13.2 Kapan Perlu Load Balancer?

  • CPU > 70% terus
  • Traffic tinggi
  • Multi VPS

14. Kesalahan Fatal Saat Deploy NodeJS

❌ Tidak pakai PM2
❌ Tidak pakai HTTPS
❌ Jalankan sebagai root
❌ Tidak ada monitoring
❌ Hardcode secret
❌ Tidak pakai reverse proxy


15. Checklist Deploy NodeJS Production

✅ Ubuntu LTS
✅ NodeJS LTS via NVM
✅ PM2
✅ Nginx reverse proxy
✅ HTTPS
✅ Firewall
✅ Environment variable
✅ Monitoring
✅ Backup


Kesimpulan

Deploy NodeJS ke VPS production bukan sekadar “jalan atau tidak”.
Yang penting adalah:

  • Stabil
  • Aman
  • Mudah dirawat
  • Siap scaling

Dengan setup yang benar:

  • NodeJS sangat andal untuk aplikasi bisnis
  • Downtime bisa ditekan
  • Risiko keamanan berkurang drastis

Deployment yang baik adalah fondasi aplikasi yang sukses.