Panduan lengkap step-by-step cara deploy aplikasi React (Vite) dan backend Node.js ke VPS - Kilat VM 2.0. Cocok untuk pemula yang ingin meng-online-kan proyek web dengan mudah dan aman.
Halo, Kawan Belajar!
Ketika pertama kali mendengar deploy aplikasi web ke server, pastinya kita akan menganggap hal ini sangat sulit. Akan tetapi, dengan panduan yang tepat, proses ini bisa Anda kuasai dengan mudah.
Dalam artikel ini, kami akan membahas step-by-step cara melakukan deploy aplikasi React (yang dibangun menggunakan Vite) dan juga backend Node.js ke layanan Kilat VM 2.0 ke layanan Kilat VM 2.0, salah satu solusi VPS andalan dari CloudKilat yang bisa Anda kelola penuh lewat SSH.
Sebagai contoh, kami akan menggunakan proyek open-source berjudul PokéTrove. Aplikasi ini dibangun menggunakan React 19, Tailwind CSS, Vite, serta data dari PokéAPI.
Panduan ini ditulis berdasarkan pengujian langsung menggunakan konfigurasi berikut:
Sebelum memulai proses deployment, ada beberapa hal yang perlu Anda siapkan. Pastikan poin-poin berikut ini sudah terpenuhi ya:
Anda perlu memiliki akses login ke server Kilat VM melalui protokol SSH. Umumnya, setelah layanan aktif, Anda akan mendapatkan detail login seperti:
root)Karena proyek React (dengan Vite) membutuhkan versi Node.js modern, pastikan versi Node.js di VM adalah minimal versi 18. Anda dapat mengeceknya dengan perintah:
node -v
npm -v
Jika belum terpasang, Anda bisa menginstalnya dengan:
curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
apt install -y nodejs
Jika Anda ingin aplikasi bisa diakses menggunakan nama domain (misalnya ptrove.cloudkilat.id), pastikan:
Contoh record DNS:
Nama : @
Tipe : A
Nilai : <ip-address-kilat-vm>
Tanpa domain pun tetap bisa, akan tetapi aksesnya hanya lewat IP publik VM saja.
Pastikan server Anda sudah memiliki:
git untuk meng-clone repository aplikasiUntuk instalasi tool yang dibutuhkan, jalankan perintah berikut:
apt update && apt install curl git -y
Secara default, saat instalasi Node.js dilakukan, maka secara otomatis akan menginstall versi 10.8.2. Untuk install versi terbaru, jalankan perintah berikut:
npm install -g npm@11.4.2
Setelah semua prasyarat ini terpenuhi, Anda sudah siap lanjut ke tahap berikutnya untuk deploy aplikasi.
Langkah pertama, sambungkan ke server Kilat VM 2.0 Anda melalui SSH.
ssh root@<ip-kilat-vm-anda>
Gantilah <ip-kilat-vm-anda> dengan alamat IP publik dari server Kilat VM milik Anda. Jika login berhasil, Anda akan masuk ke terminal remote Kilat VM.
Selanjutnya, unduh (clone) kode aplikasi dari GitHub ke dalam VM. Misalnya, kami akan menggunakan salah satu proyek bernama PokéTrove:
git clone https://github.com/fikriandrrhm19/poketrove.git
cd poketrove
Setelah perintah ini dijalankan, seluruh isi repositori akan tersalin ke server. Pastikan Anda berada dalam direktori project (Misal poketrove) sebelum melanjutkan langkah build.
Aplikasi React perlu dibangun (build) terlebih dahulu agar dapat dijalankan di-production. Jalankan perintah berikut:
npm install
npm run build
npm install: Menginstal semua dependensi proyek.npm run build: Membuat versi produksi dari aplikasi dan meletakkannya di folderdist/.
Setelah proses npm run build selesai, kita akan mendapatkan folder dist/ berisi file produksi aplikasi. Namun, karena folder ini berada di bawah direktori /root/, maka kita perlu memindahkannya ke lokasi yang bisa diakses Nginx.
Install Nginx terlebih dahulu jika belum terpasang:
apt install nginx -y
Nginx berjalan sebagai user www-data, sehingga tidak bisa membaca file dari /root/. Untuk menghindari error:
/var/www/:mkdir -p /var/www/poketrove
cp -r /root/<nama_folder>/dist/* /var/www/poketrove/
chown -R www-data:www-data /var/www/poketrove
chmod -R 755 /var/www/poketrove
Setelah itu, buat file konfigurasi situs baru di Nginx, misalnya:
nano /etc/nginx/sites-available/poketrove
Isi dengan konfigurasi berikut:
server {
listen 80;
server_name namadomain.id; # Ganti dengan domain Anda
root /var/www/poketrove;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
}
Gantilah server_name dan root sesuai dengan nama domain dan direktori build Anda.
Kemudian, aktifkan konfigurasi dan restart Nginx:
rm /etc/nginx/sites-enabled/default
ln -s /etc/nginx/sites-available/poketrove /etc/nginx/sites-enabled/
nginx -t
systemctl restart nginx
Jika Anda ingin menambahkan backend API sederhana menggunakan Node.js, Anda bisa membuat file server.js seperti ini:
const express = require('express');
const app = express();
const PORT = process.env.PORT || 3001;
app.use(express.static('dist'));
app.get('/api/health', (req, res) => {
res.json({ status: 'ok' });
});
app.listen(PORT, () => {
console.log(`Server running at http://localhost:${PORT}`);
});
Lalu jalankan:
npm install express
node server.js
Agar backend tetap berjalan meskipun terminal ditutup, Anda bisa menggunakan PM2:
npm install pm2 -g
pm2 start server.js
pm2 startup
pm2 save
PM2 juga memungkinkan restart otomatis jika server reboot.
Jika Anda menggunakan domain dan ingin redirect HTTPS, gunakan Certbot untuk mengatur SSL:
apt install certbot python3-certbot-nginx -y
certbot --nginx -d namadomain.id
Ikuti instruksi yang muncul di layar dan pastikan domain sudah mengarah ke IP Kilat VM Anda.
CloudKilat juga menyediakan layanan SSL komersial dari penyedia terpercaya seperti Sectigo dan GlobalSign. Dapatkan sertifikat SSL Anda di: https://www.cloudkilat.com/layanan/tambahan#sertifikat-ssl .
Sekarang Anda sudah bisa mengakses aplikasi Anda:
http://<IP-Kilat-VM>:80
https://namadomain.id
Bila halaman aplikasi berhasil muncul, berarti proses deploy Anda sudah sukses!
Jika Anda mengalami kendala saat proses deploy atau setelah aplikasi dijalankan, di bawah ini beberapa masalah umum dan solusi yang bisa Anda coba:
| Masalah Umum | Penyebab & Solusi |
|---|---|
| Halaman menunjukkan 404 saat direfresh | Ini biasanya terjadi pada aplikasi SPA (Single Page Application) seperti React. Pastikan di konfigurasi Nginx Anda ada baris:try_files $uri $uri/ /index.html; di dalam blok location /. Hal ini untuk memastikan rute yang tidak ditemukan oleh Nginx akan diteruskan ke React untuk ditangani oleh React Router. |
Permission denied saat akses /root/... |
Ini karena Nginx tidak diizinkan mengakses direktori root user. Solusinya adalah pindahkan folder hasil build (seperti dist/) ke lokasi yang aman, misalnya /var/www/nama-project/, lalu pastikan permission dimiliki oleh www-data. |
| Port 80 tidak bisa diakses | Bisa jadi firewall pada VM masih menutup port tersebut. Jalankan perintah berikut untuk membuka akses:ufw allow 'Nginx Full' atau ufw allow 80/tcp. |
Tidak ada file server.js |
Jika aplikasi Anda hanya terdiri dari frontend, maka file server.js tidak diperlukan. Cukup gunakan Nginx untuk menyajikan file statis hasil build dari folder dist/. Backend hanya dibutuhkan jika Anda membuat API atau fitur yang interaktif berbasis server. |
| Domain sudah diatur tapi tidak bisa diakses | Pastikan DNS domain Anda sudah rampung tahap propagasinya dan mengarah ke IP publik Kilat VM. Cek dengan perintah:dig domainAnda.com +short atau gunakan dnschecker.org. |
| Gagal pasang SSL (HTTPS) | Pastikan domain Anda sudah aktif dan mengarah ke VM sebelum menjalankan perintah Certbot. Jika error muncul, cek log di /var/log/letsencrypt/letsencrypt.log. Juga pastikan Nginx sudah jalan dan listen di port 80 sebelum Certbot dijalankan. |
Selamat! Anda telah berhasil melakukan deploy aplikasi React (Vite) ke Kilat VM 2.0 dan menyajikannya melalui Nginx. Bila diperlukan, Anda juga bisa melengkapi aplikasi dengan backend Node.js menggunakan Express.
Dengan pendekatan ini, Anda memiliki fleksibilitas untuk menjalankan aplikasi frontend saja, atau menambahkan dynamic backendsesuai kebutuhan proyek Anda.
Sampai jumpa di panduan berikutnya!
Jangan ragu untuk menghubungi tim support kami jika Anda memiliki pertanyaan atau masalah terkait layanan CloudKilat.