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

Popular posts from this blog

Masa Depan Energi: Energi Terbarukan dan Smart Grid di Indonesia

Membangun Sistem Smart Home dari Nol

Teknologi dan Etika: Menjaga Moralitas di Era Digital