# Panduan Pengoperasian & Upload Aplikasi MikRobiL ke cPanel (Arenhost Business)

Dokumen ini menjelaskan langkah-langkah detail untuk meng-upload dan menjalankan aplikasi full-stack Node.js (React/Vite + Express) ini di hosting cPanel **Arenhost Business**.

---

## 💡 Keuntungan Konfigurasi yang Kami Siapkan
Aplikasi modular ini sudah dikonfigurasi secara pre-compiled:
1. **Hemat RAM/CPU Hosting**: Proses kompilasi TypeScript (`Vite` + `esbuild`) yang sangat berat sudah berhasil kami jalankan. Folder `/dist/` dan file `/dist/server.cjs` sudah terbentuk lengkap di dalam proyek Anda. cPanel tidak perlu melakukan build lagi (menghindari limitasi crash / Out-Of-Memory Resource di shared hosting).
2. **cPanel Friendly (`app.js`)**: Kami telah menyisipkan file `/app.js` di root folder sebagai jembatan pembuka yang otomatis mengeksekusi server backend CommonJS terkompilasi sewaktu cPanel menginisialisasi server Passenger.
3. **Dynamic Port/Unix Socket**: Server Express sudah diperbarui agar mendeteksi socket link (`process.env.PORT`) secara dinamis sesuai alokasi virtual dari Phusion Passenger cPanel.

---

## 🛠️ Langkah Demi Langkah Deploy di cPanel Arenhost

### Langkah 1: Unduh File ZIP Aplikasi Anda
1. Melalui UI Google AI Studio Build di pojok kanan atas, silakan klik tombol **Settings / Menu Ekspor (Ekspor sebagai ZIP / GitHub)**.
2. Unduh file ZIP lengkap aplikasi ini ke komputer Anda. File ZIP tersebut secara otomatis mencakup:
   * Folder `/dist/` (Berisi asset frontend web dan backend compiled `server.cjs`)
   * File `app.js` di root folder
   * File `package.json` yang berisi modul dependencies

---

### Langkah 2: Upload ke cPanel File Manager
1. Login ke panel **cPanel Arenhost** Anda.
2. Buka menu **File Manager**.
3. Di dalam direktori utama `/home/namapengguna/` (di luar folder `public_html`), buat folder baru bernama:  
   `mikrobil-app`
   *(Catatan: Sangat disarankan menaruh source-code di luar `public_html` agar file rahasia server seperti pppoe credentials, API key, dll. tidak dapat diakses publik langsung secara langsung).*
4. Masuk ke folder `mikrobil-app` tersebut, klik **Upload**, lalu seret file ZIP yang telah Anda unduh tadi.
5. Setelah selesai diunggah, klik kanan pada file ZIP tersebut di File Manager dan pilih **Extract**.

---

### Langkah 3: Setup Node.js Application di cPanel
1. Kembali ke Beranda cPanel Anda, lalu cari menu **"Setup Node.js App"** (Pengaturan Aplikasi Node.js).
2. Klik tombol **Create Application** di sebelah kanan atas.
3. Isi kolom konfigurasi sebagai berikut:
   * **Node.js version**: Pilih versi **20.x** (atau minimum versi **18.x** jika 20 tidak tersedia).
   * **Application Mode**: Pilih **production**.
   * **Application Root**: Ketik nama folder tempat Anda meng-ekstrak ZIP tadi, yaitu:  
     `mikrobil-app`
   * **Application URL**: Pilih subdomain atau domain utama yang ingin Anda gunakan (Misalnya: `mikrobil.domainanda.com` atau domain utama Anda).
   * **Application startup file**: Ketik file entry point utama kita:  
     `app.js`
4. Di bagian bawah, pada kolom **Environment variables**, klik **Add Variable** untuk menambahkan API Key:
   * **Name**: `NODE_ENV`  |  **Value**: `production`
   * **Name**: `GEMINI_API_KEY`  |  **Value**: *(Masukkan Kunci API Gemini Anda dari Google AI Studio AI settings)*
5. Setelah semuanya terisi dengan benar, klik tombol **Create** di pojok kanan atas.

---

### Langkah 4: Install Dependencies Proyek
1. Setelah aplikasi berhasil dibuat, cPanel akan mendeteksi file `package.json` yang ada di dalam folder `mikrobil-app`.
2. Klik tombol **Run npm install** pada panel Setup Node.js App tersebut.
3. Tunggu hingga proses instalasi library Express, Google GenAI, dan dependency lainnya selesai secara otomatis (berstatus sukses hijau).

---

### Langkah 5: Jalankan / Mulai Aplikasi
1. Klik tombol **Restart Application** di panel Setup Node.js App bagian atas.
2. Selesai! Sekarang silakan buka browser Anda dan kunjungi halaman domain/subdomain yang sudah Anda pilih tadi. Aplikasi MikRobiL Anda telah aktif secara utuh bersama backend API dan portal billing-nya di cPanel Arenhost!

---

## ❓ Solusi Masalah Umum (Troubleshooting)

### 1. Masalah: `FileNotFoundError: [Errno 2] No such file or directory: '.../.htaccess'`
Jika Anda melihat error Python di cPanel saat mengeklik **Create Application** atau **Start Application** yang berbunyi:
`FileNotFoundError: [Errno 2] No such file or directory: '/home/arsalsho/mikrobilapk.arsal.shop/.htaccess'`

* **Mengapa ini terjadi?**  
  cPanel Node.js Selector (Phusion Passenger) membutuhkan file `.htaccess` yang berada di dalam folder **Document Root** domain Anda (bukan folder source code, melainkan folder publik website, misalnya `/home/arsalsho/mikrobilapk.arsal.shop/`). cPanel akan membaca file ini untuk menuliskan konfigurasi reverse proxy Passenger. Jika file `.htaccess` atau direktori tersebut belum dibuat, modul Python milik cPanel akan error (crash).

* **Cara Mengatasinya:**
  Dalam Paket ZIP terbaru yang Anda download, kami telah menyertakan file `.htaccess` siap pakai. Namun, jika cPanel masih memunculkan error, ikuti langkah berikut:
  1. Buka **File Manager** cPanel Anda.
  2. Masuk ke folder Document Root domain Anda (contohnya folder `/home/arsalsho/mikrobilapk.arsal.shop/`).
  3. Klik tombol **+ File** (Buat File Baru) di pojok kiri atas File Manager.
  4. Beri nama file baru tersebut tepat sekali: `.htaccess` (pastikan ada titik di depannya dan tanpa akhiran tambahan).
  5. Edit file `.htaccess` tersebut dan paste kode berikut:
     ```apache
     # DO NOT REMOVE. CLOUDLINUX COPIED THE CONFIGURATION BELOW
     PassengerEnabled on
     PassengerAppType node
     PassengerAppRoot /home/arsalsho/mikrobil-app
     PassengerStartupFile app.js
     ```
  6. Simpan perubahan file tersebut.
  7. Kembali ke menu **Setup Node.js App** di cPanel Anda, lalu klik tombol **Restart / Start Application**. Aplikasi sekarang akan berjalan mulus tanpa hambatan!
