Deploy Aplikasi Web ke VPS (Ubuntu) Menggunakan Nginx & PM2
Deploy Aplikasi Web ke VPS (Ubuntu) Menggunakan Nginx & PM2”**.
---
# Deploy Aplikasi Web ke VPS (Ubuntu) Menggunakan Nginx & PM2
Setelah aplikasi web selesai dibuat, langkah berikutnya adalah **deploy** ke server agar bisa diakses publik. Pada artikel ini kita akan membahas cara deploy aplikasi Node.js ke VPS (Ubuntu) menggunakan **Nginx** sebagai web server & reverse proxy, serta **PM2** untuk manajemen proses.
---
## Prasyarat
* VPS dengan Ubuntu 20.04/22.04 (misalnya DigitalOcean, Vultr, AWS EC2).
* Domain (opsional, agar bisa pakai HTTPS).
* Aplikasi Node.js siap di-deploy.
* Akses SSH ke server.
---
## 1. Update & Install Dependensi
Login ke server via SSH:
```bash
ssh user@ip-server
```
Update paket:
```bash
sudo apt update && sudo apt upgrade -y
```
Install Node.js & npm (misalnya versi LTS):
```bash
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejs
```
Cek versi:
```bash
node -v
npm -v
```
---
## 2. Upload Aplikasi ke Server
Kirim project ke server via **git clone** atau **scp**.
Contoh dengan git:
```bash
git clone https://github.com/username/project.git
cd project
npm install
```
---
## 3. Menjalankan Aplikasi dengan PM2
Install PM2 secara global:
```bash
sudo npm install -g pm2
```
Jalankan aplikasi:
```bash
pm2 start index.js --name "myapp"
```
Agar tetap jalan setelah reboot:
```bash
pm2 startup systemd
pm2 save
```
---
## 4. Konfigurasi Nginx sebagai Reverse Proxy
Install Nginx:
```bash
sudo apt install nginx -y
```
Buat konfigurasi baru:
```bash
sudo nano /etc/nginx/sites-available/myapp
```
Isi dengan konfigurasi berikut:
```nginx
server {
listen 80;
server_name yourdomain.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:
```bash
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
```
---
## 5. Menambahkan SSL (Opsional tapi Disarankan)
Gunakan **Certbot** untuk HTTPS gratis dari Let’s Encrypt:
```bash
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
```
---
## 6. Selesai 🚀
Sekarang aplikasi Node.js kamu sudah:
* **Berjalan di background** dengan PM2.
* **Bisa diakses via domain/IP** melalui Nginx.
* **Aman** dengan SSL (jika pakai domain).
---
## Kesimpulan
Dengan **Nginx** dan **PM2**, aplikasi Node.js bisa berjalan stabil, aman, dan otomatis restart jika server reboot. Ini adalah setup dasar untuk production, yang bisa dikembangkan dengan load balancing, monitoring, dan CI/CD.
---
Comments
Post a Comment