D
Setup

Setup Environment

Konfigurasi dua file .env untuk dazo-whitelist (web app, PostgreSQL, Reverb, Crisp) dan dazo-whitelist-api (MySQL, Facebook App credentials, Graph v20.0). RSA keys wajib disiapkan di storage/rsa_keys.

Konco memerlukan dua file .env terpisah — satu per repo. Keduanya harus berjalan bersamaan agar platform berfungsi. Selain itu, storage/rsa_keys/ di dazo-whitelist wajib berisi private_key.pem dan public_key.pem untuk handshake dengan API engine.

Prasyarat

KebutuhanVersi
PHP^8.1
Node.jsdiuji v20–v23 (Vite 5)
PostgreSQLuntuk dazo-whitelist (default)
MySQL / MariaDBuntuk dazo-whitelist-api
Composer^2.x
OpenSSLuntuk.generate RSA key pair

1. .env dazo-whitelist (Web App)

bash
APP_NAME="Konco"
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_URL=http://localhost:8000

# URL endpoint microservice API
API_URL=http://127.0.0.1:8081/api/
API_KEY=
API_SECRET=
API_PRIVATE=
API_PUBLIC=

# Database (PostgreSQL default — konfigurasi MySQL juga didukung)
DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=konco_db
DB_USERNAME=postgres
DB_PASSWORD=your_password

# WebSocket Broadcasting (Laravel Reverb)
BROADCAST_DRIVER=reverb
REVERB_APP_ID=konco_app_id
REVERB_APP_KEY=konco_reverb_key
REVERB_APP_SECRET=konco_reverb_secret
REVERB_HOST=127.0.0.1
REVERB_PORT=8080
REVERB_SCHEME=http

# Vite Reverb Variables (dibaca frontend)
VITE_APP_NAME="${APP_NAME}"
VITE_REVERB_APP_KEY="${REVERB_APP_KEY}"
VITE_REVERB_HOST="${REVERB_HOST}"
VITE_REVERB_PORT="${REVERB_PORT}"
VITE_REVERB_SCHEME="${REVERB_SCHEME}"

# Live Chat (Crisp)
CRISP_WEBSITE_ID=your-crisp-website-id
CRISP_ENABLED=true

# Email report cron
EMAIL_REPORT=

Field konfigurasi penting (dazo-whitelist)

VariableKeterangan
API_URLBase URL dazo-whitelist-api — wajib berakhir /api/
API_KEYUUID aplikasi klien (dari tabel applications di API engine)
API_SECRETSecret aplikasi klien — dipakai payload RSA signature
API_PRIVATEPrivate key string (dari storage/rsa_keys/private_key.pem) — elemen ke-2 payload
API_PUBLICPublic key string — dikirim sebagai header public-key
REVERB_*Konfigurasi WebSocket server untuk realtime tiket & notifikasi
CRISP_WEBSITE_IDID widget Crisp — live chat dual-channel dengan WhatsApp
EMAIL_REPORTEmail tujuan laporan cron (expired, reminder)

2. .env dazo-whitelist-api (Backend Engine)

bash
APP_NAME="Konco API"
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_URL=http://127.0.0.1:8081

# Database (MySQL/MariaDB)
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=konco_api_db
DB_USERNAME=root
DB_PASSWORD=

# Queue Driver
QUEUE_CONNECTION=database

# Facebook App Credentials (dari Meta for Developers)
FACEBOOK_APP_ID=your_meta_app_id
FACEBOOK_APP_SECRET=your_meta_app_secret
FACEBOOK_APP_TOKEN=your_meta_app_token
FACEBOOK_GRAPH_VERSION=v20.0

# Encryption salt (dipakai di token Facebook)
HASH_SECRET_KEY=your_hash_secret
SALTED_CREAMY=your_salted_creamy

Field konfigurasi penting (dazo-whitelist-api)

VariableKeterangan
FACEBOOK_APP_IDApp ID dari Meta for Developers
FACEBOOK_APP_SECRETApp Secret dari Meta for Developers
FACEBOOK_APP_TOKENApp access token Facebook
FACEBOOK_GRAPH_VERSIONVersi Graph API — wajib v20.0
HASH_SECRET_KEYSalt untuk hash internal
SALTED_CREAMYSalt tambahan saat meng-encrypt access token Facebook di UserFacebookToken
QUEUE_CONNECTIONWajib database — import massal akun via queue jobs

3. RSA Keys

dazo-whitelist menyimpan RSA key pair di filesystem, bukan di database:

text
storage/rsa_keys/
├── private_key.pem    # dipakai untuk sign signature (client side)
├── public_key.pem     # dikirim & disimpan di tabel `applications` (server side)
└── .gitignore

Private key dipakai di App\Src\MyApi::get_token() untuk menandatangani payload handshake. Public key dikirim ke API engine dan terverifikasi di ApplicationController::token.

Generate RSA keys

bash
# Opsi A: generate key pair saja
php artisan rsa_key

# Opsi B: daftarkan aplikasi klien + generate key + update .env sekaligus
php artisan app:register-client --name=konco-main

app:register-client melakukan tiga hal:

  1. Generate RSA Key Pair di storage/rsa_keys/.
  2. Simpan record aplikasi klien di database dazo-whitelist-api (tabel applications).
  3. Perbarui API_KEY, API_SECRET, API_PRIVATE, API_PUBLIC di .env dazo-whitelist.

Verifikasi setup

Jalankan verifikasi konfigurasi Meta (di API engine):

bash
php artisan meta:verify

Bila semua kredensial terbaca, lanjut ke Local Development untuk starting kedua service.