Command Palette

Search for a command to run...

aireszam01/kocoygroup-flask
Public
wasmer run aireszam01/kocoygroup-flask

Kocoy Group Website

Website Kocoy Group berbasis HTML, CSS, JavaScript, backend Python, dan MySQL. Backend melayani halaman frontend, API statistik, admin sederhana, tiket layanan, serta koneksi database lewat environment variable atau Wasmer Secrets.

Struktur Folder

KocoyGroup/
|-- backend/
|   |-- app.py
|   `-- data/
|       |-- database.example.properties
|       `-- schema.sql
|-- frontend/
|   |-- assets/
|   |-- css/
|   |-- js/
|   `-- pages/
|-- index.html
|-- requirements.txt
|-- run.bat
|-- run.sh
|-- wasmer.toml
`-- app.yaml

Menjalankan Lokal

Windows:

py -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
python -m pip install -r requirements.txt
python backend/app.py

Linux/macOS:

./run.sh

Buka:

http://localhost:5000

Konfigurasi Database

Untuk development lokal, salin contoh konfigurasi:

backend/data/database.example.properties

menjadi:

backend/data/database.properties

Lalu isi password database. File database.properties tidak perlu di-commit.

Untuk hosting, gunakan environment variable atau Wasmer Secrets:

KOCOY_DB_HOST=db.fr-pari1.bengt.wasmernet.com
KOCOY_DB_PORT=10272
KOCOY_DB_NAME=kocoygroup_database
KOCOY_DB_USER=user_87024e54
KOCOY_DB_PASSWORD=password_database
KOCOY_PUBLIC_URL=https://www.kocoygroup.site
KOCOY_TRUST_PROXY=auto
SECRET_KEY=random_secret_15
KOCOY_ADMIN_PASSWORD=password_admin
KOCOY_ADMIN_PIN=123456

Jalankan SQL awal dari:

backend/data/schema.sql

Deploy ke Wasmer

Install Wasmer CLI di PowerShell:

iwr https://win.wasmer.io -useb | iex

Login:

wasmer login

Project ini mem-pin runtime Wasmer ke wasmer/python versi 3.12.9+build.9. Install dependency ke folder vendor supaya bisa dibaca Wasmer:

py -m pip install -r requirements.txt --target vendor

Setiap kali requirements.txt berubah, rebuild vendor sebelum deploy supaya production memakai dependency terbaru:

Remove-Item -Recurse -Force vendor
py -m pip install -r requirements.txt --target vendor

Tambahkan secrets aplikasi:

wasmer app secrets create KOCOY_DB_PASSWORD "password_database"
wasmer app secrets create KOCOY_PUBLIC_URL "https://www.kocoygroup.site"
wasmer app secrets create SECRET_KEY "random_secret_15"
wasmer app secrets create KOCOY_ADMIN_PASSWORD "password_admin"
wasmer app secrets create KOCOY_ADMIN_PIN "123456"

Gunakan SECRET_KEY minimal 15 karakter dan KOCOY_ADMIN_PASSWORD yang panjang. Di production, aplikasi sengaja gagal start kalau SECRET_KEY belum diisi atau terlalu pendek. Password admin minimal 12 karakter. KOCOY_ADMIN_PIN bersifat opsional, tetapi direkomendasikan sebagai lapisan tambahan.

KOCOY_PUBLIC_URL harus memakai domain final HTTPS, misalnya https://www.kocoygroup.site. KOCOY_TRUST_PROXY=auto cocok untuk hosting di belakang proxy/CDN. Kalau origin benar-benar dibuka langsung tanpa proxy terpercaya, set KOCOY_TRUST_PROXY=0. Jika memakai domain staging tambahan, masukkan lewat KOCOY_ALLOWED_HOSTS=domain-staging.example.

Jika nilai database berbeda dari default, tambahkan juga:

wasmer app secrets create KOCOY_DB_HOST "host_database"
wasmer app secrets create KOCOY_DB_PORT "10272"
wasmer app secrets create KOCOY_DB_NAME "nama_database"
wasmer app secrets create KOCOY_DB_USER "user_database"

Tes lokal via Wasmer:

wasmer run .

Deploy:

wasmer deploy

Setelah selesai, Wasmer akan menampilkan URL aplikasi, versioned URL, dan link dashboard.

Route Utama

/              -> Beranda
/beranda       -> Beranda
/layanan       -> Layanan
/tentang-kami  -> Tentang Kami
/pustaka       -> Pustaka
/sertifikasi   -> Sertifikasi
/kontak        -> Kontak
/admin         -> Panel admin

Catatan

  • Backend membaca PORT dari environment, default 5000.
  • wasmer.toml dan app.yaml sudah mengatur PYTHONPATH=/app/vendor.
  • Jangan simpan password database di repository.
  • Aplikasi memiliki rate limit in-memory untuk menahan scan/flood ringan. Nilai default bisa diubah lewat KOCOY_RATE_LIMIT_GLOBAL, KOCOY_RATE_LIMIT_API, KOCOY_RATE_LIMIT_ADMIN, KOCOY_RATE_LIMIT_LOGIN, dan KOCOY_RATE_LIMIT_BURST.
  • Admin login dan cek status tiket memakai verifikasi sesi server-side. TTL default 30 menit dan bisa diubah lewat KOCOY_HUMAN_VERIFY_TTL.
  • robots.txt, canonical URL, noindex admin/API/verify, dan redirect HTTPS www sudah dilayani dari backend.
  • Perlindungan DDoS besar tetap harus dilakukan di edge/CDN/WAF seperti Cloudflare karena traffic besar harus dihentikan sebelum mencapai runtime aplikasi.

Kocoy Group website

aireszam01/kocoygroup-flask: Kocoy Group website