FTMS v2.6.4 - Deploy webhosting tanpa Node dan Composer

Tujuan
Aplikasi bisa berjalan di shared hosting/cPanel tanpa menjalankan Node, npm,
atau Composer di server hosting.

Syarat hosting
- PHP 8.2 atau lebih baru.
- Ekstensi PHP: pdo_mysql, mbstring, fileinfo, xml, ctype, tokenizer, curl, zip.
- MySQL/MariaDB.
- Domain/subdomain bisa diarahkan ke folder public, atau Anda bisa memakai pola
  cPanel public_html seperti di bawah.

Yang perlu dipahami
Laravel tetap membutuhkan folder vendor. Karena hosting tidak menjalankan
Composer, folder vendor harus dibuat di komputer lokal, lalu ikut diupload dalam
paket hosting. Frontend juga sudah dibuild ke public/build, sehingga hosting
tidak perlu Node/npm.

Cara membuat paket siap upload
1. Di komputer lokal, buka folder proyek.
2. Jalankan:

   BUAT-PAKET-WEBHOSTING.bat

   Untuk Linux/macOS:

   bash BUAT-PAKET-WEBHOSTING.sh

3. Script akan membuat:

   dist/FTMS-WEBHOSTING-SIAP-UPLOAD.zip

Isi ZIP hosting
- source Laravel
- folder vendor
- public/build hasil build frontend
- public/storage berisi aset contoh awal
- .env.webhosting.example
- tanpa node_modules
- tanpa .env pribadi

Cara upload paling aman
Jika hosting mengizinkan DocumentRoot domain/subdomain diarahkan ke folder
public, upload dan ekstrak ZIP, lalu set DocumentRoot ke:

   /path/ftms/public

Setelah itu salin .env.webhosting.example menjadi .env dan isi konfigurasi.

Cara upload cPanel/public_html
Gunakan pola ini bila DocumentRoot tidak bisa diubah.

1. Buat folder aplikasi di luar public_html, misalnya:

   /home/username/ftms-app

2. Upload isi paket ke folder tersebut.

3. Salin semua isi folder:

   /home/username/ftms-app/public

   ke:

   /home/username/public_html

4. Ganti file public_html/index.php memakai contoh:

   webhosting/cpanel-public-index.php.example

5. Ubah baris:

   $appBase = dirname(__DIR__).'/ftms-app';

   agar sesuai lokasi folder aplikasi.

File .env hosting
Salin:

   .env.webhosting.example

menjadi:

   .env

Isi nilai berikut:

   APP_URL=https://domain-anda.com
   DB_DATABASE=nama_database_hosting
   DB_USERNAME=user_database_hosting
   DB_PASSWORD=password_database_hosting

APP_KEY
Script pembuat paket mencoba mengisi APP_KEY otomatis pada
.env.webhosting.example. Jika masih kosong, jalankan di komputer lokal:

   php artisan key:generate --show

Lalu salin hasilnya ke APP_KEY di .env hosting.

Storage upload/logo/audio
Pilihan terbaik adalah symlink public/storage ke storage/app/public. Jika hosting
memiliki Terminal/SSH, jalankan satu kali:

   php artisan storage:link

Jika hosting tidak bisa membuat symlink, buat folder public_html/storage atau
public/storage menjadi writable, lalu isi PUBLIC_DISK_ROOT di .env:

   PUBLIC_DISK_ROOT=/home/username/public_html/storage

Dengan begitu upload logo, pamflet, foto, dan alarm custom ditulis langsung ke
folder publik tersebut.

Database
Buat database MySQL di cPanel. Jika hosting menyediakan Terminal/SSH, jalankan:

   php artisan migrate --seed --force

Jika tidak ada Terminal/SSH, jalankan migrasi di komputer/server lain yang punya
akses database hosting, atau impor hasil database melalui phpMyAdmin.

Cache produksi
Jika Terminal/SSH tersedia, setelah .env benar jalankan:

   php artisan optimize:clear
   php artisan config:cache
   php artisan route:cache
   php artisan view:cache

Perintah di atas memakai PHP, bukan Composer atau Node.

Update versi lama di hosting
1. Backup database dan storage.
2. Upload file baru dari paket hosting.
3. Pertahankan .env lama.
4. Jalankan php artisan migrate --force jika Terminal/SSH tersedia.
5. Pastikan public/build dan public/.htaccess ikut terganti.

Login awal instalasi baru
admin@ftms.test
password

Ganti password setelah login.
