---
title: "Self-host LobeHub: platform chat AI untuk banyak pengguna dengan API model Anda sendiri"
description: "Deploy LobeHub beserta PostgreSQL, Redis, dan penyimpanan file RustFS di server Anda sendiri dari template Zenavo, pasang dua domain, batasi email yang boleh mendaftar setelah mendaftar, hubungkan penyedia model seperti OpenAI dan Claude, lalu atur backup dan upgrade."
date: 2026-11-13
language: id-ID
url: https://zenavo.app/id-ID/blog/self-host-lobehub
---

# Self-host LobeHub: platform chat AI untuk banyak pengguna dengan API model Anda sendiri

[LobeHub](https://github.com/lobehub/lobehub) (sebelumnya LobeChat) adalah platform chat AI open source: mendukung puluhan penyedia model seperti OpenAI, Anthropic, Google, dan DeepSeek, serta memiliki akun multi-pengguna, riwayat percakapan, unggah file, basis pengetahuan, dan agen. Antarmukanya lengkap, cocok untuk menyiapkan satu pintu masuk AI bersama bagi tim atau keluarga.

Versi server memerlukan database dan penyimpanan file, sehingga membangunnya sendiri dari nol butuh banyak konfigurasi. Template LobeHub dari Zenavo sudah mengemas semuanya, dan panduan ini membahas mulai dari deploy sampai backup. Jika Anda menginginkan antarmuka chat yang lebih ringan dalam satu kontainer dan cukup dengan satu domain, lihat [Open WebUI](https://zenavo.app/id-ID/blog/self-host-open-webui).

Server, platform Zenavo, dan API penyedia model ditagih secara terpisah; LobeHub sendiri tidak menyediakan model, dan percakapan dikirim ke penyedia yang Anda atur.

## Isi template

Buka [template LobeHub](https://zenavo.app/deploy?template=lobehub). Setelah deploy, proyek berisi empat layanan:

| Layanan | Fungsinya |
|---|---|
| lobehub | Aplikasinya sendiri, image `lobehub/lobehub:2.3.3`, port HTTP `3210` |
| postgresql | Akun, percakapan, pengaturan, dan kunci API yang disimpan terenkripsi, dengan ekstensi pencarian teks lengkap (ParadeDB, PostgreSQL 17) |
| redis | Cache dan sesi |
| rustfs | Penyimpanan file yang kompatibel dengan S3 untuk gambar dan file yang diunggah; port `9000` adalah API S3, `9001` adalah konsol admin |

Template menyarankan memori 2 GB. Kata sandi database, kunci enkripsi login (`AUTH_SECRET`), dan kunci enkripsi untuk kunci API (`KEY_VAULTS_SECRET`) semuanya dibuat otomatis saat deploy.

## Siapkan dua domain

LobeHub memerlukan dua alamat publik:

- **URL aplikasi**, misalnya `https://chat.example.com`, untuk membuka LobeHub;
- **URL penyimpanan file**, misalnya `https://files.example.com`, yang diakses langsung oleh browser saat mengunggah dan menampilkan gambar.

Pertama, tambahkan record DNS A untuk kedua subdomain ini yang mengarah ke server. Lalu [hubungkan server Linux](https://docs.zenavo.app/id-ID/servers/add-a-server) ke Zenavo, buka template, isi kedua URL tersebut (tanpa garis miring di akhir), pilih server, dan deploy.

## Pasang domain

Setelah deploy, pasang masing-masing:

1. Di tab **Jaringan** pada layanan **lobehub**, pasang `chat.example.com` ke port `3210`;
2. Di tab **Jaringan** pada layanan **rustfs**, pasang `files.example.com` ke port `9000`.

Domain harus sama dengan yang Anda isi saat deploy. Setelah HTTPS aktif, buka `https://chat.example.com`. Langkah-langkahnya ada di [Domain & HTTPS](https://docs.zenavo.app/id-ID/networking/domains).

`9001` adalah konsol admin RustFS; tidak perlu, dan tidak disarankan, memasang domain publik untuknya.

## Daftarkan akun, lalu batasi pendaftaran

Buka aplikasi dan daftarkan akun pertama dengan email dan kata sandi.

Secara bawaan, template mengizinkan siapa pun mendaftar. Jika ini hanya untuk tim atau keluarga, tambahkan email atau domain yang boleh mendaftar di **Variabel** pada layanan lobehub, simpan, lalu restart layanan:

```sh
AUTH_ALLOWED_EMAILS=example.com,friend@gmail.com
```

Anda bisa mengisi alamat email lengkap atau hanya domain, dipisahkan koma. Setelah itu, email yang tidak ada di daftar tidak bisa mendaftar.

Jika Anda memerlukan verifikasi email atau reset kata sandi, siapkan SMTP:

```sh
SMTP_HOST=smtp.example.com
SMTP_PORT=587
SMTP_SECURE=false
SMTP_USER=noreply@example.com
SMTP_PASS=kata sandi SMTP Anda
AUTH_EMAIL_VERIFICATION=1
```

Untuk port 465, ubah `SMTP_SECURE` menjadi `true`. Tanpa SMTP, pendaftaran dan login tetap berjalan normal; hanya email verifikasi dan reset kata sandi yang tidak bisa dikirim.

## Hubungkan model

Ada dua cara, dan keduanya bisa dipakai bersamaan.

**Setiap orang mengisi kuncinya sendiri.** Setelah login, buka **Pengaturan → Penyedia Layanan AI** (Settings → AI Service Provider), pilih penyedia, isi kunci API, isi alamat proxy jika perlu, lalu klik **Periksa** (Check). Kunci dienkripsi dengan `KEY_VAULTS_SECRET` lalu disimpan di database, dan pengguna lain tidak bisa melihatnya.

**Admin menyediakan untuk semua.** Atur kunci penyedia di **Variabel** pada layanan lobehub, sehingga semua pengguna bisa langsung memakainya tanpa mengisi sendiri:

```sh
OPENAI_API_KEY=sk-...
ANTHROPIC_API_KEY=sk-ant-...
DEEPSEEK_API_KEY=sk-...
```

Untuk penyedia atau gateway yang kompatibel dengan API OpenAI, ubah alamatnya dengan `OPENAI_PROXY_URL`, misalnya ke gateway [New API](https://zenavo.app/id-ID/blog/self-host-new-api), [Magpie](https://zenavo.app/id-ID/blog/self-host-magpie), atau [LiteLLM](https://zenavo.app/id-ID/blog/self-host-litellm) self-hosted Anda di `https://api.example.com/v1`, lalu terbitkan kunci khusus untuk LobeHub dari gateway tersebut dengan batas kuota. Untuk menambahkan pencarian web gratis secara real-time di LobeHub, tambahkan [SearXNG](https://zenavo.app/id-ID/blog/self-host-searxng) di proyek yang sama; dan jika ingin memanggil asisten dari Telegram atau Discord, padukan dengan [OpenClaw](https://zenavo.app/id-ID/blog/self-host-openclaw).

**Kunci yang disediakan admin akan dipakai oleh semua orang yang bisa login, dan menghabiskan kuota Anda.** Sebelum mengaturnya, batasi pendaftaran seperti di bagian sebelumnya.

## Tentang file yang diunggah

Gambar dan file yang diunggah disimpan di bucket `lobe` pada rustfs. Template mengatur bucket ini agar **dapat dibaca publik** supaya browser bisa langsung menampilkan gambar: siapa pun yang tahu alamat file bisa membukanya tanpa login. Alamatnya berisi path acak dan tidak bisa didaftar atau dicari, tetapi jangan unggah file sensitif yang tidak boleh dibuka lewat tautan.

Gambar yang dikirim ke model diubah menjadi base64 dan langsung disertakan dalam permintaan (template mengatur `LLM_VISION_IMAGE_USE_BASE64=1`), sehingga penyedia model tidak perlu bisa mengakses domain file Anda.

## Backup

Ada dua bagian yang perlu dicadangkan:

- **postgresql**: akun, percakapan, pengaturan, dan kunci terenkripsi ada di sini. Cadangkan kapan saja dari tab **Backup & Pemulihan** pada layanan ini tanpa downtime, atau atur backup otomatis.
- **rustfs**: file yang diunggah. Ini adalah backup volume, yang mengharuskan proyek dalam keadaan berhenti, jadi sebaiknya dilakukan pada jendela pemeliharaan.

Ada satu hal lagi yang harus disimpan terpisah: **`KEY_VAULTS_SECRET`** di variabel layanan lobehub. Saat memulihkan database ke deployment baru, Anda harus memakai nilai yang sama; jika tidak, kunci API yang tersimpan di database tidak bisa didekripsi. **Jangan ubah nilainya setelah deploy.**

Backup baru bisa diandalkan setelah dipulihkan dan diperiksa. Untuk data yang penting, unduh juga satu salinan backup untuk Anda simpan.

## Upgrade

Template menetapkan `lobehub/lobehub:2.3.3`. Sebelum upgrade, baca [catatan rilis](https://github.com/lobehub/lobehub/releases) LobeHub, cadangkan postgresql, lalu ubah tag image ke versi baru di **Sumber** pada **Pengaturan** layanan lobehub dan deploy. Skema database dimigrasikan otomatis saat aplikasi mulai, jadi selalu buat backup sebelum upgrade.

## Pertanyaan umum

**Pengalihan login error setelah membuka halaman?**
Periksa apakah domain yang dipasang di lobehub sama persis dengan URL aplikasi yang diisi saat deploy, termasuk `https://`, dan tanpa garis miring di akhir. Jika Anda mengganti domain, ubah `APP_URL` (untuk alamat penyimpanan file: `S3_ENDPOINT`) ke alamat baru di **Variabel** pada layanan lobehub, lalu restart layanan.

**Gagal mengunggah gambar?**
Kemungkinan besar `files.example.com` belum dipasang ke port `9000` rustfs, atau sertifikat HTTPS-nya belum aktif. Buka domain itu langsung di browser: jika bisa terhubung (meskipun menampilkan pesan error), pemasangannya sudah benar.

**Balasan AI kosong atau error?**
Klik **Periksa** (Check) di **Pengaturan → Penyedia Layanan AI** (Settings → AI Service Provider) terlebih dahulu untuk memastikan kunci dan model bisa dipakai. Jika memakai proxy pihak ketiga, perhatikan apakah alamatnya perlu diakhiri `/v1`.

**Seberapa besar server yang dibutuhkan?**
Template menyarankan memori 2 GB untuk LobeHub; ditambah PostgreSQL, Redis, dan RustFS, kami menyarankan server dengan memori 4 GB atau lebih. Inferensi model berjalan di sisi penyedia dan tidak memakai CPU server Anda.

Mulailah dari [template LobeHub](https://zenavo.app/deploy?template=lobehub): siapkan dua domain, batasi pendaftaran segera setelah deploy, lalu hubungkan model.
