Independent testing Updated August 2026 387 self-hosting guides 5 VPS providers tested

guide

Cara Self-Host Jan Server di VPS (Panduan Lengkap)

Pasang Jan Server di VPS dengan Docker Compose: jalankan wizard penyiapan, pilih inferensi jarak jauh atau lokal, lalu amankan Keycloak dan gerbang Kong lebih dulu.

Jan Server adalah bagian dari proyek Jan yang bisa di-host sendiri: sekumpulan mikroservis Go yang menyediakan API kompatibel OpenAI, dengan integrasi perkakas MCP, autentikasi Keycloak, dan gerbang Kong di depannya. Ia bukan kontainer tunggal, dan proses pemasangannya mencerminkan itu.

Kabar baiknya, proyek ini menyertakan wizard penyiapan yang menuliskan konfigurasinya untuk Anda. Keputusan utama yang Anda ambil di dalamnya adalah di mana inferensi berjalan.

Sebelum mulai

Sebagian besar paket VPS murah adalah 4 GB dan tidak akan cukup. Yang melewati batas itu:

PenyediaPaketvCPU / RAM / DiskHargaTautan
ContaboCloud VPS 44 / 8 GB / 100 GB5,50 EUR/bulan belum termasuk PPNContabo
Hetzner CloudCX334 / 8 GB / 80 GB NVMe8,49 EUR/bulan belum termasuk PPNHetzner Cloud
DigitalOceanTingkat droplet 8 GB8 GBcek harga terkiniDigitalOcean
VultrTingkat instance 8 GB8 GBcek harga terkiniVultr
LinodeTingkat shared 8 GB8 GBcek harga terkiniLinode

Untuk rincian lebih lengkap tentang paket-paket ini, lihat perbandingan VPS kami.

Langkah 1: Terhubung dan pasang dependensi

ssh user@ip-vps-anda
sudo apt update && sudo apt upgrade -y
sudo apt install -y docker.io docker-compose-v2 make git
sudo systemctl enable --now docker

Pastikan yang terpasang memang Compose v2, karena berkas compose Jan Server memakai kunci include: yang tidak dipahami v1:

docker compose version

Langkah 2: Kloning repositorinya

Berbeda dari kebanyakan aplikasi self-hosted, di sini Anda tidak menulis docker-compose.yml sendiri. Berkas compose di repositori menarik potongan konfigurasi untuk infrastruktur, layanan API, perkakas MCP, aplikasi web, dan inferensi.

git clone https://github.com/janhq/server.git
cd server

Langkah 3: Jalankan wizard penyiapan

make quickstart

Wizard menuliskan satu berkas .env di direktori akar lalu menjalankan Compose. Ia menanyakan tiga hal:

Kalau Anda tidak bisa menjalankan wizard secara interaktif, salin templatnya lalu isi sendiri:

cp .env.template .env
nano .env
make setup

make setup memeriksa dependensi, membuat direktori, dan menarik image dasar tanpa menyalakan apa pun.

Langkah 4: Nyalakan tumpukannya

make up-full

Setelah kontainernya stabil, Anda akan punya:

LayananPortFungsi
Gerbang API (Kong)8000Titik masuk untuk semuanya
LLM API8080Chat completion kompatibel OpenAI
Response API8082Orkestrasi perkakas multi-langkah
Media API8285Unggahan dan ID media
Perkakas MCP8091Pencarian, scraping, eksekusi kode
Antarmuka obrolan web3001Klien peramban
Keycloak8085Konsol autentikasi

Dokumentasi API disajikan di http://ip-vps-anda:8000/api/swagger/index.html.

Langkah 5: Amankan sebelum Anda membukanya

Inilah langkah yang tidak boleh dilewati. Dua nilai bawaan tidak aman di server publik:

  1. Konsol Keycloak disertakan dengan admin / admin. Ubah segera di port 8085. Keycloak menerbitkan token yang divalidasi Kong, jadi satu kredensial ini melindungi seluruh permukaan API.
  2. Hanya port 8000 yang boleh dijangkau dari luar. Kong menegakkan pemeriksaan JWT dan kunci API; port layanan di belakangnya tidak. Ikat sisanya ke localhost atau blokir di firewall.
sudo ufw allow OpenSSH
sudo ufw allow 443/tcp
sudo ufw enable

Setelah itu akhiri TLS dengan Caddy, Traefik, atau Nginx dan teruskan ke port 8000. Membiarkan endpoint LLM tanpa autentikasi di internet publik akan membuatnya ditemukan dan dipakai orang lain, biasanya dalam hitungan hari.

Menjalankan inferensi secara lokal

Kalau Anda memang memilih vLLM lokal, potongan konfigurasi inferensinya mendefinisikan dua profil. Profil GPU menjalankan vllm/vllm-openai:v0.11.2 dengan janhq/Jan-v1-4B sebagai model bawaan dan memesan satu perangkat NVIDIA, sehingga tidak akan menyala di VPS biasa. Profil CPU berjalan tanpa GPU dan benar-benar berguna untuk pengujian, tetapi kecepatan menghasilkan token di vCPU bersama terlalu lambat untuk Anda sajikan ke pengguna.

Menyewa kapasitas GPU lalu mengarahkan Jan Server ke sana sebagai endpoint jarak jauh biasanya lebih murah daripada server GPU yang menganggur di antara prompt.

Operasi sehari-hari

Memperbarui ke rilis yang lebih baru:

git pull
docker compose pull
make up-full

Cadangkan volume Postgres dan berkas .env di direktori akar Anda. .env menyimpan rahasia yang dihasilkan wizard, dan memulihkan basis data tanpanya menyisakan sesi yang tidak bisa Anda dekripsi.

Periksa apa yang sedang dilakukan sebuah layanan dengan docker compose logs -f llm-api, ganti dengan nama layanan yang Anda perlukan.

Masalah yang sering muncul

GejalaPenyebab
include bukan kunci compose yang validDocker Compose v1 yang terpasang; Anda butuh v2
Kontainer dimatikan saat menyalaRAM di bawah 8 GB, tumpukannya dihentikan OOM
Setiap panggilan API mengembalikan 401Permintaan mengenai port layanan secara langsung, bukan Kong di port 8000
Kontainer vLLM tidak pernah menjadi sehatProfil GPU aktif di host tanpa perangkat NVIDIA

Jan Server menuntut lebih banyak dari sebuah VPS daripada aplikasi self-hosted pada umumnya, terutama karena ia membawa gerbang, penyedia identitas, dan basis datanya sendiri alih-alih mengandaikan Anda sudah punya. Ukur untuk 8 GB, taruh Kong di belakang TLS, dan ubah kata sandi Keycloak sebelum hal lain.

Frequently asked questions

Apakah saya perlu GPU untuk meng-host sendiri Jan Server di VPS?

Tidak, kalau Anda memilih endpoint kompatibel OpenAI jarak jauh ketika wizard penyiapan menanyakan penyedia LLM Anda. VPS kemudian hanya menjalankan layanan API, orkestrasi, dan autentikasi. Opsi vLLM lokal punya profil GPU yang mengharapkan kartu NVIDIA dan profil CPU yang berjalan tanpanya dengan kecepatan jauh lebih rendah.

Kenapa konsol Keycloak menerima admin sebagai nama pengguna sekaligus kata sandi?

Itu kredensial bawaan yang disertakan penyiapan compose, dan itu wajar di laptop tetapi tidak di server publik. Ubah sebelum Anda membuka port apa pun ke internet, karena realm Keycloak-lah yang melindungi setiap rute API di belakang gerbang Kong.

Port mana yang harus saya taruh di belakang reverse proxy?

Port 8000, yaitu gerbang API Kong. Itulah titik masuk yang terdokumentasi dan ia menegakkan pemeriksaan JWT serta kunci API di depan masing-masing layanan. Menerbitkan port layanan secara langsung akan membuat pemanggil bisa melewati gerbang beserta autentikasinya sama sekali.