Node.js merupakan platform JavaScript yang banyak digunakan untuk membangun aplikasi backend yang ringan, cepat, dan scalable. Ketika aplikasi Anda sudah selesai dikembangkan di lingkungan lokal, langkah berikutnya adalah deploy ke server VPS (Virtual Private Server) agar bisa diakses publik melalui internet.
Dalam artikel ini, kita akan membahas cara lengkap deploy aplikasi Node.js di VPS berbasis Linux (Ubuntu), dari instalasi Node.js hingga konfigurasi domain dan proses menjaga aplikasi agar tetap berjalan stabil.
Persiapan Awal
Sebelum memulai, pastikan Anda memiliki:
- VPS aktif dengan akses root (Ubuntu 20.04/22.04 disarankan)
- Aplikasi Node.js siap di-upload (bisa via Git, SCP, atau FTP)
- Nama domain (opsional, jika ingin mengakses aplikasi via domain)
Langkah 1: Akses VPS via SSH
Login ke VPS dengan SSH:
ssh root@IP_ADDRESS
Gantilah IP_ADDRESS
dengan alamat IP server Anda.
Langkah 2: Instalasi Node.js dan npm
Untuk instalasi Node.js versi terbaru, gunakan NodeSource:
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejs
Cek versi Node.js dan npm:
node -v
npm -v
Langkah 3: Upload Aplikasi ke VPS
Anda bisa meng-upload file aplikasi dengan beberapa cara:
Opsi 1: Clone dari GitHub
git clone https://github.com/username/nama-aplikasi.git
cd nama-aplikasi
Opsi 2: Upload manual via SCP (dari lokal ke server)
scp -r ./folder-aplikasi root@IP_ADDRESS:/home/
Setelah itu, login ke server dan pindah ke direktori aplikasi:
cd /home/folder-aplikasi
Langkah 4: Instal Dependensi
Pastikan Anda berada di dalam folder aplikasi Node.js, lalu jalankan:
npm install
Ini akan menginstal semua dependensi dari file package.json
.
Langkah 5: Jalankan Aplikasi
Untuk memastikan aplikasi berjalan, jalankan perintah:
node app.js
atau jika Anda menggunakan framework seperti Express.js dan file utama Anda index.js
:
node index.js
Namun, menjalankan aplikasi seperti ini hanya sementara — jika koneksi SSH terputus, aplikasi akan berhenti. Maka kita perlu process manager seperti PM2.
Langkah 6: Gunakan PM2 untuk Menjaga Aplikasi Tetap Berjalan
Instal PM2 secara global:
sudo npm install pm2 -g
Jalankan aplikasi Anda menggunakan PM2:
pm2 start app.js
PM2 akan memastikan aplikasi tetap berjalan di background bahkan setelah reboot.
Untuk menyimpan konfigurasi startup:
pm2 startup
pm2 save
Untuk melihat status aplikasi:
pm2 list
Langkah 7: Konfigurasi Reverse Proxy dengan NGINX
Agar aplikasi Node.js bisa diakses melalui port 80 atau domain Anda, gunakan NGINX sebagai reverse proxy.
Install NGINX:
sudo apt install nginx -y
Buat konfigurasi NGINX:
sudo nano /etc/nginx/sites-available/nodeapp
Isi dengan konfigurasi berikut:
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://localhost:3000; # Ganti dengan port aplikasi Anda
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/nodeapp /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
Sekarang Anda bisa mengakses aplikasi melalui IP atau domain Anda.
Langkah 8: (Opsional) Tambahkan SSL dengan Let’s Encrypt
Jika menggunakan domain, Anda bisa menambahkan HTTPS dengan Certbot:
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d yourdomain.com
Ikuti instruksi di layar dan sertifikat SSL akan otomatis terpasang.
Kesimpulan
Deploy aplikasi Node.js ke VPS bukanlah proses yang rumit, namun memerlukan pemahaman tentang server Linux, Node.js, dan konfigurasi NGINX. Dengan menggunakan PM2, aplikasi Anda akan tetap berjalan stabil, dan dengan NGINX, Anda bisa melayani aplikasi ke publik dengan port standar dan keamanan tambahan seperti HTTPS.
Rangkuman Langkah:
- Akses VPS dengan SSH
- Instal Node.js dan npm
- Upload aplikasi ke server
- Instal dependensi dan jalankan dengan PM2
- Konfigurasikan NGINX sebagai reverse proxy
- (Opsional) Aktifkan SSL
Dengan mengikuti panduan ini, Anda bisa dengan mudah mempublikasikan aplikasi Node.js ke internet dengan VPS pribadi Anda.