Self-host LiteLLM Proxy: kunci virtual, kontrol anggaran, serta perbandingan dengan New API dan Magpie
Deploy LiteLLM Proxy dengan PostgreSQL di server Anda sendiri memakai template Zenavo, atur penyedia model lewat dashboard /ui, terbitkan kunci virtual dengan batas anggaran, serta bandingkan LiteLLM, New API, dan Magpie.
Artikel ini juga tersedia dalam English, 简体中文, 繁體中文, 日本語, dan Español.
Menaruh kunci API utama dari penyedia model langsung ke setiap aplikasi atau laptop anggota tim membuat Anda tidak bisa membatasi berapa banyak biaya yang dihabiskan satu layanan, dan saat harus merotasi kunci Anda terpaksa mengubah konfigurasi di banyak tempat. LiteLLM adalah salah satu proxy LLM open source paling populer di ekosistem Python dan rekayasa AI: ia menyatukan lebih dari 100 penyedia model di balik satu endpoint yang kompatibel dengan OpenAI, lengkap dengan dashboard admin /ui, kunci virtual (Virtual Keys), batas anggaran (Budgets), serta log pengeluaran per permintaan.
Panduan ini menggunakan template LiteLLM dari Zenavo untuk men-deploy LiteLLM beserta PostgreSQL di server Linux Anda sendiri, sekaligus membandingkannya dengan New API dan Magpie. Server, Zenavo, dan API model upstream ditagih secara terpisah.
1. Deploy LiteLLM dan PostgreSQL
Hubungkan server Linux ke Zenavo (disarankan memori minimal 1 GB), buka template LiteLLM, pilih server Anda, lalu deploy.
Proyek ini langsung menjalankan dua layanan yang saling terhubung melalui jaringan privat proyek:
| Layanan / Variabel | Nilai atau fungsi |
|---|---|
litellm |
Image ghcr.io/berriai/litellm:v1.109.1, port HTTP 4000 |
postgresql |
Image postgres:16, database litellm, volume persisten /var/lib/postgresql/data |
LITELLM_MASTER_KEY |
Kunci master sk-... yang dibuat otomatis untuk login ke /ui dan memanggil API admin |
LITELLM_SALT_KEY |
Salt enkripsi otomatis untuk mengenkripsi kunci API penyedia upstream di dalam PostgreSQL |
STORE_MODEL_IN_DB |
True, sehingga model yang ditambahkan lewat /ui tersimpan secara permanen di PostgreSQL |
Jangan pernah mengubah
LITELLM_SALT_KEYsetelah menyimpan kredensial: LiteLLM memakaiLITELLM_SALT_KEYuntuk mengenkripsi dan mendekripsi kunci API penyedia di dalam database. Mengubahnya di kemudian hari akan membuat seluruh kunci penyedia yang tersimpan tidak bisa dibaca. SalinLITELLM_MASTER_KEYdanLITELLM_SALT_KEYke pengelola kata sandi Anda (seperti Vaultwarden self-hosted) segera setelah deploy selesai.
2. Pasang domain dan login ke /ui
- Di tab Networking pada layanan
litellm, pasang domain kustom sepertillm.example.comke port4000, lalu tambahkan record DNSAyang mengarah ke server Anda. Lihat Domain & HTTPS. - Di tab Variable pada layanan
litellm, salin nilaiLITELLM_MASTER_KEY. - Buka
https://llm.example.com/uidan masuk dengan usernameadminsertaLITELLM_MASTER_KEY.
postgresql hanya diakses oleh litellm melalui jaringan privat dan tidak memerlukan akses publik.
3. Tambahkan model dan terbitkan kunci virtual
Tambahkan model upstream
Karena template sudah mengaktifkan STORE_MODEL_IN_DB="True", Anda tidak perlu mengedit file konfigurasi YAML:
- Di
/ui, buka Models → Add Model. - Pilih penyedia (OpenAI, Anthropic, DeepSeek, Gemini, Azure, Bedrock, dll.), masukkan alias model yang akan dipanggil klien (misalnya
claude-sonnetataugpt-4o), lalu tempelkan kunci API upstream. - Simpan dan kirim permintaan uji coba di Test Key / Playground untuk memastikan respons berjalan lancar.
Terbitkan Kunci Virtual (Virtual Keys) dengan batas anggaran
Jangan gunakan LITELLM_MASTER_KEY secara langsung di kode aplikasi atau alat harian. Buka Virtual Keys → Create New Key:
- Buat kunci terpisah untuk setiap aplikasi, rekan tim, atau alat (misalnya
nextjs-prod,open-webui,claude-code-alex); - Batasi daftar model yang boleh dipanggil oleh kunci tersebut;
- Tetapkan Max Budget (misalnya
$20), periode reset anggaran (harian atau bulanan), serta batas laju permintaan (TPM / RPM).
4. Hubungkan aplikasi, agen coding, dan antarmuka chat
Semua SDK atau klien yang mendukung Base URL OpenAI kustom dapat langsung terhubung ke LiteLLM:
- Backend aplikasi (OpenAI SDK / LangChain / Vercel AI SDK): isi Base URL dengan
https://llm.example.com/v1dan API Key dengan kunci virtual. Jika aplikasi Anda berjalan di proyek Zenavo yang sama (seperti aplikasi Next.js + PostgreSQL), panggil langsunghttp://litellm.zenavo.internal:4000/v1lewat jaringan privat. - Claude Code dan Codex CLI: LiteLLM juga melayani endpoint
/v1/messagesdan/v1/responses; atur dengan variabel lingkungan yang sama seperti di panduan New API. Jika Anda juga ingin memeriksa log, men-deploy, dan melakukan rollback layanan Zenavo dari Claude Code, lihat Deploy dan debug proyek Zenavo dari Claude Code. - Antarmuka chat dan asisten pribadi: di Open WebUI, LobeHub, atau OpenClaw self-hosted, arahkan URL proxy OpenAI ke
https://llm.example.com/v1(atauhttp://litellm.zenavo.internal:4000/v1bila berada di proyek yang sama).
5. LiteLLM vs New API vs Magpie: pilih gateway yang mana?
Katalog Zenavo menyediakan tiga gateway LLM open source dengan fokus yang berbeda:
| Template gateway | Fokus utama | Penyimpanan | Paling cocok untuk |
|---|---|---|---|
| LiteLLM | Proxy OpenAI untuk rekayasa perangkat lunak & SDK dengan kunci virtual, anggaran, guardrails, dan integrasi observabilitas (Langfuse, OpenTelemetry) | PostgreSQL 16 | Backend aplikasi AI produksi serta tim engineering yang mengelola anggaran dan log biaya per layanan |
| New API | Pusat distribusi dan pencatatan kuota multi-pengguna dengan akun pengguna, kuota token, dan penyeimbang beban channel | SQLite (/data) secara bawaan |
Membagikan akun atau token per anggota tim untuk dipakai bersama di Open WebUI, LobeHub, Claude Code, dan Codex |
| Magpie | Gateway multi-protokol satu kontainer yang ringan untuk menerjemahkan antara Anthropic Messages, OpenAI Responses/Chat, dan Gemini, lengkap dengan failover antarkunci dan langganan | Volume /config |
Developer individu dan tim kecil pengguna Claude Code & Codex CLI yang membutuhkan routing lintas protokol serta halaman cek kuota mandiri /me |
6. Backup dan upgrade
LiteLLM menyimpan seluruh konfigurasi model, kunci virtual, dan catatan pengeluaran di layanan postgresql:
- Buka tab Backup & Restore pada layanan
postgresqluntuk membuat dan mengunduh backup database, atau aktifkan jadwal backup otomatis. Lihat Backup & Pemulihan. - Selalu simpan salinan
LITELLM_SALT_KEYbersama backup database Anda — tanpaLITELLM_SALT_KEYasli, database yang dipulihkan tidak dapat mendekripsi kunci penyedia di dalamnya. - Sebelum melakukan upgrade, cadangkan PostgreSQL terlebih dahulu, lalu perbarui tag image (bawaan
v1.109.1) di Settings → Source pada layananlitellm.
Pertanyaan umum
Mengapa /ui menampilkan 502 sesaat setelah deploy selesai?
Saat mulai berjalan, LiteLLM menunggu PostgreSQL siap lalu menjalankan migrasi database Prisma; template ini menyertakan waktu tenggang health check selama 40 detik (start_period: 40). Tunggu hingga status layanan berubah menjadi Running, atau buka Zenavo Agent bawaan di sisi kanan konsol untuk memeriksa log startup.
Saat menambahkan model di /ui, muncul pesan tidak dapat menyimpan ke database.
Pastikan variabel lingkungan STORE_MODEL_IN_DB="True" tetap aktif di layanan litellm dan layanan postgresql berstatus Running.
Klien mendapatkan error BudgetExceededError.
Kunci virtual tersebut telah mencapai batas Max Budget yang Anda tetapkan. Buka Virtual Keys di /ui untuk menaikkan anggaran, mereset pemakaian, atau mengatur siklus reset bulanan otomatis.
Bisakah LiteLLM dipakai bersama New API?
Bisa. Beberapa tim mengelola kumpulan channel penyedia upstream di New API, lalu menempatkan LiteLLM di depan backend aplikasi untuk pembagian anggaran per microservice serta pelacakan Langfuse, dengan menghubungkan keduanya lewat .zenavo.internal.
Deploy template LiteLLM untuk menyatukan penyedia model Anda di balik proxy berbasis PostgreSQL lengkap dengan kontrol anggaran per kunci dalam hitungan menit.
Inilah yang dibaca agen coding, di https://zenavo.app/id-ID/blog/self-host-litellm.md.
Markdown tidak bisa dimuat. Buka langsung: https://zenavo.app/id-ID/blog/self-host-litellm.md