Banyak developer bisa menjalankan aplikasi Node.js di localhost tanpa masalah. Tapi begitu masuk ke tahap production di VPS (Virtual Private Server), banyak hal yang terasa berbeda. Mulai dari proses yang tiba-tiba berhenti saat SSH tertutup, hingga aplikasi yang tidak bisa diakses lewat domain. Ini bukan error kode, tapi soal setup server yang belum tepat.
Saat menjalankan aplikasi Node.js dengan perintah node atau npm, aplikasi akan berjalan di foreground dan langsung tertutup saat sesi terminal ditutup atau perintah Ctrl+C dijalankan. Cara ini jelas tidak bisa diimplementasikan di production. Artikel ini akan memandu kamu cara deploy Node.js di VPS secara benar untuk environment production.
Kenapa Deploy Node.js di VPS Lebih Baik dari Shared Hosting?
Shared hosting memang lebih murah, tapi punya banyak keterbatasan yang krusial untuk aplikasi Node.js production. VPS Ubuntu menjadi salah satu pilihan paling handal untuk deployment Node.js karena menyediakan dedicated resources, akses root penuh, performa Linux yang stabil, skalabilitas lebih baik, dan kompatibilitas tinggi dengan tools development.
Dengan VPS, kamu punya kendali penuh atas konfigurasi server, versi Node.js yang digunakan, hingga manajemen proses dan keamanan. Semua hal yang tidak bisa kamu lakukan di shared hosting.
Prasyarat Sebelum Mulai
Sebelum masuk ke langkah teknis, pastikan kamu sudah menyiapkan:
- VPS aktif berbasis Ubuntu 22.04 LTS dengan minimal 1 GB RAM
- Akses SSH ke server menggunakan user non-root dengan hak sudo
- Domain aktif yang sudah diarahkan A record-nya ke IP VPS
- Aplikasi Node.js yang sudah berjalan baik di environment local
Cara Deploy Aplikasi Node.js di VPS untuk Production
1. Login ke VPS dan Update Server
Langkah pertama selalu sama: login ke VPS via SSH dan pastikan semua package di server sudah up to date.
ssh username@IP_SERVER
sudo apt update && sudo apt upgrade -y
Proses update ini penting untuk memastikan server kamu bebas dari celah keamanan yang sudah diketahui sebelum aplikasi berjalan di atasnya.
2. Install Node.js via NodeSource
Hindari menginstall Node.js dari repository default Ubuntu karena versinya sering jauh tertinggal. Gunakan NodeSource untuk mendapatkan versi LTS terbaru:
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash –
sudo apt install nodejs -y
Verifikasi instalasi berhasil:
node –version
npm –version
NodeSource menjadi pilihan populer untuk server production karena menyediakan stable system-wide install dengan official builds yang dioptimalkan untuk Linux, termasuk versi LTS dan Current terbaru yang selalu diperbarui. Kalau kamu mengelola beberapa aplikasi dengan versi Node.js berbeda, pertimbangkan menggunakan nvm sebagai alternatif yang lebih fleksibel.
3. Upload Aplikasi ke VPS
Ada dua cara umum untuk memindahkan kode aplikasi ke server. Cara pertama dan paling direkomendasikan adalah via GitHub:
sudo apt install git -y
cd /home/username
git clone https://github.com/username/nama-app.git
cd nama-app
Cara kedua menggunakan SCP untuk transfer langsung dari local machine:
scp -r ./nama-app username@IP_SERVER:/home/username/
Untuk production, metode Git lebih disarankan karena memudahkan proses update dan rollback kode di kemudian hari.
4. Install Dependensi dan Jalankan Aplikasi
Setelah kode ada di server, install semua dependensi aplikasi:bash
npm install –production
Flag –production memastikan hanya dependensi yang dibutuhkan untuk production yang terinstall — bukan devDependencies seperti testing tools. Jika aplikasi kamu butuh build step (misalnya Next.js atau TypeScript):
npm run build
Coba jalankan dulu untuk memastikan tidak ada error:
node app.js
Kalau sudah berjalan normal di port yang diharapkan, hentikan dengan Ctrl+C. Kita akan kelola prosesnya dengan PM2 di langkah berikutnya.
5. Kelola Proses dengan PM2
PM2 adalah process manager yang wajib digunakan saat deploy Node.js di VPS untuk production. Menjalankan aplikasi Node.js langsung dengan node app.js hanya cocok untuk development. Di production, kamu butuh process manager yang menangani automatic restart, log management, dan cluster mode.
Install PM2 secara global:
npm install -g pm2
Jalankan aplikasi dengan PM2:
pm2 start app.js –name “nama-app”
pm2 save
pm2 startup
Aplikasi yang dikelola PM2 akan otomatis di-restart ketika crash atau berhenti karena alasan lain. Perintah pm2 startup memastikan aplikasi kembali berjalan otomatis setiap kali server di-reboot. Beberapa perintah PM2 yang berguna untuk monitoring:
- pm2 status — melihat status semua aplikasi yang berjalan
- pm2 logs nama-app — melihat log aplikasi secara real-time
- pm2 reload nama-app — reload aplikasi tanpa downtime
6. Konfigurasi Nginx sebagai Reverse Proxy
Nginx adalah server yang bertugas meneruskan traffic dari port 80 (HTTP) ke port aplikasi Node.js kamu (biasanya 3000). Ini memungkinkan aplikasi diakses via domain tanpa harus menyertakan nomor port.
Install Nginx:
sudo apt install nginx -y
Buat konfigurasi virtual host:
sudo nano /etc/nginx/sites-available/nama-app
Isi dengan konfigurasi berikut:
nginx
server {
listen 80;
server_name namadomain.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 dan restart Nginx:
sudo ln -s /etc/nginx/sites-available/nama-app /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
7. Amankan Koneksi dengan SSL
Aplikasi production tanpa HTTPS adalah risiko keamanan yang serius. Install Certbot untuk mendapatkan SSL gratis dari Let’s Encrypt:
sudo apt install certbot python3-certbot-nginx -y
sudo certbot –nginx -d namadomain.com
Certbot akan otomatis memodifikasi konfigurasi Nginx dan mengatur pembaruan sertifikat secara berkala. Setelah selesai, aplikasi Node.js kamu sudah bisa diakses via https://namadomain.com dengan koneksi yang aman.
Tips Keamanan Tambahan untuk Environment Production
Setelah berhasil deploy Node.js di VPS, ada beberapa langkah keamanan yang tidak boleh dilewatkan:
- Jangan jalankan aplikasi sebagai root. Gunakan user non-root dengan hak sudo untuk semua operasi server.
- Aktifkan firewall. Buka hanya port yang dibutuhkan: 22 (SSH), 80 (HTTP), dan 443 (HTTPS). Port 3000 tidak perlu dibuka ke publik karena Nginx sudah menangani proxy-nya.
- Set variabel environment dengan aman. Jangan hardcode API key atau kredensial database langsung di kode. Gunakan file .env dan pastikan file tersebut tidak ikut ke repository Git.
- Pantau log secara rutin. Gunakan pm2 logs untuk memantau log aplikasi. Aktifkan juga log rotation agar file log tidak terus membesar dan memenuhi storage server.
- Update dependensi secara berkala. Jalankan npm audit secara rutin untuk mendeteksi celah keamanan pada package yang digunakan.
Kesimpulan
Deploy Node.js di VPS untuk production memang membutuhkan lebih banyak konfigurasi dibanding sekadar menjalankan node app.js di local. Tapi dengan stack yang tepat — PM2 untuk manajemen proses, Nginx sebagai reverse proxy, dan SSL untuk keamanan koneksi — aplikasi kamu siap melayani traffic nyata secara stabil dan aman.Semua proses di atas tentu butuh VPS yang performa dan stabilitasnya bisa diandalkan. Nevacloud menyediakan cloud VPS dengan spesifikasi yang cocok untuk production Node.js. Mulai dari performa NVMe SSD, uptime tinggi, hingga skalabilitas yang mudah disesuaikan kebutuhan. Yuk, mulai deploy aplikasi kamu sekarang dengan infrastruktur cloud yang tepat bersama Nevacloud.


