AI & Tech

Self-Host Ollama + Open WebUI di VPS: Jalankan LLM Lokal GRATIS 2026

Self-Host Ollama + Open WebUI di VPS: Jalankan LLM Lokal GRATIS 2026

Semenjak ChatGPT populer di akhir 2022, saya selalu penasaran: bisa tidak saya menjalankan model AI sendiri di server? Bukan untuk replace GPT-4 — tapi untuk use case spesifik seperti autocomplete, summarization, atau chatbot internal yang tidak boleh mengirim data ke pihak ketiga.

Jawaban singkatnya: BISA. Dan sekarang lebih mudah dari sebelumnya berkat Ollama dan Open WebUI. Artikel ini akan memandu kamu step-by-step self-host LLM di VPS Ubuntu tanpa GPU. Ya, tanpa GPU. Saya akan jelaskan kapan ini masuk akal dan kapan tidak.

1. Kapan Self-Host LLM Itu Masuk Akal?

Pertama, mari jujur tentang ekspektasi. Self-host LLM di CPU-only VPS bukan untuk semua use case. Berikut situasi di mana ini worth it:

  • Chatbot internal perusahaan: HR bot untuk FAQ kebijakan perusahaan, customer service bot untuk jawaban umum
  • Code completion: Menggunakan model kecil (1-3B params) untuk autocomplete di IDE
  • Text summarization: Ringkas dokumen panjang, meeting notes, atau article drafts
  • Learning dan experiment: Belajar prompt engineering tanpa khawatir habis quota API
  • Privacy-sensitive work: Data yang tidak boleh keluar dari jaringan internal

Kapan TIDAK masuk akal:

  • Butuh kualitas sekelas GPT-4 atau Claude — model open-source belum ada yang setara untuk general tasks
  • Butuh response time <1 detik — di CPU, generasi 100 token butuh 5-15 detik tergantung model
  • Butuh multimodal capabilities (image, audio) — model multimodal butuh GPU

2. Persiapan VPS

Minimum spec yang saya rekomendasikan:

Model SizeRAM MinimumRekomendasi VPSHarga
1-3B params4GBDigitalOcean 4GB$24/bln
7B params (Q4)8GBDigitalOcean 8GB$48/bln
13B params (Q4)16GBDedicated server$60-100/bln

Saya menggunakan VPS 4GB RAM dengan Ubuntu 22.04. Untuk model Llama 3.2 1B, ini sudah cukup. Untuk model 7B seperti Mistral 7B, saya perlu minimal 8GB karena model perlu dimuat ke RAM.

Install Docker (jika belum):

curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER

Logout dan login kembali agar grup docker aktif.

3. Install Ollama

Ollama adalah tool untuk menjalankan LLM secara lokal dengan cara yang sangat mirip Docker. Satu perintah untuk install:

curl -fsSL https://ollama.com/install.sh | sh

Verifikasi instalasi:

ollama --version
# Ollama version 0.9.x

Pull model pertama. Untuk VPS 4GB, saya rekomendasikan Llama 3.2 1B:

ollama pull llama3.2:1b

Proses download sekitar 1-2 menit (700MB untuk model 1B). Test langsung:

ollama run llama3.2:1b "Apa itu Docker dalam 3 kalimat?"

Di VPS 4GB tanpa GPU, response time untuk model 1B sekitar 3-5 token/detik. Tidak cepat, tapi cukup untuk use case non-real-time seperti summarization atau batch processing.

4. Install Open WebUI

Open WebUI adalah frontend ChatGPT-like yang bisa kamu akses dari browser. Interface-nya sangat mirip ChatGUI sehingga user tidak perlu belajar cara pakai baru.

Jalankan via Docker:

docker run -d   --name open-webui   --restart unless-stopped   -p 3000:8080   -v open-webui:/app/backend/data   -e OLLAMA_BASE_URL=http://host.docker.internal:11434   ghcr.io/open-webui/open-webui:main

Jika Ollama berjalan di mesin yang sama (bukan Docker), gunakan IP host:

docker run -d   --name open-webui   --restart unless-stopped   -p 3000:8080   -v open-webui:/app/backend/data   --add-host=host.docker.internal:host-gateway   -e OLLAMA_BASE_URL=http://host.docker.internal:11434   ghcr.io/open-webui/open-webui:main

Tunggu 1-2 menit untuk startup, lalu buka http://YOUR_SERVER_IP:3000 di browser. Buat akun admin pertama (ini akan jadi admin untuk instance ini).

5. Konfigurasi Production

Beberapa pengaturan yang perlu dilakukan untuk production:

5.1 Reverse Proxy dengan Caddy

Untuk akses HTTPS yang proper:

sudo apt install caddy -y

Edit /etc/caddy/Caddyfile:

llm.toolkuy.com {
    reverse_proxy localhost:3000
}

Restart Caddy: sudo systemctl restart caddy. Caddy akan otomatis setup SSL via Let's Encrypt.

5.2 Ollama sebagai Systemd Service

Pastikan Ollama auto-start:

sudo systemctl enable ollama
sudo systemctl status ollama

Ollama secara default berjalan sebagai service systemd. Cek dengan systemctl status ollama. Jika belum aktif:

sudo systemctl start ollama

5.3 Model Management

Beberapa model yang saya rekomendasikan berdasarkan use case:

ModelSizeRAM NeededBest For
llama3.2:1b700MB2GBQuick tasks, code completion
mistral:7b-q44GB6GBGeneral chat, writing
deepseek-coder:6.7b4GB6GBCode generation
nomic-embed-text274MB1GBText embeddings

Untuk menghapus model yang tidak dipakai:

ollama rm mistral:7b

6. Benchmark Performa

Saya melakukan benchmark di VPS 4GB (2 vCPU, 4GB RAM) tanpa GPU:

  • Llama 3.2 1B: ~4 token/detik, 100 token dalam ~25 detik
  • Mistral 7B Q4: ~1.5 token/detik, 100 token dalam ~67 detik (butuh 8GB RAM)
  • DeepSeek Coder 6.7B: ~1.8 token/detik (lebih cepat karena arsitektur coding-optimized)

Untuk konteks, GPT-4 berjalan sekitar 50-80 token/detik. Jadi self-host di CPU sekitar 10-40x lebih lambat. Tapi untuk use case seperti summarization atau batch processing, ini masih acceptable.

Tips performa: Gunakan model quantized Q4_K_M untuk keseimbangan antara kualitas dan kecepatan. Q8 lebih kualitas tapi 2x lebih lambat dan butuh lebih banyak RAM.

7. Keamanan dan Maintenance

Jangan lupa aspek keamanan:

  • Authentication: Open WebUI punya built-in auth. Gunakan ini, jangan expose tanpa login.
  • Firewall: Batasi akses port 3000 hanya dari localhost atau VPN. Gunakan Caddy sebagai reverse proxy.
  • Updates: docker pull ghcr.io/open-webui/open-webui:main dan ollama pull untuk update model.
  • Disk monitoring: Model bisa memakan banyak disk. Monitor dengan du -sh ~/.ollama/models.

Saya jalankan cron job untuk auto-update setiap minggu:

# Update Open WebUI
0 3 * * 0 docker pull ghcr.io/open-webui/open-webui:main && docker restart open-webui

Penutup

Self-host LLM di VPS bukan pengganti ChatGPT atau Claude. Tapi untuk use case spesifik — chatbot internal, code completion, text processing, atau sekadar belajar — ini opsi yang powerful dan gratis. Dengan biaya VPS $24/bulan (yang mungkin sudah kamu punya), kamu bisa menjalankan AI tanpa biaya API tambahan.

Mulai dari model kecil (1B params), rasakan keterbatasannya, lalu upgrade sesuai kebutuhan. Dan yang paling penting: semua data tetap di server kamu. Untuk use case enterprise atau privacy-sensitive, ini nilai yang tidak bisa dihitung dari sisi harga.

8. Use Case Nyata: Chatbot Internal Perusahaan

Saya pernah diminta membangun chatbot internal untuk perusahaan yang tidak boleh mengirim data percakapan ke server pihak ketiga. Mereka punya 200+ dokumen kebijakan perusahaan (SOP, HR policy, technical docs) yang perlu bisa di-query oleh karyawan.

Solusi yang saya bangun:

  1. Ollama menjalankan Mistral 7B di dedicated server (8GB RAM, 4 vCPU)
  2. Open WebUI sebagai frontend, diakses dari intranet perusahaan
  3. Semua dokumen di-index ke dalam vector database (ChromaDB self-hosted)
  4. Custom RAG pipeline: user bertanya → query dokumen relevan → kirim context + question ke LLM → dapat jawaban dari dokumen

Hasil: Response time rata-rata 8-12 detik per pertanyaan (karena 7B model di CPU). Kualitas jawaban sekitar 80% sebanding dengan GPT-4 untuk pertanyaan factual berdasarkan dokumen. Untuk pertanyaan yang butuh reasoning kompleks, kualitas turun ke sekitar 50-60% dari GPP.

Biaya: Server $48/bulan (8GB RAM DigitalOcean). Dibandingkan $0.03/1K tokens untuk GPT-4 API yang dengan 500 pertanyaan/hari × 20 hari = sekitar $30/bulan, biayanya sebanding. Tapi yang lebih penting: data tidak pernah keluar dari server perusahaan.

9. Troubleshooting Umum

Beberapa masalah yang saya temui dan solusinya:

  • Ollama tidak bisa diakses dari Docker container: Pastikan Ollama bind ke 0.0.0.0 (bukan hanya localhost). Atau gunakan --network host di Docker.
  • Response sangat lambat: Di CPU-only, model 7B bisa sangat lambat (< 1 token/detik). Gunakan model lebih kecil (1-3B) atau quantize ke Q4_K_M.
  • Open WebUI tidak menampilkan model: Periksa OLLAMA_BASE_URL environment variable. Pastikan URL bisa diakses dari dalam container Docker.
  • Out of memory: Model LLM membutuhkan RAM yang signifikan. Monitor dengan ollama ps untuk melihat model yang aktif dan memory usage-nya.
  • Disk space penuh: Model yang di-download bisa memakan banyak space. Cek dengan du -sh ~/.ollama. Hapus model yang tidak dipakai.

10. Masa Depan Self-Hosted LLM

Tren 2026 yang saya amati:

  • Model semakin kecil: Model 1-3B parameters sudah cukup untuk banyak use case yang dulu butuh 7-13B. Phi-3, Gemma 2, dan Llama 3.2 compact models menunjukkan ukuran bukan segalanya.
  • Edge deployment: Model bisa dijalankan di ARM devices (Raspberry Pi, Apple Silicon) dengan performa yang acceptable. Ini membuka peluang untuk IoT dan edge computing use cases.
  • Hybrid approach: Banyak perusahaan menggunakan self-hosted model untuk tasks yang tidak sensitif, dan cloud API untuk tasks yang butuh kualitas tinggi. Ini mengurangi biaya API sekaligus menjaga privacy.
  • Speculative decoding: Teknik yang memungkinkan model kecil "menebak" output model besar, mempercepat generasi tanpa mengorbankan kualitas. Saya bahas lebih detail di artikel tentang DeepSpec.

Saran saya: mulai sekarang experiment dengan self-hosted LLM. Bahkan jika kamu belum butuh untuk production, familiaritas dengan teknologi ini akan sangat berharga saat adopsi AI di workplace meningkat. Mulai dari Ollama + Open WebUI, explore berbagai model, dan temukan use case yang cocok untuk workflow kamu.

11. Tips untuk Resource Terbatas

Jika kamu hanya punya VPS dengan RAM 4GB, berikut strategi untuk tetap bisa menjalankan LLM:

  • Gunakan swap space: Tambahkan 4-8GB swap. Performance akan turun signifikan karena LLM yang di-swap ke disk sangat lambat, tapi setidaknya bisa jalan untuk testing. Setup swap: sudo fallocate -l 4G /swapfile && sudo chmod 600 /swapfile && sudo mkswap /swapfile && sudo swapon /swapfile
  • Model quantization Q2_K: Model 7B dengan quantization Q2_K hanya butuh sekitar 3GB RAM. Kualitas turun, tapi untuk use case chatbot sederhana masih cukup.
  • Gunakan model kecil: Llama 3.2 1B atau Phi-3 Mini (3.8B) bisa berjalan dengan nyaman di 4GB RAM tanpa swap.
  • Unload model otomatis: Ollama bisa di-configure untuk unload model dari memory setelah idle tertentu. Ini membebaskan RAM untuk service lain di server yang sama.

Saya sendiri memulai self-hosted LLM journey dengan VPS 4GB dan Llama 3.2 1B. Setelah 3 bulan, saya upgrade ke 8GB untuk menjalankan Mistral 7B. Perjalanan bertahap seperti ini jauh lebih bijaksana daripada langsung beli server 16GB sebelum tahu apakah use case-nya benar-benar dibutuhkan.

Yang terpenting: mulai sekarang, experiment dengan Ollama di VPS yang mungkin sudah kamu punya. Biayanya hampir nol (hanya CPU cycles yang terpakai saat ada request), dan kamu akan belajar banyak tentang bagaimana LLM bekerja secara internal. Pengetahuan ini akan sangat berharga di era AI yang semakin mainstream ini.

8. Use Case Nyata: Chatbot Internal Perusahaan

Saya pernah diminta membangun chatbot internal untuk perusahaan yang tidak boleh mengirim data percakapan ke server pihak ketiga. Mereka punya 200+ dokumen kebijakan perusahaan (SOP, HR policy, technical docs) yang perlu bisa di-query oleh karyawan.

Solusi yang saya bangun:

  1. Ollama menjalankan Mistral 7B di dedicated server (8GB RAM, 4 vCPU)
  2. Open WebUI sebagai frontend, diakses dari intranet perusahaan
  3. Semua dokumen di-index ke dalam vector database (ChromaDB self-hosted)
  4. Custom RAG pipeline: user bertanya → query dokumen relevan → kirim context + question ke LLM → dapat jawaban dari dokumen

Hasil: Response time rata-rata 8-12 detik per pertanyaan (karena 7B model di CPU). Kualitas jawaban sekitar 80% sebanding dengan GPT-4 untuk pertanyaan factual berdasarkan dokumen. Untuk pertanyaan yang butuh reasoning kompleks, kualitas turun ke sekitar 50-60% dari GPP.

Biaya: Server $48/bulan (8GB RAM DigitalOcean). Dibandingkan $0.03/1K tokens untuk GPT-4 API yang dengan 500 pertanyaan/hari × 20 hari = sekitar $30/bulan, biayanya sebanding. Tapi yang lebih penting: data tidak pernah keluar dari server perusahaan.

9. Troubleshooting Umum

Beberapa masalah yang saya temui dan solusinya:

  • Ollama tidak bisa diakses dari Docker container: Pastikan Ollama bind ke 0.0.0.0 (bukan hanya localhost). Atau gunakan --network host di Docker.
  • Response sangat lambat: Di CPU-only, model 7B bisa sangat lambat (< 1 token/detik). Gunakan model lebih kecil (1-3B) atau quantize ke Q4_K_M.
  • Open WebUI tidak menampilkan model: Periksa OLLAMA_BASE_URL environment variable. Pastikan URL bisa diakses dari dalam container Docker.
  • Out of memory: Model LLM membutuhkan RAM yang signifikan. Monitor dengan ollama ps untuk melihat model yang aktif dan memory usage-nya.
  • Disk space penuh: Model yang di-download bisa memakan banyak space. Cek dengan du -sh ~/.ollama. Hapus model yang tidak dipakai.

10. Masa Depan Self-Hosted LLM

Tren 2026 yang saya amati:

  • Model semakin kecil: Model 1-3B parameters sudah cukup untuk banyak use case yang dulu butuh 7-13B. Phi-3, Gemma 2, dan Llama 3.2 compact models menunjukkan ukuran bukan segalanya.
  • Edge deployment: Model bisa dijalankan di ARM devices (Raspberry Pi, Apple Silicon) dengan performa yang acceptable. Ini membuka peluang untuk IoT dan edge computing use cases.
  • Hybrid approach: Banyak perusahaan menggunakan self-hosted model untuk tasks yang tidak sensitif, dan cloud API untuk tasks yang butuh kualitas tinggi. Ini mengurangi biaya API sekaligus menjaga privacy.
  • Speculative decoding: Teknik yang memungkinkan model kecil "menebak" output model besar, mempercepat generasi tanpa mengorbankan kualitas. Saya bahas lebih detail di artikel tentang DeepSpec.

Saran saya: mulai sekarang experiment dengan self-hosted LLM. Bahkan jika kamu belum butuh untuk production, familiaritas dengan teknologi ini akan sangat berharga saat adopsi AI di workplace meningkat. Mulai dari Ollama + Open WebUI, explore berbagai model, dan temukan use case yang cocok untuk workflow kamu.

💬 Komentar (0)

Belum ada komentar. Jadilah yang pertama! 💬

Komentar akan muncul setelah moderasi.