Setting Reverse Proxy Openlitespeed Cyberpanel untuk Menjalankan Aplikasi Nodejs

Cara Setting Reverse Proxy Openlitespeed Cyberpanel untuk menjalankan aplikasi nodejs (svelte, react, vue, dll)


JagoTekno.com - Pada hari ini saya menemukan cara untuk setting reverse proxy pada web server Cyberpanel (OpenLiteSpeed).

Awal mula

Awalnya saya mendapatkan pekerjaan untuk membuat sebuah projekan menggunakan NodeJS.

Saya pun memilih Svelte sebagai framework.

Proses development berjalan lancar sampai bisa berjalan live di Netlify.

Kemudian kendala pun terjadi ketika aplikasi ini dijalankan pada VPS yang sudah diinstalkan NodeJS.

Kebetulan VPS nya diinstall dengan web server OpenLiteSpeed dan menggunakan Cyberpanel sebagai panel.

Spek VPS

  • Ram 1GB
  • CPU 1 Core
  • SSD 40Gb
  • Ubuntu 22.04
  • Cyberpanel

Setup NodeJS di VPS

Untuk setup Nodejs terlebih dahulu masuk ke terminal mengguanakn SSH lalu setup NodeJS di sana. Saya menggunakan NodeJS versi terbaru.

Upload package ke VPS

  1. Build aplikasi svelte dengan perintah npm run build.
  2. Pada direktory root, akan ada folder baru bernama /build
  3. Compress direktory ini menjadi sebuah file zip, gunakan perintah zip -r build.zip build sehingga akan ada file baru bernama build.zip .ada direktory root projekan svelte anda.
  4. Copy/upload file build.zip, package.json, .env (kalau ada) ke direktory /home/direktorysitus/public_html/
  5. Extract file build.zip pada folder /public_html/ direktory situs di vps.
  6. Sekarang masuk ke terminal menggunakan SSH, untuk mulai install npm package. Masuk ke /home/direktorysitus/public_html/ lalu jalankan npm install, tunggu beberapa saat sampai proses instalasi selesai.
  7. Setelah selesai, silahkan jalankan aplikasi node di server menggunakan perintah node build/index.js. Di masa depan coba edit file ini, arahkan ke baris paling akhir, lalu ganti 0.0.0.0 menjadi domain.situs.anda sebelum menjalankan nodejs.
  8. Kalau berhasil silahkan coba buka situs lalu buka svelte app menggunakan port yang sudah disetting. Secara default akan berjalan di port :3000.
  9. Jangan lupa install pm2 untuk bisa menjalankan aplkasi nodejs secara otomatis secara terus menerus.
  10. Sehingga nodeapp bisa dikontrol menggunakan perintah pm2 status, pm2 start id, dll.

Kendala yang ditemui

Tapi masa harus selalu buka port :3000 jika ingin menggunakan aplikasinya. Kan lebih bagus kalau lansung pada situsnya.

Maka dari itu disini kita butuh Reverse Proxy.

Jadi kita akan redirect semua aktivitas situs yang berjalan pada port :3000.

Cara update reverse proxy di Cyberpanel

  1. Masuk ke admin panel cyberpanel.
  2. Masuk ke direktory situs, lalu lakukan manager.
  3. Pilih Vhost, lalu tambahkan pengaturan ini di bagian bawah.
scripthandler {
    add lsapi:mynodeapp
}

extprocessor mynodeapp {
    type                    proxy
    address                 domain.situs.anda:3000
    maxConns                100
    pcKeepAliveTimeout      60
    initTimeout             60
    retryTimeout            0
    respBuffer              0
}

rewrite  {
    enable                  1
    RewriteEngine On
    RewriteCond %{HTTPS}  !=on
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    RewriteRule /(.*) http://mynodeapp/$1 [P]
}


context / {
    type proxy
    handler mynodeapp
    addDefaultCharset off
}

Ganti saja mynodeapp menjadi nama apapun yang ingin digunakan.

Pada bagian rewrite, hapus apacheproxy, sesuaikan dengan kode yang saya sudah tulis di atas.

Restart aplikasi node, dan refresh browser, sekarang aplikasi sudah bisa dibuka tanpa port :3000.

Akhir kata

Demikian tutorial singkat cara setup reverse proxy pada Cyberpanel untuk menjalankan aplikasi NodeJS.

Semoga bermanfaat.

Belajar Loop Data Svelte yang Berjalan di AstroJS
Ditulis oleh Rafi pada Tuesday, 17 October 2023
mrfdn author

Rafi

  • 15 year+ of Linux user.
  • 5 years+ blogger and web developer.

Jika artikel yang dibuatnya ternyata bermanfaat, support dengan cara

Baca juga

Setup Github Action Rsync ke VPS

Setup Github Action Rsync ke VPS

words min read

comments powered by Disqus