# Panduan Deployment KitCikgu License Center

Dokumen ini untuk pemasangan di Shared Linux Hosting Shinjiru dengan subdomain `lesen.kitcikgu.com`. Sistem menggunakan PHP, MySQL, HTTPS dan SMTP. Data aplikasi RekodGuru tidak dihantar ke pusat lesen.

## Persediaan cPanel

1. Cipta subdomain `lesen.kitcikgu.com` dan tetapkan Document Root kepada folder `public` pakej ini.
2. Pilih PHP 8.1 atau lebih baharu dan aktifkan `pdo_mysql`, `openssl`, `mbstring` dan `fileinfo`.
3. Aktifkan AutoSSL dan pastikan HTTPS berfungsi sebelum membuka portal.
4. Cipta database dan pengguna MySQL khusus dengan kata laluan yang kukuh.

## Susunan fail

Muat naik keseluruhan aplikasi, tetapi hanya folder `public` boleh dicapai dari web. Folder `app`, `database`, `storage` dan fail `.env` mesti berada di luar Document Root. Folder `storage/installers` perlu boleh ditulis oleh PHP, lazimnya permission `750` atau `770`. Jangan gunakan `777`.

## Database

Pemasangan baharu: import `database/schema.sql`, kemudian `database/migrations/002_kitcikgu_license_center.sql` dan `database/migrations/003_beta_email_license_mvp.sql` mengikut urutan.

Server sedia ada: backup database dahulu, pastikan migrasi 002 telah dijalankan, kemudian import migrasi 003. Kedua-duanya mengekalkan lesen, aktivasi dan Device ID sedia ada.

## Konfigurasi

Salin `.env.example` kepada `.env` di luar folder `public`. Isi database dan SMTP sebenar. Gunakan app password jika penyedia email mewajibkan 2FA. Port lazim ialah 465/SSL atau 587/STARTTLS. Tetapkan `PUBLIC_BASE_URL=https://lesen.kitcikgu.com`, `BETA_PORTAL_ENABLED=false` semasa pemasangan, tempoh beta dan had peranti.

Private key lesen mesti kekal di luar `public`. Jangan tukar pasangan RSA yang sedang digunakan aplikasi desktop.

## Semakan selepas pemasangan

1. Kekalkan portal dalam mod `MAINTENANCE`.
2. Buka `/status`, kemudian log masuk ke `/admin`.
3. Uji `Send Test Email` dan semak log Email.
4. Muat naik installer, bandingkan SHA-256, dan jadikannya aktif.
5. Uji `/download/latest` dan checksum fail yang dimuat turun.
6. Aktifkan satu lesen ujian melalui aplikasi desktop dan sahkan JWS/RS256 serta Device ID masih betul.
7. Tukar portal kepada `OPEN` hanya selepas semua semakan lulus.

Backup berkala perlu merangkumi database, `.env`, private key dan `storage/installers`. Jangan simpan backup dalam folder awam.
