GuavaPopper 4e19f27522 Bismillah
2026-06-10 23:13:30 +07:00
.
2026-06-10 18:43:14 +07:00
2026-06-10 23:13:30 +07:00
.
2026-06-10 18:32:09 +07:00

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:

cp .env.docker.example .env
  1. Edit .env minimal 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.

  1. Build asset frontend:
npm install
npm run build
  1. Build dan jalankan container:
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:

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

  1. Pull atau upload perubahan terbaru.

  2. Build ulang asset:

npm install
npm run build
  1. Rebuild container:
docker compose up --build -d
  1. 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 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.
S
Description
No description provided
Readme 299 KiB
Languages
Blade 52.3%
PHP 31.7%
HTML 11.5%
CSS 3.8%
Dockerfile 0.3%
Other 0.3%