Deploy KozyNear ke Hugging Face Spaces
HF Spaces = free hosting untuk ML demos. CPU basic free tier:
- 16GB RAM (32x Render's 512MB)
- 2 vCPU
- Docker support (sama Dockerfile bisa pakai)
- Sleep setelah 48 jam idle (vs Render 15 menit) β better untuk demo
Prerequisite
- Akun HuggingFace (free, GitHub/Google login)
- Repo
KozyNeardi GitHub sudah punya Dockerfile + frontmatter di README
Step 1 β Create Space (~3 menit, di mobile browser)
- Login ke https://huggingface.co
- Profile menu kanan atas β New Space
- Form fields:
- Owner: pilih kamu (DYmazeh)
- Space name:
kozynear - License: MIT
- Select the Space SDK: tap Docker card
- Docker template: tap Blank (kita pakai Dockerfile sendiri)
- Space hardware: CPU basic (free) β DEFAULT, jangan pilih GPU
- Public/Private: Public (untuk demo dosen + course rubric require public)
- Tap Create Space
URL hasil: https://huggingface.co/spaces/DYmazeh/kozynear
Live app URL: https://dymazeh-kozynear.hf.space
Step 2 β Connect ke GitHub Repo (~2 menit)
HF Spaces bisa import dari GitHub:
Di Space yang baru dibuat, tap tab Files
Tap + Contribute atau opsi import
Option A β Manual upload: tap Upload files β upload semua file dari
D:/Project TKI Kos/. Tedious untuk banyak file.Option B β Git push (RECOMMENDED):
# Di laptop kamu, dari D:/Project TKI Kos/ git remote add huggingface https://huggingface.co/spaces/DYmazeh/kozynear git push huggingface mainHF Space punya git repo built-in. Push trigger build.
β οΈ HF butuh login token: ketik HF username + token (generate di https://huggingface.co/settings/tokens β "Write" permission).
Step 3 β Set Environment Variables (~3 menit)
HF Spaces UI β tab Settings β scroll down ke Variables and secrets:
Secrets (sensitive, encrypted):
DATABASE_URL: pakai Supabase projectkozynear(sudah dibuat, refgiowoltyoawpoefpdmwc, region Singapore, free tanpa expire 90 hari; bonus: Table Editor buat lihat isi data + SQL editor buat query manual). Cara ambil connection string (~2 menit):- https://supabase.com/dashboard/project/giowoltyoawpoefpdmwc
- Settings β Database β Reset database password β simpan passwordnya
- Tombol Connect (atas) β tab Session pooler β copy URI
(format
postgresql://postgres.giowoltyoawpoefpdmwc:[PASSWORD]@aws-x-ap-southeast-1.pooler.supabase.com:5432/postgres) - Ganti
[PASSWORD], paste sebagai secretDATABASE_URLdi HF
- WAJIB Session pooler (port 5432), BUKAN Transaction pooler (6543):
asyncpg pakai prepared statements yang tidak kompatibel transaction mode.
Jangan pakai Direct connection juga (host
db.*.supabase.coIPv6-only). - DB sengaja dibiarkan kosong: boot pertama container otomatis jalankan
alembic upgrade head+ seed 227 listing. Setelah itu tabellistingskelihatan di Table Editor. - Catatan free tier: project pause setelah ~7 hari tanpa aktivitas;
keepalive.yml sudah ping
/api/stats(menyentuh DB). Kalau sempat pause, restore 1 klik di dashboard. - Alternatif fallback: Render PG lama (Dashboard β kozynear-db β Connections β External Database URL), tapi ingat expire 90 hari sejak dibuat.
Variables (public, visible):
ENABLE_NEURAL:trueβ kunci utama HF: 16GB RAM cukup untuk MiniLM + Hybrid liveCORS_ORIGINS:["https://dymazeh-kozynear.hf.space"]ENVIRONMENT:productionINDEXES_DIR:/app/data/indexesLOG_LEVEL:INFO
Add satu per satu via UI: + New secret / + New variable.
Catatan: model ONNX MiniLM sudah di-pre-download saat docker build ke
FASTEMBED_CACHE_PATH (lihat Dockerfile), jadi cold start tidak download
ulang ~120MB.
Step 4 β Wait for Build (~15-20 menit first time)
HF Spaces build Docker image dari Dockerfile:
- Pull layers dari Docker Hub (Python, Node base images)
- pip install dependencies (~5 min)
- Pre-download fastembed ONNX model (~2 min)
- npm install + vite build (~3 min)
- Final image push (~1 min)
Monitor via Logs tab. Spaces UI mirip Render, ada logs streaming.
β οΈ HF Spaces 1-jam build timeout. Kalau lewat β Build Fail. Solusi: keep Docker layers small (already optimized).
Step 5 β Verify Live
Setelah build done, status Running:
- Tap App tab β embeds the live UI
- Atau buka langsung:
https://dymazeh-kozynear.hf.space - Test:
/api/statusβ JSON denganindexes.indobert_model_ready: true- Search "kos putra dekat unila" + BM25 β results
- Search same + IndoBERT β fast (~50ms)
Step 6 β Update Repo Links
Update README.md + LAPORAN.md untuk point ke HF Space URL:
- Replace
kozynear.onrender.comβdymazeh-kozynear.hf.space
git commit -m "docs: update deploy URLs to HuggingFace Spaces"
git push origin main
Common Issues
Build hangs di "Building Docker image"
HF free tier kadang build slow. Tunggu, jangan cancel. Kalau >30 min, retry via Factory rebuild di Settings.
"Insufficient disk space"
HF Space disk free tier 50GB β should be enough untuk our Docker image (~2GB). Kalau hit limit, drop large files dari image (e.g., synthetic JSONL kalau gak perlu).
Database connection refused
DATABASE_URL salah format. Render PG kasih postgres://... β works di
SQLAlchemy 2.0 setelah config.py normalize ke postgresql+asyncpg://.
Verify connection string dari Render Dashboard β PG service β Connection.
CORS error di browser console
CORS_ORIGINS env var salah. Update value ke exact match HF Space URL:
["https://dymazeh-kozynear.hf.space"]
Include https://, no trailing slash.
Out of memory tetap kena
Unlikely di HF 16GB, tapi kalau iya:
- Reduce fastembed batch_size (di indobert.py)
- Disable IndoBERT temporarily via env
IR_DISABLE_INDOBERT=true - Upgrade HF Spaces ke CPU+memory paid tier (~$0.05/hour)
Migration Checklist
- HF Space
kozynearcreated (Docker SDK, Blank template, CPU basic) - GitHub repo pushed via
git push huggingface main - Env vars set:
DATABASE_URL(secret) +ENABLE_NEURAL=true+ CORS dll - Build done, status Running
-
/api/statusshows indexes loaded (tfidf/bm25/indobert/hybrid) +indobert_model_ready: true+ memory.rss_mb wajar (<2GB) - Search test: smart (default), BM25, Neural MiniLM, Hybrid
- Tab Evaluasi / Preprocessing / Statistik tampil datanya
- README + LAPORAN updated dengan HF URL (sudah, verifikasi saja)
- Keep Render service sebagai backup URL (keepalive.yml ping dua-duanya)
Cost Comparison
| Provider | Tier | RAM | Always-on | Cost |
|---|---|---|---|---|
| Render free | Web Service | 512MB | Sleep 15min | $0 |
| Render Starter | Web Service | 2GB | Yes | $7/month |
| HF Spaces CPU basic | Docker | 16GB | Sleep 48h | $0 |
| HF Spaces CPU upgrade | Docker | 16-64GB | Yes | $0.05-0.30/hr |
| Fly.io free | shared-cpu-1x | 256MB-1GB | Yes | $0 |
Recommended: HF Spaces CPU basic free (16GB RAM, 48h sleep).