VPS İçin En İyi Open WebUI Alternatifleri
VPS üzerinde Open WebUI, LibreChat, Hollama ve OrionChat performansını karşılaştırın. RAM kullanımı, kullanıcı yetkilendirme ve genel IP güvenliği açısından en uygun seçimi yapın.
Bir VPS üzerinde hangi Open WebUI alternatifi kullanılmalı
Open WebUI alternatifleri neredeyse her zaman, RAM'in ucuz olduğu ve hiçbir servisin genel bir adreste dinleme yapmadığı dizüstü bilgisayarlar üzerinden kıyaslanır. Bir VPS ise her iki durumu da değiştirir ve bu durum sıralamayı etkiler. İkinci bir kişi sisteme giriş yaptığı anda Open WebUI doğru varsayılan seçenek olmaya devam eder; çünkü gerçek kullanıcı hesapları ve bir yönetici paneli ile birlikte gelir. Arayüz, RAM'in son gigabaytı için model ile rekabet ettiğinde ise daha hafif projeler öne çıkar. Bu başarının bedeli ise kimlik doğrulamadır: bu projelerin hiçbirinde kimlik doğrulama özelliği bulunmaz.
Aşağıdaki tüm bilgiler, Ağustos 2026 itibarıyla her projenin kendi dokümantasyonundan alınmıştır. Dört temel eksen, yalnızca sunucu internetten erişilebilir olduğunda önem kazanan kriterlerdir.
Genel IP adresinde önem taşıyan dört temel eksen
- Modelin yanındaki bellek. Model sunucusu, sistemdeki en maliyetli süreçtir. Arayüzün kullandığı her megabayt, modelin kullanamayacağı bir megabayttır.
- Kimlik doğrulama. Bu projelerin bazılarında kullanıcı hesapları ve roller bulunur. Bazıları ise sadece dizüstü bilgisayarınızda çalıştığını varsayar ve hiçbir giriş mekanizması içermez.
- Uzak çıkarım (remote inference). Yalnızca
127.0.0.1:11434adresine erişebilen bir arayüz, modeli arayüzle aynı makinede çalışmaya zorlar. - Bakım. SQLite dosyası içeren tek bir container ile MongoDB ve arkasında bir vektör veritabanı bulunan altı container'lı bir yapı, birbirinden farklı yönetim süreçleri gerektirir.
Model arayüz için ne kadar RAM bırakıyor
Arayüz, sunucudaki en büyük kaynak tüketicisi değildir. Modelin kendisi öyledir. Yayınlanan indirme boyutları size alt sınırı verir; çünkü model yanıt verirken ağırlıkların bellekte yüklü olması gerekir ve bağlam önbelleği (context cache) ayrıldığında gerçek bellek kullanımı indirme boyutundan daha yüksek olur.
The data behind this chart
[
{
"label": "llama3.2:3b",
"download_gb": "2.0"
},
{
"label": "qwen3:4b",
"download_gb": "2.5"
},
{
"label": "gemma3:4b",
"download_gb": "3.3"
},
{
"label": "qwen3:8b",
"download_gb": "5.2"
}
]Bunlar, Ağustos 2026 itibarıyla Ollama kütüphanesi sayfalarında yer alan rakamlardır. Bunlar ölçüm değil, yayınlanan boyutlardır. 4 GB RAM'e sahip bir VPS üzerinde, qwen3:4b modeli 2.5 GB boyutuyla işletim sistemi ve diğer her şey için 1.5 GB'tan az alan bırakır. Sohbet uzadıkça bağlam önbelleği bu alanı tüketir; bu nedenle belirlediğiniz num_ctx değeri sadece kaliteyle ilgili değil, aynı zamanda bir bellek yönetimi kararıdır. qwen3:8b modeli ise 5.2 GB boyutuyla bu sunucuya hiçbir şekilde sığmaz. Dizüstü bilgisayar incelemelerinin asla değinmediği durum budur; birkaç yüz megabayt tüketen bir sohbet arayüzünün, modelin çalışıp çalışmayacağını belirlediği nokta burasıdır. Eğer bu etiketlerin çok üzerinde bir sunucu boyutlandırıyorsanız, sadece CPU kullanılan bir VPS üzerinde 27B model için yapılan hesaplama, arayüzün belirleyici bir faktör olmaktan ne kadar hızlı çıktığını gösterir.
Herhangi bir incelemedeki rakama güvenmek yerine ölçüm yapın. docker stats --no-stream komutunu konteyner başladıktan bir dakika sonra değil, bir saatlik gerçek kullanımın ardından çalıştırın; çünkü önemli olan bellek, ilk kullanımda ayrılır. Ollama ayrıca beş dakikalık boşta kalma süresinden sonra ağırlıkları bellekten siler; bu nedenle sohbetler arasında alınan bir okuma, tepe değerini düşük gösterir ve keep_alive ile modeli bellekte tutmadığınız sürece bir sonraki mesaj tüm yükü tekrar tetikler.
Open WebUI: birden fazla kullanıcı için varsayılan seçenek
Open WebUI tek bir imaj üzerinden çalışır ve verilerini tek bir volume içerisinde tutar.
docker run -d -p 127.0.0.1:3000:8080 -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:mainProjenin README dosyasındaki komut, tüm arayüzleri dinleyen -p 3000:8080 portunu dışarıya açar. 127.0.0.1: ön eki, portu yalnızca loopback üzerinde tutar. Bir VPS üzerinde bu ön ek, satırdaki diğer her şeyden daha önemlidir; çünkü Docker kendi iptables kurallarını yazar ve dışarıya açılan bir port, ufw deny kurallarınızı geçersiz kılar.
Sayfaya aşağıda açıklanan yöntemlerle bir tünel veya proxy üzerinden erişin ve ardından ilk hesabı oluşturun. Bu hesap yönetici yetkilerine sahip olur. Sonraki kayıtlar, DEFAULT_USER_ROLE dokümantasyonunda belirtilen varsayılan pending rolüyle oluşturulur; bu sayede sayfaya erişen yabancı bir kullanıcı, bir yönetici onay verene kadar modelinizi kullanamaz.
Open WebUI, daha fazla işlev sunduğu için aşağıda belirtilen projelere kıyasla daha fazla bellek tüketir; performans sayfası, bu tüketime neden olan bileşenleri listeler. Varsayılan embedding motoru, container içerisinde bir sentence-transformers modeli yükler ve bu işlem her worker süreci için yaklaşık 500 MB bellek harcar. RAG_EMBEDDING_ENGINE=ollama ayarını yapmak, bu görevi halihazırda çalıştırdığınız model sunucusuna devreder. AUDIO_STT_ENGINE=webapi, yerel bir konuşmadan metne (speech-to-text) modelinin yüklenmesini engeller. SQLite üzerinde DATABASE_POOL_SIZE ayarlanmadığında, havuz büyük bir dahili boyuta döner ve her bağlantı kendi sayfa önbelleğini ve bellek haritasını oluşturur; bu nedenle küçük bir sunucuda DATABASE_POOL_SIZE=8 ve DATABASE_SQLITE_PRAGMA_MMAP_SIZE=0 değerlerini yapılandırın. ENABLE_AUTOCOMPLETE_GENERATION=False, kullanıcı henüz yazmaya devam ederken arayüzün modelden tamamlanma isteğinde bulunmasını durdurur.
LibreChat: çok kullanıcılı ve yığın tabanlı yapı
git clone https://github.com/danny-avila/LibreChat.git
cd LibreChat
cp .env.example .env
docker compose up -dArayüz 3080 numaralı port üzerinden yanıt verir. LibreChat, basit bir giriş kutusundan ziyade bir kimlik doğrulama sistemine ihtiyaç duyduğunuzda değerlendirilmesi gereken bir çözümdür: LDAP ve OAuth2 giriş yöntemlerini belgeler ve kullanıcılar ile roller için bir yönetim paneli sunar. Bu yetenek, beraberinde bir yığın (stack) ile gelir.
The data behind this chart
[
{
"label": "OrionChat",
"containers": 0,
"notes": "static files, served by a web server you already run"
},
{
"label": "Hollama",
"containers": 1,
"notes": "one container serving a browser app"
},
{
"label": "Open WebUI",
"containers": 1,
"notes": "application and SQLite in one image"
},
{
"label": "LibreChat",
"containers": 6,
"notes": "api, admin panel, MongoDB, Meilisearch, pgvector, RAG API"
}
]Varsayılan compose dosyası 6 adet servis başlatır: api, admin panel, MongoDB, Meilisearch, pgvector, RAG API. Bunların hiçbiri modelin kendisi değildir. MongoDB ve pgvector ayrı ayrı bellek tüketir; 4 GB belleğe sahip bir sunucuda bu, modelin ihtiyaç duyduğu bellekten feragat etmek anlamına gelir.
Yükseltme işlemleri bir git operasyonudur ve kullanıcıların en çok hata yaptığı kısım burasıdır.
docker compose down
git pull
docker compose pull
docker compose up -dgit pull, eğer takip edilen docker-compose.yml dosyasını düzenlediyseniz bir çakışma ile durur ve yükseltme işlemi yarım kalır. Değişikliklerinizi proje tarafından bunun için sağlanan docker-compose.override.yml dosyasına ekleyin ve gizli bilgileri .env içinde tutun. Her iki dosya da takip edilmediğinden (untracked), git pull bu dosyalara dokunmaz.
LibreChat'i, librechat.yaml içindeki özel bir uç nokta (endpoint) ile kendi model sunucunuza yönlendirin.
endpoints:
custom:
- name: "Ollama"
apiKey: "ollama"
baseURL: "http://model-host:11434/v1/"
models:
default: ["llama3.2"]
fetch: true
titleConvo: true
titleModel: "current_model"
modelDisplayLabel: "Ollama"model-host kısmını, Ollama çalıştıran sunucunun adresiyle değiştirin. Ollama değerini görmezden gelse bile apiKey alanı mevcut olmalıdır, bu yüzden bir yer tutucu (placeholder) kullanmak yeterlidir. Eğer LibreChat Docker içinde çalışıyor ve Ollama aynı makinede bulunuyorsa, container içindeki localhost ifadesi container'ın kendisini temsil eder; bu nedenle orada host.docker.internal kullanın.
Hollama ve OrionChat: tarayıcı tabanlı çalışma
Hollama, tarayıcı uygulamasını küçük bir container üzerinden sunar. Sohbetler sunucuda değil, tarayıcınızın depolama alanında tutulur.
docker run -d --restart unless-stopped -p 127.0.0.1:4173:4173 --name hollama ghcr.io/fmaclen/hollama:latestBu komutun README sürümü, durdurulduğunda container'ı silen --rm bayrağını kullanır; bu nedenle yeniden başlatma sonrasında arayüz geri gelmez. Bir reverse proxy arkasında -e VITE_ALLOWED_HOSTS='chat.example.com' eklenmelidir, çünkü imaj yalnızca ana makine localhost değerine izin verir ve başka bir ana makine adı için gelen isteklere uygulama yerine engellenmiş ana makine hatası döndürür.
OrionChat daha ileri giderek hiçbir sunucu bileşeni barındırmaz. Depoyu klonlayın ve klasörü halihazırda çalıştırdığınız web sunucusuyla sunun ya da index.html dosyasını diskten açın. API anahtarları tarayıcının localStorage alanında saklanır, sohbet geçmişi tarayıcıda kalır ve uygulama, sayı 512'yi geçtiğinde en eski sohbetleri siler.
Her iki projede de giriş yapma özelliği yoktur, çünkü her ikisinin de bunu doğrulayabilecek bir sunucusu bulunmaz. Bir dizüstü bilgisayarda bu durum sorun yaratmaz. Bir VPS üzerinde ise sayfanın asla 0.0.0.0 üzerinden yayınlanmaması gerektiği ve gözden kaçması daha kolay olan şu gerçek anlamına gelir: tarayıcı sunucuyu değil, doğrudan modeli çağırır.
Bu tek gerçek, bu iki uygulamanın nerede kullanılabilir olduğunu belirler. Tarayıcınızın Ollama'ya doğrudan ulaşması gerekir, bu yüzden Ollama'nın loopback dışında da dinleme yapması zorunludur ve Ollama'nın hiçbir kimlik doğrulama mekanizması yoktur. Buradan iki tarayıcı kuralı doğar. HTTPS üzerinden sunulan bir sayfa, düz HTTP uç noktasını çağıramaz ve konsol Mixed Content: The page at 'https://chat.example.com/' was loaded over HTTPS, but requested an insecure resource 'http://203.0.113.10:11434/api/tags'. This request has been blocked. çıktısını verir. Başka bir kaynağa yapılan çağrı, siz o kaynağa izin verene kadar has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource ile reddedilir.
Ollama'nın her iki ayarı değiştirmek için belgelendirdiği yöntem, bir systemd override dosyası kullanmaktır.
sudo systemctl edit ollama.service[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"
Environment="OLLAMA_ORIGINS=https://chat.example.com"sudo systemctl daemon-reload
sudo systemctl restart ollama
sudo ss -lntp | grep 11434ss komutu artık daha önce 127.0.0.1:11434 çıktısını verdiği yerde 0.0.0.0:11434 çıktısını vermelidir. Bu değişikliği yalnızca bir güvenlik duvarı veya kimlik doğrulayan bir proxy, porta kimin erişebileceğini kontrol ediyorsa yapın; çünkü açık bir 11434 portu, açık bir model sunucusu demektir ve toplu tarayıcılar yeni bir genel portu hızla bulur. Aşağıdaki SSH tüneli bu sorunun tamamını ortadan kaldırır: sayfa bu durumda localhost kaynağında çalışır, Ollama buna varsayılan olarak izin verir ve port asla sunucunun dışına çıkmaz.
Her biri uzak bir Ollama veya vLLM uç noktası kullanabilir mi?
Open WebUI bunu yapabilir ve bağlantı sunucu tarafında kurulur. OLLAMA_BASE_URL=http://model-host:11434, onu Ollama'ya yönlendirir. vLLM veya OpenAI uyumlu başka bir sunucu için, OPENAI_API_KEY değeri boş olmayan bir OPENAI_API_BASE_URL=http://model-host:8000/v1 ayarlayın ve gerekli olan /v1 sonekini koruyun. OPENAI_API_BASE_URLS, noktalı virgülle ayrılmış birden fazla arka ucu kabul eder.
LibreChat, yukarıda gösterilen özel uç noktanın baseURL ayarı aracılığıyla bunu yapabilir. Bu istek de sunucudan çıktığı için hiçbir tarayıcı kuralı geçerli olmaz. Aynı temel URL ve aynı yer tutucu anahtar, sohbet penceresinin dışında da çalışır; kodlama aracısını halihazırda barındırdığınız modele yönlendirmek için gereken tek şey budur.
Hollama ve OrionChat, ayarlar kısmına yazdığınız herhangi bir uç noktaya yönlendirilebilir ancak istek tarayıcınızdan çıkar. Yukarıdaki bölümdeki her şey onlar için geçerlidir, buradaki diğer hiçbir şey için geçerli değildir.
Arayüzü modelden ayırmak, uzak bir uç noktanın size sağladığı en yararlı şeydir. Arayüzü küçük bir kutuya, modeli ise belleğin olduğu yere koyun. Aynı zamanda istekleri Ollama'nın mı yoksa vLLM'in mi karşılaması gerektiğine karar vermenin zamanı da budur; çünkü birden fazla kişi aynı anda modelle konuştuğunda bu ikisi çok farklı davranır. Eğer model sunucusu henüz mevcut değilse, bir VPS üzerinde Ollama çalıştırarak başlayın ve yalnızca CPU içeren bir kutuda, bir çalıştırıcı seçmeden önce Ollama ile llama.cpp'nin nasıl karşılaştırıldığını okuyun.
Giriş ekranı olmayan bir sohbet arayüzünü asla 0.0.0.0 üzerinde yayınlamayın
Open WebUI'nin güvenlik sıkılaştırma sayfası, projenin "veritabanları, container kayıt defterleri ve CI sunucuları gibi diğer self-hosted altyapılarla benzer şekilde, özel ve güvenilir ağlar için tasarlandığını" belirtir ve uygulamanın bir VPN arkasında veya kimlik doğrulama katmanına sahip bir reverse proxy arkasında tutulmasını önerir. Hiçbir giriş ekranı içermeyen bir proje, en azından aynı düzeyde bir korumayı hak eder.
Herhangi bir servise güvenmeden önce hangi portların dinlendiğini kontrol edin.
sudo ss -lntp | grep -E ':(3000|3080|4173|11434)'127.0.0.1:3000 ifadesini içeren bir satır, hedeflenen durumdur. 0.0.0.0:3000 ifadesini içeren bir satır ise sohbet arayüzünüzün herkese açık internete sızdığı anlamına gelir. Kendi makinenizden çalıştıracağınız curl -sI http://YOUR.VPS.IP:3000 komutunun HTTP/1.1 200 OK yanıtını vermesi, aynı durumu daha net bir şekilde doğrular.
Open WebUI'de giriş ekranını WEBUI_AUTH=False ile kapatmak, yalnızca başka kimsenin erişemeyeceği bir makine için uygun, tek kullanıcılı bir ayardır. Ayrıca, halihazırda hesapları bulunan bir kurulumda bu ayar uygulanmaz ve You can't turn off authentication because there are existing users. mesajı ile reddedilir.
Birinci yöntem: loopback adresine bağlayın ve SSH üzerinden erişin. Tüm portları 127.0.0.1 üzerinde yayınlayın, ardından ihtiyacınız olanı yönlendirin: ssh -N -L 3000:127.0.0.1:3000 you@vps.example.com ve dizüstü bilgisayarınızda http://localhost:3000 adresini açın. Hiçbir şey dış dünyaya açık olmadığı için tarama yapılamaz. Hollama veya OrionChat için, model portunu aynı komut içerisinde -L 11434:127.0.0.1:11434 ile yönlendirin ve Ollama'yı loopback üzerinde bırakın. Bu yöntemin gücü SSH yapılandırmanızla sınırlıdır, bu nedenle yalnızca anahtar tabanlı SSH ve sıkılaştırılmış sshd ile birlikte kullanın.
İkinci yöntem: uygulama isteği görmeden önce kimlik doğrulaması yapan bir reverse proxy kullanın. Uygulamayı loopback üzerinde tutun, 443 numaralı portu proxy'ye bırakın ve önüne bir tek oturum açma (SSO) katmanı ekleyin. Docker Compose etiketleri ile yönetilen Traefik ve kimlik sağlayıcı olarak Authentik kullanımı, sunucudaki her uygulama için tek bir giriş noktası ve tek bir sertifika sağlar. Open WebUI'yi TLS (transport layer security) arkasına aldığınızda, WEBUI_SESSION_COOKIE_SECURE=true ve WEBUI_SESSION_COOKIE_SAME_SITE=strict ayarlarını yapılandırın. Ayrıca JWT_EXPIRES_IN değerini varsayılan dört haftalık süreden daha kısa bir süreye indirin; çünkü Open WebUI belgelerine göre, Redis kullanılmadığı sürece oturum kapatma işlemi token'ı geçersiz kılmaz: token, kendi süresi dolana kadar kullanılabilir kalır.
İkinci yöntem, yalnızca tarayıcı tabanlı projeleri kurtarmaz. Sayfanın önündeki bir proxy, model uç noktasını korumaz ve o sayfadan farklı bir ana makine adına (hostname) yapılan bir istek, oturum çerezinizi taşımaz. Bu durumda, Ollama'nın önündeki kimlik doğrulayıcı proxy, giriş formuna yönlendirme yapar ve sohbet başarısız olur. Model uç noktasını sayfa ile aynı ana makine adı altında yönlendirin ya da birinci yöntemi kullanın.
Hangisini seçmeli
Sizden başka birinin kullanacağı bir sistem kuruyorsanız Open WebUI çalıştırın. Gerçek kullanıcı hesapları desteklenir, yeni kullanıcılar onay kuyruğuna düşer ve geliştiricileri takip edebileceğiniz güvenlik sıkılaştırma kılavuzları yayımlar. LDAP veya bir yönetim paneline ihtiyacınız varsa LibreChat kullanın; ancak bu araca bağımlı hale gelmeden önce docker stats ile altı servisinin ve kullanacağınız modelin sunucunuzun kaynaklarına sığıp sığmadığını doğrulayın. Eğer modelin RAM'in büyük kısmını tükettiği küçük bir sunucuda tek başınıza çalışıyorsanız, Hollama veya OrionChat'i bir SSH tüneli üzerinden sunun ve durum bilgisini tarayıcıda tutun. Bir VPS üzerinde yapılabilecek en büyük hata, bu araçlardan herhangi birini önünde bir giriş ekranı olmadan doğrudan 0.0.0.0 üzerinden dış dünyaya açmaktır.
FAQ
Open WebUI doğrudan genel bir IP adresi üzerinden dış dünyaya açılmalı mıdır?
Kendi güvenlik dokümantasyonu, bu yazılımı veritabanı veya CI sunucusu gibi güvenilir, özel ağlar için tasarlanmış bir araç olarak tanımlar. Yazılımın kendi kullanıcı hesapları mevcuttur; ilk oluşturulan hesap yönetici olurken, sonraki hesaplar onaylanana kadar pending durumunda kalır. Bu yönüyle giriş ekranı olmayan arayüzlerden çok daha güvenlidir. Yine de uygulamayı TLS destekli bir reverse proxy arkasına almalı ve mümkünse tek oturum açma (SSO) yöntemlerini kullanmalısınız. Docker'ın kendi iptables kurallarının sizin bilginiz dışında port açmasını engellemek için container portunu 127.0.0.1:3000:8080 olarak yayımlayın.
Bir VPS üzerinde en az RAM tüketen Open WebUI alternatifi hangisidir?
Tarayıcı tabanlı olan Hollama ve OrionChat, uygulama istemci tarafında çalıştığı için en az RAM tüketir. Sunucu yalnızca statik dosyaları gönderir; OrionChat ise herhangi bir uygulama container'ına ihtiyaç duymaz. Open WebUI ise bir Python süreci, veritabanı ve varsayılan olarak yerel bir embedding modeli çalıştırır. Sadece embedding modeli için çalışan başına yaklaşık 500 MB RAM tüketimi belgelenmiştir. Aktif ettiğiniz özelliklere göre bu değerler değişebileceğinden, kendi sunucunuzdaki değerleri docker stats --no-stream ile doğrulayın.
Bu sohbet arayüzleri başka bir sunucudaki Ollama servisini kullanabilir mi?
Open WebUI ve LibreChat bunu destekler; bağlantı sunucu tarafından kurulduğu için tarayıcı kısıtlamaları geçerli değildir. Open WebUI için OLLAMA_BASE_URL değişkenini, LibreChat için ise özel bir endpoint içerisinde baseURL ayarını yapılandırın. vLLM veya OpenAI uyumlu başka bir sunucu için /v1 sonekine sahip OPENAI_API_BASE_URL adresini ve boş olmayan bir API anahtarını kullanın. Hollama ve OrionChat de herhangi bir adrese yönlendirilebilir, ancak istek tarayıcınızdan geldiği için endpoint adresinin tarayıcınız tarafından erişilebilir olması gerekir.
Tarayıcı tabanlı sohbet arayüzüm neden Ollama'ya erişemiyor?
Neredeyse tüm vakalar iki temel nedenden kaynaklanır. Ollama varsayılan olarak 127.0.0.1:11434 adresine bağlanır; bu nedenle OLLAMA_HOST değiştirilmediği sürece başka bir makinedeki tarayıcı ona ulaşamaz. Ayrıca Ollama, çapraz kökenli (cross-origin) istekleri yalnızca localhost üzerinden kabul eder. Bu yüzden kendi alan adınız üzerinden sunulan bir sayfa, köken adresi OLLAMA_ORIGINS listesine eklenmediği sürece No 'Access-Control-Allow-Origin' header is present on the requested resource hatasıyla reddedilir. Eğer sayfa HTTPS, endpoint ise HTTP ise, tarayıcı isteği "mixed content" (karışık içerik) olarak değerlendirip Ollama'ya ulaşmadan engeller. Her iki değişkeni de bir systemctl edit ollama.service geçersiz kılma dosyasında ayarlayın veya portu SSH üzerinden yönlendirin; bu durumda sorun ortadan kalkacaktır.