Panduan Deploy Node.js di VPS Ubuntu 22.04: Nginx, PM2 & SSL

Berikut adalah cara deploy aplikasi Node.js di VPS Linux Ubuntu 22.04:
1. Persiapan Awal
Pertama, update sistem dan install dependensi:
sudo apt update sudo apt upgrade -y
2. Install Node.js
Ada beberapa cara, saya rekomendasikan menggunakan NodeSource:
# Install Node.js 20.x (atau versi LTS terbaru) curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - sudo apt install -y nodejs # Verifikasi instalasi node -v npm -v
3. Install PM2 (Process Manager)
PM2 untuk menjaga aplikasi tetap running dan auto-restart:
sudo npm install -g pm2
4. Upload Aplikasi ke VPS
Bisa menggunakan Git, SCP, atau FTP. Contoh dengan Git:
# Install git jika belum sudo apt install git -y # Clone repository cd /var/www sudo git clone https://github.com/username/repo-anda.git cd repo-anda # Install dependencies npm install
5. Jalankan Aplikasi dengan PM2
# Jalankan aplikasi pm2 start app.js --name "nama-app" # Atau jika pakai npm script pm2 start npm --name "nama-app" -- start # Simpan konfigurasi PM2 pm2 save # Auto-start PM2 saat server restart pm2 startup # Jalankan perintah yang muncul
6. Setup Nginx sebagai Reverse Proxy
Install Nginx:
sudo apt install nginx -y
Buat konfigurasi Nginx:
sudo nano /etc/nginx/sites-available/nama-app
Isi dengan:
server { listen 80; server_name domain-anda.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 konfigurasi:
sudo ln -s /etc/nginx/sites-available/nama-app /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl restart nginx
7. Setup Firewall
sudo ufw allow 'Nginx Full' sudo ufw allow OpenSSH sudo ufw enable
8. Setup SSL dengan Let's Encrypt (Opsional tapi Direkomendasikan)
sudo apt install certbot python3-certbot-nginx -y sudo certbot --nginx -d domain-anda.com
Perintah PM2 yang Berguna
pm2 list # Lihat semua aplikasi pm2 logs # Lihat logs pm2 restart nama-app # Restart aplikasi pm2 stop nama-app # Stop aplikasi pm2 delete nama-app # Hapus aplikasi pm2 monit # Monitor real-time
Tips Tambahan
- Gunakan file
.env
untuk environment variables - Jangan commit
node_modules
ke Git - Setup logging yang proper
- Backup database secara rutin
- Monitor resource usage
Apakah ada bagian yang ingin saya jelaskan lebih detail?