📚 Buku Panduan & Dokumentasi Resmi Mandiri

Pusat Pengetahuan LunexHost

Satu halaman panduan teknis komprehensif yang dirancang untuk pengguna, pengembang bot, administrator komunitas, mesin pencari, dan AI Agent.

/llms-full.txt (Teks Lengkap) OpenAPI 3.0 Spec

1. Tentang LunexHost & Glosarium Istilah

LunexHost adalah platform cloud terpadu modern yang menggabungkan layanan Discord Bot Hosting terkelola (Node.js & Python), AI Website Creator, Manajemen Domain & Subdomain dengan Anycast DNS, serta Programmatic REST API v1.

Siapa Pengguna LunexHost?

  • Pengembang Bot Discord: Kreator yang membutuhkan hosting bot Node.js (discord.js) atau Python (discord.py) dengan keepalive auto-restart, pengelolaan secrets/env, dan streaming console log.
  • Pembuat Website & Komunitas: Pengguna yang memublikasikan halaman web responsif bertenaga AI dengan subdomain gratis (*.lunexhost.my.id) atau custom domain milik sendiri.
  • Developer API & AI Agents: Agen AI / skrip otomatis yang mengeksekusi deployment bot, pembaruan source code ZIP, serta kontrol proses secara terprogram.

Glosarium Istilah Teknis

Istilah Definisi Teknis
REST API v1Antarmuka HTTP/JSON untuk mengotomatisasi siklus hidup bot.
Bearer TokenToken akses API bertawalan lnx_... pada header Authorization.
Dry Run (?dry_run=true)Parameter simulasi uji validasi tanpa mutasi data/file.
OpenAPI 3.0Spesifikasi skema JSON resmi seluruh endpoint API v1.
Subdomain *.lunexhost.my.idAlamat domain publik gratis untuk memublikasikan website.
Custom DomainPenggunaan domain pribadi milik pengguna dengan SSL otomatis.
Rate Limit (60 req/min)Pembatasan kuota 60 request/menit per API Key/IP.
OAuth 2.0 ProviderLayanan Login with Lunex untuk otentikasi pihak ketiga.

Rujukan Teknis Kode: server.ts & server/db.ts.

2. Hosting Bot Discord & Arsitektur Runtime

Mengeksekusi bot Discord berbasis Node.js (v22 LTS) dan Python (v3.11).

Cara Kerja & Lifecycle Proses

  • Model Eksekusi: Dijalankan dalam container sandbox (Docker/Podman) via server/services/sandboxRunner.ts dengan penanganan fail-closed jika runtime container tidak tersedia.
  • Aksi Lifecycle: start, stop, restart, kill.
  • Console Log Stream: Tangkapan stdout & stderr real-time dapat dibaca via GET /api/v1/bots/:id/logs.
  • Input Konsol (stdin): Pengiriman perintah via POST /api/hosting/:id/console-input.

Konfigurasi Startup & File Manager

Berkas bot disimpan di /workspaces/bot_<id>. Opsi autoRestart memastikan bot otomatis dihidupkan jika terhenti tak terduga.

Transparansi Arsitektur: Proses bot dieksekusi dalam sandbox container (Docker/Podman) terisolasi dengan pembatasan kapabilitas keamanan dan mode fail-closed jika runtime container tidak tersedia. Alokasi RAM dan vCPU dibatasi berdasarkan paket langganan.

Rujukan Teknis Kode: server/services/botService.ts, server/services/sandboxRunner.ts & server/apiV1Router.ts.

3. Programmatic REST API v1 Reference

Base URL: https://lunexhost.my.id/api/v1 • Autentikasi: Authorization: Bearer lnx_...

Endpoint Utama:

  • POST /bots: Membuat bot container baru. Payload JSON: { "name": "Botku", "runtime": "nodejs" }.
  • POST /bots/:id/upload: Upload source code ZIP (multipart/form-data, field file).
  • POST /bots/:id/env: Set rahasia environment variables (JSON object string key-value).
  • POST /bots/:id/actions: Kontrol proses bot (action: "start" | "stop" | "restart" | "kill").
  • GET /bots/:id/status: Cek status real-time (online/offline, cpuUsage, ramUsage, uptime).
  • GET /bots/:id/logs?limit=100: Mengambil log stdout/stderr terbaru (1-500 baris).
  • GET /openapi.json: Mengambil spesifikasi OpenAPI 3.0 JSON resmi.

Rujukan Teknis Kode: server/apiV1Router.ts.

4. Pembuatan Bot & Upload Source Code ZIP

Format file WAJIB ber-ekstensi .zip dengan berkas utama (index.js/main.py/package.json) diletakkan langsung di root ZIP tanpa folder pembungkus ekstra.

Alur Ekstraksi:

  1. Bot dihentikan otomatis jika online (botService.stopBot).
  2. Workspace lama (/workspaces/bot_<id>) dibersihkan.
  3. Arsip ZIP disimpan ke storage durabel (storageService.archiveBotZip).
  4. Ekstraksi berkas ke workspace dan pengetatan keamanan (securityService.secureBotWorkspace).

Rujukan Teknis Kode: server/apiV1Router.ts & server/services/storageService.ts.

5. Paket Langganan, Kuota, Fitur & Harga

Fitur / Batas Kuota Free Plus Pro Custom
Harga BulananRp0Rp49.000Rp99.000Custom
Max Bot Discord1 Bot5 Bot8 BotHingga 999 Bot
RAM & vCPU1024 MB • 1 vCPU2048 MB • 2 vCPU4096 MB • 4 vCPU16 GB • 8 vCPU
NVMe Storage1 GB Storage5 GB Storage15 GB Storage50 GB Storage
Subdomain *.lunexhost.my.id1 Subdomain5 Subdomain10 SubdomainSesuai Kebutuhan
Custom Domains❌ 0❌ 0✅ 10 Domains✅ Unlimited
OAuth Login/Bulan API1.000 login/bln25.000 login/blnUnlimitedUnlimited

Rujukan Teknis Kode: LUNEX_PLANS pada server/db.ts.

6. OAuth 2.0 Provider & Portal Developer

Layanan "Login with Lunex" mendukung OAuth 2.0 Authorization Code Grant dan Refresh Token. Endpoint userinfo di GET /oauth/userinfo mengembalikan profil akun terverifikasi.

Aplikasi dikelola di Portal Developer (/developers) dengan batas maksimal 5 aplikasi per akun pengguna.

Rujukan Teknis Kode: server.ts (baris 1515-2096).

7. Keamanan, Privasi & Pemulihan Data

Kredensial sensitif disuntikkan secara dinamis saat runtime. Sesi web dilindungi JWT HttpOnly cookie (7 hari). Direktori workspace dilindungi dari path traversal via path.resolve.

Pemulihan data didukung oleh snapshot database otomatis/manual dan pengarsipan ZIP durabel. Pengguna disarankan tetap menyimpan cadangan lokal kode bot.

Rujukan Teknis Kode: server/services/securityService.ts & server/services/storageService.ts.

8. Pertanyaan Umum (FAQ) & Troubleshooting

Q: Mengapa bot saya mengalami error "Cannot find module"?

A: Pastikan package.json disertakan pada root ZIP. Sistem menjalankan npm install otomatis saat proses bot diaktifkan.

Q: Apakah upload ZIP menghapus Environment Variables?

A: Tidak. Secrets disimpan terpisah pada database dan tidak akan terhapus saat upload ZIP.

Q: Bagaimana menguji API tanpa mutasi data?

A: Gunakan parameter query ?dry_run=true atau header X-Lunex-Dry-Run: true.