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.
Contents
- 1 1. Persiapan VPS untuk NodeJS Production
- 2 2. Konfigurasi Dasar Server (Wajib)
- 3 3. Install NodeJS di VPS (Cara Aman)
- 4 4. Struktur Aplikasi NodeJS Production
- 5 5. Environment Variable (WAJIB)
- 6 6. Gunakan Process Manager (PM2)
- 7 7. Reverse Proxy dengan Nginx
- 8 8. HTTPS dengan SSL (WAJIB)
- 9 9. Keamanan Server untuk NodeJS
- 10 10. Logging & Monitoring
- 11 11. Zero Downtime Deployment
- 12 12. Backup & Recovery
- 13 13. Scaling NodeJS di VPS
- 14 14. Kesalahan Fatal Saat Deploy NodeJS
- 15 15. Checklist Deploy NodeJS Production
- 16 Kesimpulan
- 17 Related Posts
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.