VPS üzerinde Ollama kurulumu ve güvenli kullanımı
7B parametreli bir model 8 GB RAM gerektirir ve CPU üzerinde saniyede 4 ile 10 token üretir. Ollama servisini 127.0.0.1:11434 adresinde tutarak 11434 portunu dışa kapatın.
Ne inşa ediyorsunuz
Kendi sunucunuzda çalışan, HTTP API üzerinden yanıt veren ve dilerseniz tarayıcınızda bir sohbet sayfası bulunan tek bir açık ağırlıklı dil modeli. Ollama, modeli indiren, belleğe yükleyen ve http://127.0.0.1:11434 üzerinde istekleri karşılayan bileşendir. Kurulum tek bir komuttan ibarettir. İşin zor kısımları başka yerdedir: VPS'nizin RAM kapasitesine uygun bir model seçmek ve kimlik doğrulaması olmayan bir çıkarım (inference) sunucusunu yanlışlıkla tüm internete açmamak.
Öncelikle iki dürüst uyarı. Sadece CPU kullanan bir VPS, küçük modelleri yavaş çalıştırır ve API üzerinde yerleşik bir kimlik doğrulama mekanizması bulunmaz. Her iki konu da aşağıda ayrıntılı olarak ele alınmıştır, çünkü kullanıcıların sorun yaşadığı noktalar bunlardır.
Boyutlandırma gerçekliği, net rakamlarla
Bir modelin bellek ayak izi, yaklaşık olarak dosya boyutu, üzerine eklenen bir gigabaytlık çalışma zamanı yükü ve bağlam penceresi (context window) için gereken ek alandan oluşur. Ollama'nın varsayılan modelleri 4-bit nicelenmiştir (Q4 olarak etiketlenir) ve bu, her bir milyar parametre için yaklaşık yarım gigabayt RAM tüketir. Dolayısıyla hesaplama basittir ve her şeyi belirleyen temel faktördür.
llama3.2:3b gibi 3B bir model yaklaşık 2 GB boyutunda bir indirmedir ve çalışmak için yaklaşık 4 GB boş RAM gerektirir. mistral:7b veya llama3.1:8b gibi 7B ya da 8B bir model diskte yaklaşık 5 GB yer kaplar ve yaklaşık 8 GB RAM gerektirir; 16 GB RAM ile rahat bir çalışma ortamı sunar. 13B veya 14B bir model ise kabaca 16 GB RAM ister. 30B ile 70B aralığındaki herhangi bir model, yüksek RAM kapasiteli bir sunucu veya gerçekçi olmak gerekirse bir GPU gerektirir; CPU tabanlı bir VPS üzerinde ya belleğe sığmayacak ya da o kadar yavaş yanıt verecektir ki kullanışsız olacaktır.
Şimdi hız konusuna gelelim, çünkü insanların hafife aldığı kısım budur. CPU çıkarımı (inference), saat hızına değil bellek bant genişliğine bağlıdır ve paylaşımlı bir vCPU VPS mütevazı bir bant genişliğine sahiptir. Saniyede tek haneli veya düşük çift haneli token hızları bekleyin: 7-8B Q4 bir model saniyede 4 ila 10 token, 3B bir model ise 10 ila 25 token üretebilir. Bir GPU ise yaklaşık on kat daha hızlıdır. Bu rakamlar kasıtlı olarak yaklaşık değerlerdir; en dürüst yaklaşım kendi sunucunuzu ölçmektir, bunun nasıl yapılacağı aşağıdaki çalıştırma adımında gösterilmiştir. Bu makale dahil hiçbir yazıdaki rakama değil, kendi eval rate çıktınıza güvenin.
Pratik sonuç şudur: CPU üzerinde çalışan küçük nicelenmiş modeller, hızı kabul edebiliyorsanız taslak hazırlama, özetleme ve sınıflandırma işlemleri için gerçekten kullanışlıdır. Daha büyük veya daha hızlı bir işlem için bir GPU örneği (instance) bütçesi ayırın.
Belirli bir modeli belirli bir sunucuyla kıyaslamak için bellek ayak izini buradan tahmin edin:
Ollama Kurulumu
İki temiz yöntem mevcuttur. Resmi betik, boş bir VPS üzerinde en basit yoldur:
curl -fsSL https://ollama.com/install.sh | shBu işlem ollama adında bir sistem kullanıcısı oluşturur, ikili dosyayı /usr/local/bin/ollama dizinine kurar ve önyüklemede başlayan ve 127.0.0.1:11434 portunu dinleyen ollama.service adlı bir systemd servisi kaydeder. Servisin çalıştığını doğrulayın:
systemctl status ollama
ollama --versionEğer halihazırda Docker kullanıyorsanız, bunun yerine container sürümünü kullanın:
docker run -d --name ollama \
-p 127.0.0.1:11434:11434 \
-v ollama:/root/.ollama \
--restart always \
ollama/ollamaPort eşlemesindeki 127.0.0.1: önekine dikkat edin. Bu, portu yalnızca localhost ile sınırlar. Bunun yerine -p 11434:11434 yazmak, portu tüm arayüzlerde erişilebilir kılar; bu, güvenlik bölümünde uyarılan hatadır. Yalnızca bir kurulum yöntemi seçin; betiği ve container'ı aynı anda çalıştırmayın, aksi takdirde iki süreç aynı port için çakışacaktır.
İlk modelinizi çekin ve çalıştırın
ollama pull llama3.2:3b
ollama run llama3.2:3bpull, model katmanlarını diske indirir (bu model için yaklaşık 2 GB). run, bunları belleğe yükler ve sizi bir >>> istemine düşürür. Bir soru yazın. Ağırlıklar diskten RAM'e yüklenirken ilk token birkaç saniye sürebilir, ardından yanıt akmaya başlar. Sohbetten çıkmak için /bye yazın; Ollama arka planda çalışmaya devam eder.
Nelerin yüklendiğini ve nasıl yerleştiğini görün:
ollama psPROCESSOR sütunu gerçek durumu gösterir. 100% CPU, hiçbir GPU'nun kullanılmadığı anlamına gelir; yavaşlığın nedeni budur. Gerçek hızı verbose bayrağı ile ölçün:
ollama run --verbose llama3.2:3b "Write two sentences about Linux."Sonda yazdırılan eval rate satırı, bu donanımdaki saniye başına token hızınızdır. Planlama yaparken baz almanız gereken değer budur.
Modellerin konumu ve ne kadar disk alanı ayrılmalı
Betik tarafından kurulan ve servis olarak çalıştırılan modeller, ollama kullanıcısının ev dizininde bulunur:
sudo du -sh /usr/share/ollama/.ollama/modelsKendi kullanıcınızla etkileşimli olarak çalıştırdığınızda, modeller ~/.ollama/models dizininde yer alır. Konteyner içinde ise ollama adlı volume içerisinde tutulurlar. Bu durum önemlidir çünkü kuantize edilmiş ağırlıklar hızla birikir: 3B bir model yaklaşık 2 GB, 7-8B bir model yaklaşık 5 GB, 14B bir model ise yaklaşık 9 GB yer kaplar. Karşılaştırma yapmak için dört model indirdiğinizde fark etmeden 20 GB alan harcamış olursunuz. Disk boyutunu saklamayı planladığınız modellere göre belirleyin ve geri kalanları ollama rm <model> ile silin. Eğer aynı VPS üzerinde fotoğraf kütüphanesi barındıran PhotoPrism veya Immich gibi yüksek disk tüketimine sahip başka uygulamalar çalışıyorsa, bu alanı toplam boş alandan çıkarın ve geriye kalanı gerçek model bütçeniz olarak kabul edin.
Kontrolünüzdeki bir servis olarak çalıştırın
Kurulum betiği ollama.service kaydını zaten oluşturmuştur, bu nedenle servis herhangi bir ek işlem gerektirmeden sistem açılışında otomatik olarak başlar. Değiştirilmesi gereken ayarlar, bir modelin bellekte ne kadar süre tutulacağı ve bazı kurulumlarda dinleme adresidir (bind address). Bu ayarların bir Ollama güncellemesi sırasında üzerine yazılmaması için systemd drop-in dosyası kullanılmalıdır:
sudo systemctl edit ollama.serviceDüzenleyicide görünen [Service] başlığının altına şunları ekleyin:
[Service]
Environment="OLLAMA_KEEP_ALIVE=30m"OLLAMA_KEEP_ALIVE, bir modelin son istekten sonra bellekte ne kadar süre kalacağını belirler (varsayılan değer 5 dakikadır). Gün boyu sorgulama yaptığınız bir sunucuda ağırlıkların her seferinde yeniden yüklenmemesi için bu süreyi artırın; RAM kullanımının kısıtlı olduğu bir sistemde ise istek biter bitmez belleği boşaltmak için değeri 0 olarak ayarlayın. systemctl edit birim dosyalarını sizin yerinize yeniden yükler, bu nedenle değişikliği uygulamak için servisi yeniden başlatın:
sudo systemctl restart ollamaEn kritik güvenlik noktası
Ollama varsayılan olarak 127.0.0.1:11434 adresine bağlanır, bu nedenle yalnızca VPS üzerindeki süreçler ona erişebilir. Bu varsayılan ayar doğrudur. Değiştirmeyin.
API'nin kimlik doğrulama özelliği yoktur. Hiç yoktur. API anahtarı, giriş ekranı, hız sınırlaması veya izin verilenler listesi bulunmaz. 11434 numaralı porta erişebilen herkes, indirdiğiniz herhangi bir modeli çalıştırabilir, yenilerini indirebilir, silebilir ve CPU veya GPU'nuzu süresiz olarak tam yükte çalıştırabilir. Shodan gibi tarayıcılar binlerce açık Ollama örneğini indekslemektedir; dışarıya açık bir örnek saatler içinde bulunur ve kötüye kullanılır.
Tek bir hatadan kesinlikle kaçınılmalıdır: OLLAMA_HOST=0.0.0.0 ayarlanmamalı ve güvenlik duvarında 11434 açılmamalıdır. Bu işlem, kimlik doğrulaması olmayan bir inference sunucusunu tüm internete açar. Ham 11434-0.0.0.0 erişimini güvenli hale getirecek hiçbir yapılandırma yoktur; çünkü Ollama içinde yapılandırılabilecek bir kimlik doğrulama mekanizması bulunmaz ve kimlik doğrulama özelliği hiç mevcut değildir. Bu kural yalnızca söz konusu servis için geçerlidir; hiçbir portun asla açılmaması gerektiği anlamına gelmez: uzak masaüstü için self-host edilen RustDesk relay işlevini yerine getirebilmek için genel ağ trafiğini kabul etmek zorundadır. Bunu, kendi anahtar tabanlı kimlik doğrulamasını ve kısa, belgelenmiş bir port listesini sunduğu için güvenli biçimde yapar. Ollama'da ise bunların hiçbiri yoktur.
Modele sunucu dışından erişmenin üç güvenli yolu vardır:
- Yerel tutun. Eğer tek çağırıcı aynı VPS üzerindeki başka bir program, bir cron betiği, bir bot veya araçlarınızı modele bağlayan bir MCP sunucusu ise, bağlantı adresini
127.0.0.1olarak bırakın ve programınhttp://127.0.0.1:11434adresine çağrı yapmasını sağlayın. Hiçbir şey dışarıya açılmaz ve başka bir işleme gerek kalmaz. - Özel bir tünel üzerinden erişin. VPS'i kendi barındırdığınız bir WireGuard VPN ağına dahil edin,
OLLAMA_HOSTayarını tünel adresine (örneğin0.0.0.0yerine10.8.0.1) getirin; böylece yalnızca VPN eşleri bağlanabilir. Genel internet 11434 portunda hiçbir şey görmez. - Önüne kimlik doğrulama yapan bir reverse proxy koyun. TLS sonlandırmasını yapın ve nginx, Traefik veya Caddy üzerinde bir parola ya da token zorunlu tutun, ardından
127.0.0.1:11434adresine proxy yapın. Ollama localhost bağlantısını korur; genel portta dinleme yapan tek şey proxy olur. Bu yapı, herhangi bir yerel servisin önüne Let's Encrypt sertifikalı bir nginx koymakla aynı mantıktır.
Reverse-proxy seçeneği, bir sonraki adımda göreceğiniz sohbet arayüzünün, gerçek bir giriş sistemiyle birlikte sunduğu yapının aynısıdır.
Open WebUI ile TLS arkasında bir sohbet arayüzü ekleme
Open WebUI, self-hosted bir sohbet arayüzüdür. Bunu Docker üzerinde çalıştırın ve yerel Ollama servisine yönlendirin:
docker run -d \
--name open-webui \
--network=host \
-e OLLAMA_BASE_URL=http://127.0.0.1:11434 \
-v open-webui:/app/backend/data \
--restart always \
ghcr.io/open-webui/open-webui:main--network=host bayrağı, Linux VPS üzerinde kritik bir detaydır. Bu bayrak, container'ı ana makinenin ağ ad alanına (network namespace) yerleştirir. Böylece container içindeki 127.0.0.1, ana makinenin kendi loopback arayüzü olur ve container, Ollama'ya başka herhangi bir arayüzü dinlemesine gerek kalmadan 127.0.0.1:11434 üzerinden erişir. Başka kaynaklarda göreceğiniz --add-host=host.docker.internal:host-gateway ve OLLAMA_BASE_URL=http://host.docker.internal:11434 içeren bridge-network yöntemi burada çalışmaz: bu isim Docker bridge ağ geçidini çözümler ve ana makinede 127.0.0.1 adresine bağlı bir servis, bridge üzerinden erişilebilir değildir; bu nedenle Open WebUI, Ollama'ya bağlanamadığını belirten bir hata verir.
Host ağ modunu kullanmanın dezavantajı, Open WebUI'nin artık ana makinenin 8080 portunu tüm arayüzlerde dinlemesidir; herhangi bir -p eşlemesi geçersiz sayılır ve Docker bu konuda bir uyarı verir. Bu nedenle 8080 portunu hem ana makine hem de sağlayıcı güvenlik duvarında kapatın ve TLS reverse proxy'nin tek genel giriş noktası olmasını sağlayın. İlk ziyarette Open WebUI sizden bir yönetici hesabı oluşturmanızı ister; bu hesap sizin kimlik doğrulama katmanınızdır, bu yüzden güçlü bir parola seçin.
Sohbet arayüzünü dizüstü bilgisayarınızdan HTTPS üzerinden açmak için 127.0.0.1:8080 önüne bir TLS reverse proxy yerleştirin. Eğer sunucuda halihazırda birden fazla Docker uygulaması yönlendiriyorsanız, birçok uygulama için otomatik TLS ile Traefik kullanımı en temiz çözümdür: tek bir etiket bloğu sertifikayı oluşturur ve chat.example.com trafiğini Open WebUI'ye yönlendirir. Güvenlik bölümündeki kural geçerliliğini korur; proxy genel portu ve girişi yönetirken, Ollama localhost üzerinde kalır ve Open WebUI'nin kendi 8080 portu güvenlik duvarı ile korunur.
Kodunuzdan OpenAI uyumlu uç noktayı kullanma
Ollama, /v1 adresinde OpenAI sohbet API'sinin bir alt kümesini destekler; bu nedenle çoğu OpenAI istemci kütüphanesi, temel URL ve geçici bir anahtar olmak üzere iki değişiklik yapıldıktan sonra çalışır.
from openai import OpenAI
client = OpenAI(base_url="http://127.0.0.1:11434/v1", api_key="ollama")
resp = client.chat.completions.create(
model="llama3.2:3b",
messages=[{"role": "user", "content": "Name three Linux distributions."}],
)
print(resp.choices[0].message.content)api_key istemci kütüphanesi tarafından zorunlu tutulur ancak Ollama tarafından göz ardı edilir, bu yüzden herhangi bir karakter dizisi kullanılabilir. model, daha önce çekmiş olduğunuz bir model adı olmalıdır; bilinmeyen bir isim model "x" not found, try pulling it first hatası döndürür. Basit bir curl çağrısı da aynı mantıkla çalışır:
curl http://127.0.0.1:11434/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{"model":"llama3.2:3b","messages":[{"role":"user","content":"Hello"}]}'Modeli ajan ve düzenleyici araçlarına bu şekilde entegre edebilirsiniz. Eğer halihazırda sunucu üzerinde geliştirme yapıyorsanız, yerel bir model, tmux içinde çalışan Claude Code ile birlikte betikleri ve eklentileri destekleyebilir. Böylece ağır mantıksal işlemler bulut tabanlı bir modelde kalırken, düşük maliyetli ve gizli taslak çalışmaları yerel model üzerinden yürütülebilir.
Hata modları ve karşılaşacağınız kesin ifadeler
Süreç üretim sırasında "Killed" oluyor. Büyük bir model başlatıldığında terminalde Killed görüntülenir veya sunucu günlüğünde llama runner process has terminated: signal: killed görülür. Linux OOM killer, modelin sunucuda bulunan RAM'den daha fazlasına ihtiyaç duyması nedeniyle süreci durdurur. Nedeni sudo dmesg | grep -i oom ile doğrulanabilir; burada Out of memory: Killed process ... (ollama) benzeri bir satır görülür. Çözüm, daha küçük veya daha yoğun biçimde quantize edilmiş bir model kullanmaktır. Örneğin 13B yerine llama3.2:3b kullanılabilir. Alternatif olarak swap eklenebilir. Böylece fiziksel RAM kapasitesini az miktarda aşan bir yük hemen sonlanmak yerine yavaş çalışarak tamamlanabilir. Swap, anlık çöküşü yavaş bir yanıta dönüştürür. Ancak 4 GB RAM üzerinde 70B modelini kullanılabilir hale getirmez. Terminal izlenmediği sürece kill işlemi sessiz gerçekleşir. Bu nedenle uzaktan sorgulanan bir sunucuda, push uyarıları gönderen barındırılan bir ntfy sunucusuna bildirim yapan bir OnFailure= birimini ollama.service öğesine bağlamak, sürecin sonlandığı anda bilgi verir. Böylece durumun ancak bir sonraki istekte fark edilmesi önlenir.
"Error: model requires more system memory". Ollama modeli başlatmayı reddeder ve Error: model requires more system memory (X GiB) than is available (Y GiB) çıktısını verir. Bu, yukarıdaki çöküşün nazik halidir: Ollama hesaplamayı yapmış ve OOM killer'ın müdahale etmesine izin vermeden işlemi durdurmuştur. Hatta size iki değeri de sunar. Boş RAM miktarınızın (free -h ile kontrol edin) altında bir gereksinime sahip model seçin, bağlam uzunluğunu (context length) kısaltın veya daha yüksek kapasiteli bir VPS'e geçin. Hiçbir bayrak (flag) modelin sığmasını sağlamaz, bellek gereksinimi gerçektir.
İlk token çok geç gelir, ardından her şey normal ilerler. Soğuk durumdaki bir model, ilk beş ila otuz saniye boyunca hiçbir çıktı vermez ve ardından normal şekilde akış sağlar. Bu bekleme, ağırlıkların ilk kez diskten RAM'e yüklenmesinden kaynaklanır; yavaş depolama bu süreyi daha da uzatır. Model yüklendikten sonra OLLAMA_KEEP_ALIVE süresi boyunca bellekte tutulur. Bu nedenle ikinci prompt anında yanıtlanır. İlk yükleme, çağrı yolundaki herhangi bir timeout değerini aşarsa yavaş bir yanıt yerine hata alınır. context deadline exceeded hatasını hangi katmanın bildirdiğini belirlemek, istemcinin, proxy'nin veya yükleme işleminin zaman aşımına uğrayıp uğramadığını gösterir. Aradaki beklemeler sorun oluşturuyorsa bu değeri artırın. Bir modelin o anda yüklü olup olmadığını görmek için ollama ps kullanın.
Her şey genel olarak yavaş. Hata mesajı olmaksızın saniyede on veya daha az token üretiliyor. Bu, CPU çıkarımının (inference) doğası gereği yaptığı işlemdir. ollama ps komutu 100% CPU çıktısını veriyorsa GPU kullanılmıyor demektir. Bu bir hata değildir ve hiçbir ayar bunu düzeltemez; çünkü sınırlayıcı faktör yanlış yapılandırma değil, bellek bant genişliğidir. Daha küçük bir model kullanın, hızı kabul edin veya bir GPU örneğine geçin. Bir şeylerin bozuk olduğuna karar vermeden önce gerçek hızınızı --verbose ile ölçün.
Başka bir makineden bağlantı reddediliyor. Dizüstü bilgisayarınızdan curl: (7) Failed to connect to <ip> port 11434: Connection refused hatası alıyorsunuz. Bu, tasarım gereği beklenen bir durumdur: Ollama yalnızca localhost üzerinde dinleme yapar. Bunu 0.0.0.0 adresine bağlayarak "düzeltmeye" çalışmayın; bu, yukarıda bahsedilen güvenlik açığı hatasının ta kendisidir. Modele VPN üzerinden veya kimlik doğrulamalı bir proxy aracılığıyla erişin.
11434 numaralı portu internete açtınız. Eğer OLLAMA_HOST=0.0.0.0 ayarını yaptıysanız, güvenlik duvarını açtıysanız ve şimdi başlatmadığınız model çekme işlemlerini görüyorsanız veya CPU bilinmeyen istemciler tarafından %100 kullanılıyorsa, tespit edilmiş ve kullanılmışsınız demektir. Bu, uç bir durum değil, temel bir güvenlik hatasıdır. Bağlantıyı tekrar 127.0.0.1 adresine veya VPN adresine yönlendirin, güvenlik duvarında 11434 numaralı portu kapatın ve önüne kimlik doğrulama mekanizması koyun. Port açık olduğu süre boyunca bu adresten erişilebilen her şeyin yabancılar tarafından sorgulandığını varsayın.
Yedekleme ve yükseltmeler
Kaybedilecek durum bilgisi oldukça azdır. Modeller yeniden indirilebilir; bu nedenle yedeklenmeye değer tek veriler Open WebUI veri birimi, hesaplar, sohbet geçmişi, ayarlar ve oluşturduğunuz systemd drop-in dosyalarıdır. Birimi geçici bir container kullanarak yedekleyin:
docker run --rm -v open-webui:/data -v "$PWD":/backup alpine \
tar czf /backup/open-webui.tgz -C /data .Ollama'yı kurulum betiğini tekrar çalıştırarak yükseltin; Open WebUI'ı ise docker pull ghcr.io/open-webui/open-webui:main komutunu çalıştırıp ardından container'ı yeniden oluşturarak yükseltin. Uzun vadeli hiçbir sürümü sabitlemeyin: hem model kalitesi hem de çalışma zamanı hızla değişmektedir; bu nedenle sürüm notlarını okuyun ve geçen çeyreğin verilerine güvenmek yerine kendi sunucunuzda yeniden kıyaslama yapın.
FAQ
Sadece CPU içeren bir VPS üzerinde gerçekten LLM çalıştırabilir miyim?
Evet, belirli sınırlar dahilinde mümkündür. 3B ile 8B aralığındaki küçük kuantize edilmiş modeller CPU üzerinde çalışabilir ve taslak oluşturma, özetleme ve sınıflandırma gibi işler için oldukça kullanışlıdır; ancak paylaşımlı bir vCPU üzerinde saniyede tek haneli veya düşük çift haneli token hızlarıyla yavaş çalışırlar. 13B ve üzerindeki modeller ya aşırı yavaş çalışır ya da RAM kapasitesine sığmaz. Gerçek hız veya daha büyük modeller için GPU destekli bir sunucu gereklidir.
Her model ne kadar RAM gerektirir?
Varsayılan 4-bit kuantize edilmiş modeller için kaba bir hesapla: ağırlıklar için milyar parametre başına yaklaşık 0.5 GB RAM, buna ek olarak yaklaşık 1 GB genel sistem yükü ve bağlam (context) için biraz daha fazlası gerekir. Bu durumda 3B bir model yaklaşık 4 GB boş RAM, 7-8B bir model yaklaşık 8 GB, 14B bir model ise yaklaşık 16 GB RAM ister. free -h komutu ile boş RAM miktarınızı kontrol edin ve işletim sistemi ile sunucudaki diğer işlemler için yeterli alan bıraktığınızdan emin olun.
Ollama API kimlik doğrulaması gerektirir mi?
Hayır. Ollama'nın yerleşik bir kimlik doğrulama, API anahtarı veya hız sınırlama özelliği yoktur; 11434 numaralı porta erişebilen herkes üzerinde tam kontrole sahiptir. Varsayılan olarak 127.0.0.1 adresine bağlanmasının ve 11434 numaralı portu asla doğrudan 0.0.0.0 üzerinden internete açmamanızın nedeni tam olarak budur. Servise yerel olarak, özel bir VPN üzerinden veya kimlik doğrulama katmanı ekleyen bir reverse proxy aracılığıyla erişin.
Web tabanlı bir sohbet arayüzünü nasıl eklerim?
Open WebUI uygulamasını --network=host kullanarak Docker üzerinde çalıştırın; böylece sunucunun loopback arayüzünü paylaşır ve http://127.0.0.1:11434 adresindeki yerel Ollama servisine erişebilir. Ardından, dizüstü bilgisayarınızdan erişim sağlamak için 8080 numaralı portunun önüne bir TLS reverse proxy yerleştirin. Güvenlik duvarında 8080 numaralı portu kapalı tutun; böylece dış dünyaya açılan tek kapı proxy olur. Open WebUI'nin kendi yönetici hesabı giriş imkanı sağlar ve şifresini ilk kurulumda belirlersiniz.
Kendi uygulamamdan bu servisi nasıl çağırırım?
http://127.0.0.1:11434/v1 adresindeki OpenAI uyumlu uç noktayı kullanın. Herhangi bir OpenAI SDK'sını bu temel URL'ye yönlendirin, API anahtarı dikkate alınmadığı için herhangi bir karakter dizisi girin ve model değerini daha önce çektiğiniz bir modelin adıyla ayarlayın. Mevcut OpenAI kodları, temel URL ve anahtar değişikliği dışında genellikle hiçbir değişiklik yapılmadan çalışır.