# Paket Laravel SETARA untuk upload manual

## Struktur hosting

Unggah dan ekstrak arsip ini ke direktori privat akun hosting, misalnya `/home/akun/setara-backend`. Jangan ekstrak seluruh aplikasi ke `public_html`. Atur document root domain/subdomain API ke direktori `setara-backend/public`.

Contoh URL setelah document root benar:

- Health check: `https://api.domainanda.sch.id/up`
- API login: `POST https://api.domainanda.sch.id/api/v1/login`

URL publik tidak perlu memuat `/public`; folder `public` hanya menjadi document root di sisi server.

## Konfigurasi server

Gunakan PHP 8.3+ dengan ekstensi `pdo_mysql`, `mbstring`, `openssl`, `fileinfo`, dan `ctype`. Buat database MySQL dan user khusus melalui panel hosting.

Salin `.env.production.example` menjadi `.env`, lalu isi `APP_URL`, kredensial MySQL, `CORS_ALLOWED_ORIGINS`, dan alamat email. `APP_URL` hanya origin domain, tanpa `/public` atau `/api/v1`. Buat `APP_KEY` unik dengan perintah `php artisan key:generate` melalui Terminal hosting.

Pastikan `storage` dan `bootstrap/cache` bisa ditulis oleh PHP. Dari Terminal hosting, pada direktori aplikasi jalankan:

```sh
php artisan optimize:clear
php artisan migrate --force
php artisan setara:install-admin
php artisan storage:link
php artisan config:cache
php artisan route:cache
```

Perintah install-admin meminta data sekolah dan akun administrator. Jangan jalankan `db:seed` pada data sekolah sebenarnya.

Jika panel hosting tidak mengizinkan perubahan document root, jangan mengekspos direktori aplikasi ke web. Minta hosting mengarahkan domain API ke folder `public`, atau tempatkan source aplikasi di luar web root dan minta bantuan provider untuk mengatur document root.
