208 lines
5.0 KiB
Markdown
208 lines
5.0 KiB
Markdown
# WebGIS Pemetaan Kemiskinan
|
|
|
|
Aplikasi WebGIS berbasis Laravel untuk memetakan rumah ibadah, keluarga miskin, radius layanan, bantuan, transfer tanggungan, dan statistik sebaran.
|
|
|
|
## Deploy Dengan Docker
|
|
|
|
Repository ini sudah disiapkan untuk jalan lewat Docker Compose:
|
|
|
|
- `app`: container PHP Laravel, expose port `8000`
|
|
- `mysql`: database MySQL 8.4 dengan volume persisten
|
|
- `vite`: hanya untuk development, tidak otomatis jalan saat production deploy
|
|
|
|
Image `app` sudah self-contained. Source code dan dependency Composer dibangun ke dalam image saat `docker compose build`, jadi tidak perlu bind mount proyek ke `/var/www/html` saat deploy production.
|
|
|
|
## SSL Di Coolify
|
|
|
|
SSL tidak dipasang di container aplikasi. Untuk deploy di Coolify, HTTPS ditangani oleh reverse proxy Coolify dengan sertifikat Let's Encrypt.
|
|
|
|
Di Coolify:
|
|
|
|
- set domain aplikasi dengan format `https://domain-anda.com`
|
|
- arahkan domain ke service `app`
|
|
- gunakan internal port `8000`
|
|
- set `APP_URL=https://domain-anda.com` di environment
|
|
|
|
Jika domain diisi dengan `https://`, Coolify akan mengurus sertifikat SSL dan renewal otomatis. Aplikasi Laravel sudah disiapkan untuk trust proxy header dari Coolify agar URL dan redirect tetap memakai HTTPS.
|
|
|
|
## Kebutuhan Hosting
|
|
|
|
- Docker Engine
|
|
- Docker Compose plugin
|
|
- Domain atau subdomain yang diarahkan ke server
|
|
- Coolify reverse proxy yang diarahkan ke service `app` port internal `8000`
|
|
|
|
Document root tidak perlu diarahkan manual ke `public` karena aplikasi berjalan di container Laravel.
|
|
|
|
## Setup Pertama Di Server
|
|
|
|
1. Upload atau clone project ke server.
|
|
|
|
2. Buat file environment Docker:
|
|
|
|
```bash
|
|
cp .env.docker.example .env
|
|
```
|
|
|
|
3. Edit `.env` minimal bagian ini:
|
|
|
|
```env
|
|
APP_ENV=production
|
|
APP_DEBUG=false
|
|
APP_URL=https://domain-anda.com
|
|
|
|
DB_CONNECTION=mysql
|
|
DB_HOST=mysql
|
|
DB_PORT=3306
|
|
DB_DATABASE=webgis_miskin
|
|
DB_USERNAME=webgis
|
|
DB_PASSWORD=password-kuat
|
|
MYSQL_ROOT_PASSWORD=password-root-kuat
|
|
```
|
|
|
|
Jika project di-upload dari mesin development dan `.env` lama ikut terbawa, ubah nilainya ke konfigurasi production di atas. Docker Compose otomatis membaca file `.env` di root project.
|
|
|
|
4. Build asset frontend:
|
|
|
|
```bash
|
|
npm install
|
|
npm run build
|
|
```
|
|
|
|
5. Build dan jalankan container:
|
|
|
|
```bash
|
|
docker compose up --build -d
|
|
```
|
|
|
|
Entrypoint container `app` otomatis menjalankan:
|
|
|
|
- membuat `.env` dari `.env.docker.example` jika belum ada
|
|
- `php artisan key:generate` jika `APP_KEY` belum ada
|
|
- `php artisan migrate --force`
|
|
- `php artisan db:seed --force`
|
|
- `php artisan schedule:work`
|
|
|
|
## Command Operasional
|
|
|
|
Cek container:
|
|
|
|
```bash
|
|
docker compose ps
|
|
```
|
|
|
|
Lihat log aplikasi:
|
|
|
|
```bash
|
|
docker compose logs -f app
|
|
```
|
|
|
|
Masuk ke container app:
|
|
|
|
```bash
|
|
docker compose exec app sh
|
|
```
|
|
|
|
Jalankan ulang cache Laravel setelah edit `.env`:
|
|
|
|
```bash
|
|
docker compose exec app php artisan config:cache
|
|
docker compose exec app php artisan route:cache
|
|
docker compose exec app php artisan view:cache
|
|
```
|
|
|
|
Restart container:
|
|
|
|
```bash
|
|
docker compose restart app
|
|
```
|
|
|
|
Stop semua container:
|
|
|
|
```bash
|
|
docker compose down
|
|
```
|
|
|
|
Stop container tanpa menghapus data database:
|
|
|
|
```bash
|
|
docker compose down
|
|
```
|
|
|
|
Hapus container sekaligus volume database:
|
|
|
|
```bash
|
|
docker compose down -v
|
|
```
|
|
|
|
Gunakan `down -v` hanya kalau memang mau reset data MySQL.
|
|
|
|
## Update Aplikasi Di Server
|
|
|
|
1. Pull atau upload perubahan terbaru.
|
|
|
|
2. Build ulang asset:
|
|
|
|
```bash
|
|
npm install
|
|
npm run build
|
|
```
|
|
|
|
3. Rebuild container:
|
|
|
|
```bash
|
|
docker compose up --build -d
|
|
```
|
|
|
|
4. Refresh cache:
|
|
|
|
```bash
|
|
docker compose exec app php artisan optimize:clear
|
|
docker compose exec app php artisan config:cache
|
|
docker compose exec app php artisan route:cache
|
|
docker compose exec app php artisan view:cache
|
|
```
|
|
|
|
## Development Lokal Dengan Vite
|
|
|
|
Untuk development yang butuh Vite dev server:
|
|
|
|
```bash
|
|
docker compose --profile dev up --build -d
|
|
```
|
|
|
|
Service Vite hanya diexpose di network Docker. Jika butuh akses langsung dari host saat development lokal, tambahkan override compose lokal untuk publish port Vite. Untuk production deploy, jangan gunakan profile `dev`.
|
|
|
|
## Akun Awal
|
|
|
|
Seeder membuat akun awal berikut:
|
|
|
|
| Role | Email | Password |
|
|
| --- | --- | --- |
|
|
| Administrator | `admin@webgis.local` | `admin123` |
|
|
| Pengurus Ibadah | `pengurus@webgis.local` | `password123` |
|
|
| Petugas Pendataan | `petugas@webgis.local` | `password123` |
|
|
| Pemangku Kebijakan | `kebijakan@webgis.local` | `password123` |
|
|
|
|
Ganti password akun awal setelah deploy.
|
|
|
|
## Halaman Utama
|
|
|
|
- `/login` - login pengguna
|
|
- `/map` - peta interaktif
|
|
- `/data` - data tabular
|
|
- `/dashboard` - dashboard statistik
|
|
- `/permohonan` - permohonan transfer
|
|
- `/admin/users` - manajemen pengguna
|
|
- `/admin/logs` - log aktivitas
|
|
- `/admin/settings` - pengaturan sistem
|
|
|
|
## Catatan Penting
|
|
|
|
- Jangan commit `.env` ke repository.
|
|
- Pastikan `APP_URL` sesuai domain production.
|
|
- Di Coolify, jangan publish host port manual. Set domain ke service `app` dan internal port `8000`.
|
|
- Volume `webgis_mysql_data` menyimpan data MySQL.
|
|
- Source code sudah masuk ke image saat build, jadi produksi tidak bergantung pada bind mount host ke `/var/www/html`.
|
|
- Jika hosting punya backup volume, backup volume MySQL dan folder project.
|