Spaces:
Running on Zero
Download docs/Config.md from Catalna/ginchiee-bot: direct link, hf CLI and curl.
- Browser
- Download file 3.96 kB
-
https://huggingface.co/spaces/Catalna/ginchiee-bot/resolve/main/docs/Config.md
- Command line
-
hf download hf://spaces/Catalna/ginchiee-bot/docs/Config.md
-
curl -L -o Config.md https://huggingface.co/spaces/Catalna/ginchiee-bot/resolve/main/docs/Config.md
A newer version of the Gradio SDK is available: 6.31.0
Konfigurasi
Semua konfigurasi Ginchiee dibaca dari environment variables. Tidak ada nilai rahasia yang boleh masuk ke git atau ke Docker image.
Di mana memasukkan nilai
| Lingkungan | Cara |
|---|---|
| Laptop / lokal | file .env di root project (sudah masuk .gitignore) |
| Hugging Face Space | Settings → Variables and secrets → Secrets |
| Docker | docker run -e KEY=value … |
| GitHub Actions | Settings → Secrets and variables → Actions |
Penting: file
.envtidak pernah terkirim ke Hugging Face..envmasuk.gitignore(baris 19) dan.dockerignore, sehingga hanya.env.exampleyang ada di repository. Space membangun dari repository, jadi kredensial di sana wajib diletakkan di Space Secrets.Bukti: bot yang berjalan di Space sekarang sudah menerima
TELEGRAM_BOT_TOKENdanGEMINI_API_KEYdari Secrets — kalau.envyang dipakai, bot mustahil bisa jalan sama sekali karena.envtidak ada di sana.
Variabel
Wajib
Bot tidak akan start kalau salah satu ini kosong (fail-fast di
config/settings.py, bukan diam-diam pakai nilai default yang salah).
| Key | Keterangan |
|---|---|
TELEGRAM_BOT_TOKEN |
Token dari @BotFather |
GEMINI_API_KEY |
API key dari Google AI Studio |
DATABASE_URL |
Connection string PostgreSQL |
DATABASE_URL menerima alias BOT_TOKEN (untuk Telegram) dan GEMINI_KEY
(untuk Gemini), tapi TELEGRAM_BOT_TOKEN dan GEMINI_API_KEY lebih disarankan.
Opsional
| Key | Default | Keterangan |
|---|---|---|
GEMINI_MODEL |
gemini-flash-lite-latest |
Model Gemini |
AI_TEMPERATURE |
0.95 |
Makin tinggi = makin ekspresif (0.0–2.0) |
AI_TOP_P |
0.95 |
Nucleus sampling |
AI_MAX_OUTPUT_TOKENS |
220 |
Batas panjang balasan — menjaga Ginchiee tetap singkat |
LOG_LEVEL |
INFO |
DEBUG / INFO / WARNING / ERROR |
ALLOWED_USER_IDS |
(kosong = semua orang) | Batasi bot ke user id Telegram tertentu, dipisah koma |
PORT |
7860 |
Port health-check HTTP |
DATABASE_URL
Format:
postgresql://USER:PASSWORD@HOST:PORT/DBNAME
Supabase — ambil dari Dashboard → Connect → tab Session pooler (port 5432):
postgresql://postgres.[PROJECT-REF]:[PASSWORD]@aws-0-[region].pooler.supabase.com:5432/postgres
Postgres lokal:
postgresql://ginchiee:password@127.0.0.1:5432/ginchiee
Catatan Supabase
- Tambahkan
?sslmode=requiredi akhir bila muncul error "SSL connection required" (kadang perlu saat dideploy, kadang tidak). - Pakai Session pooler, bukan Transaction pooler — asyncpg memakai prepared statement, dan pooler mode Transaction tidak mendukung itu.
- Password database jangan pernah masuk ke file lain atau ke git.
Migrasi database
Skema dibuat otomatis saat bot start (database/migrations.py), jadi tidak ada
langkah psql manual:
- File
database/migrations/NNN_*.sqldijalankan berurutan. - Setiap versi yang sudah diterapkan dicatat di tabel
schema_migrations(dengan checksum) sehingga aman dijalankan setiap boot. - Mengubah file migrasi yang sudah diterapkan akan membuat startup gagal dengan pesan jelas — tambahkan migrasi baru, jangan edit yang lama.
Memindahkan data lama dari SQLite ke PostgreSQL:
python scripts/migrate_sqlite_to_postgres.py --source data/nichie.db --dry-run
python scripts/migrate_sqlite_to_postgres.py --source data/nichie.db
Keamanan
.env,data/, dan seluruh file*client_secret*.jsonsudah dikecualikan oleh.gitignoredan.dockerignore.- Kredensial tidak pernah dicetak ke log (password database di-mask pada log
migrasi;
httpx/httpcoredi-silence agar token tidak muncul di URL). .envtidak ikut masuk image Docker, sehingga tidak bisa diekstrak dari image yang ter-push ke registry mana pun.