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 port8000mysql: database MySQL 8.4 dengan volume persistenvite: hanya untuk development, tidak otomatis jalan saat production deploy
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.comdi 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
appport internal8000
Document root tidak perlu diarahkan manual ke public karena aplikasi berjalan di container Laravel.
Setup Pertama Di Server
-
Upload atau clone project ke server.
-
Buat file environment Docker:
cp .env.docker.example .env
- Edit
.envminimal bagian ini:
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.
- Build asset frontend:
npm install
npm run build
- Build dan jalankan container:
docker compose up --build -d
Entrypoint container app otomatis menjalankan:
composer install- membuat
.envdari.env.docker.examplejika belum ada php artisan key:generatejikaAPP_KEYbelum adaphp artisan migrate --forcephp artisan db:seed --forcephp artisan schedule:work
Command Operasional
Cek container:
docker compose ps
Lihat log aplikasi:
docker compose logs -f app
Masuk ke container app:
docker compose exec app sh
Jalankan ulang cache Laravel setelah edit .env:
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:
docker compose restart app
Stop semua container:
docker compose down
Stop container tanpa menghapus data database:
docker compose down
Hapus container sekaligus volume database:
docker compose down -v
Gunakan down -v hanya kalau memang mau reset data MySQL.
Update Aplikasi Di Server
-
Pull atau upload perubahan terbaru.
-
Build ulang asset:
npm install
npm run build
- Rebuild container:
docker compose up --build -d
- Refresh cache:
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:
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 | 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
.envke repository. - Pastikan
APP_URLsesuai domain production. - Di Coolify, jangan publish host port manual. Set domain ke service
appdan internal port8000. - Volume
webgis_mysql_datamenyimpan data MySQL. - Folder project dimount ke
/var/www/html, jadi perubahan file di server langsung terbaca container. - Jika hosting punya backup volume, backup volume MySQL dan folder project.