Open WebUI ve Ollama Kurulumu ile Kendi Yapay Zeka Sunucunuz
Kendi yapay zeka sohbet asistanınızı üçüncü taraf bir bulut servisine bağımlı olmadan çalıştırmak, artık birkaç konteyner tanımından ibaret. Bu rehberde Open WebUI ve Ollama kurulumunu Docker Compose ile kendi sunucunuzda adım adım gerçekleştiriyor; donanım boyutlandırmasından HTTPS yapılandırmasına, GPU hızlandırmasından yedekleme rutinine kadar tüm kritik noktaları ele alıyoruz. Sonunda, tarayıcınızdan erişebildiğiniz, sohbet geçmişinizin sizde kaldığı ve model çağrılarının dışarı çıkmadığı bir sisteme sahip olacaksınız.
Table of Contents
Open WebUI ve Ollama ne işe yarar
İki bileşeni ayrı ayrı düşünmek, kurulumun mantığını anlamayı kolaylaştırır.
- Ollama, açık ağırlıklı dil modellerini indirip yerel olarak çalıştıran bir çalıştırma motorudur. Model indirme, bellek yönetimi, niceleme (quantization) ve HTTP API katmanını sizin yerinize halleder. `11434` portunda dinleyen basit bir REST arayüzü sunar.
- Open WebUI, bu API’nin önüne geçen, ChatGPT benzeri bir sohbet arayüzüdür. Çok kullanıcılı yapı, sohbet geçmişi, model seçimi, dosya yükleme, belge tabanlı soru-cevap (RAG), istem şablonları ve yönetici paneli gibi özellikleri tek pakette getirir.
- Docker Compose ise bu iki servisi, aralarındaki ağı, kalıcı disk alanlarını ve yeniden başlatma politikalarını tek bir YAML dosyasında tanımlamanızı sağlar. Böylece kurulum tekrarlanabilir olur; sunucuyu değiştirdiğinizde aynı dosyayı kopyalayıp tek komutla ayağa kaldırırsınız.
Bu mimarinin en büyük avantajı veri egemenliği: sohbet kayıtları, yüklediğiniz belgeler ve model çıktıları kendi diskinizde kalır. Kurumsal veriyle çalışan ekipler için bu, harici bir API’ye veri göndermeden deneme yapabilmek anlamına gelir.
Donanım planlaması: CPU tabanlı VPS mi, GPU’lu sunucu mu
Kurulumun teknik olarak CPU ile de çalıştığını, ancak deneyimin tamamen model boyutuna ve kullanıcı sayısına bağlı olduğunu baştan söyleyelim. 7-8 milyar parametreli bir model, yeterli RAM’e sahip düzgün bir VPS’te çalışır; ancak yanıt hızı saniyede birkaç token seviyesinde kalır. GPU devreye girdiğinde aynı model onlarca kat hızlı yanıt üretir.
| Kriter | CPU tabanlı VPS | GPU’lu sunucu |
| — | — | — |
| 7-8B model yanıt hızı | Yaklaşık 3-8 token/sn | Yaklaşık 30-60+ token/sn |
| 30B ve üzeri modeller | Pratik değil | 24 GB VRAM ve üzeri gerekir |
| Aylık maliyet eğilimi | Düşük | Belirgin şekilde yüksek |
| Uygun senaryo | Tek kullanıcı, test, prototip | Ekip kullanımı, üretim, düşük gecikme |
| Ölçekleme yolu | RAM ve vCPU artışı | VRAM artışı, çoklu GPU |
Bütçe ile gecikme arasındaki dengeyi kurarken saatlik GPU kiralama ile aylık GPU sunucu maliyetini karşılaştırmak faydalı olur; hangi modelin ne kadar süre çalışacağını bilmiyorsanız GPU VPS mi saniye bazlı GPU bulutu mu daha ekonomik başlıklı karşılaştırma bu kararı vermenizi kolaylaştırır.
Model boyutu ile VRAM ilişkisi
Aşağıdaki tablo, 4 bit niceleme (Q4) varsayımıyla kaba bir yön gösterir. Bağlam penceresi (context length) büyüdükçe ek bellek ihtiyacı doğacağını unutmayın.
| Model sınıfı | Yaklaşık VRAM (Q4) | Değerlendirme |
| — | — | — |
| 7-8B | 5-6 GB | Giriş seviyesi GPU için uygun |
| 13-14B | 9-11 GB | 12 GB VRAM sınıfı |
| 30-34B | 20-22 GB | 24 GB VRAM sınıfı |
| 70B | 40-48 GB | Çoklu GPU veya yüksek VRAM |
Sunucu tarafı asgari gereksinimler
- Ubuntu 22.04 veya 24.04 LTS gibi güncel bir dağıtım
- En az 4 vCPU, 8 GB RAM (8B model için 16 GB daha rahat)
- Konteyner imajları ve modeller için 40 GB ve üzeri disk
- Takas (swap) alanı: CPU ile çalışırken bellek taşmalarını yumuşatır
- Root veya sudo yetkili bir kullanıcı, tercihen SSH anahtarıyla erişim
Kuruluma başlamadan önce ihtiyacınıza uygun VPS hosting hizmeti seçeneklerini incelemek, kaynakları baştan doğru boyutlandırmanızı sağlar. Daha yüksek bellek ve ayrılmış kaynak gerektiren senaryolarda VDS altyapısı da değerlendirilebilir.
Adım adım kurulum
1. Docker ve Compose kurulumu
Sunucuya bağlandıktan sonra resmî kurulum betiğiyle Docker’ı yükleyin:
“`bash
sudo apt update && sudo apt upgrade -y
curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker $USER
newgrp docker
docker –version
docker compose version
“`
`docker compose version` çıktısı, Compose eklentisinin hazır olduğunu doğrular. Kullanıcıyı `docker` grubuna eklediğiniz için sonraki komutlarda `sudo` gerekmez.
2. Proje dizinini hazırlama
“`bash
mkdir -p ~/ai-stack && cd ~/ai-stack
mkdir -p ollama webui
“`
Bu iki klasör, konteynerler silinse bile verinin kalmasını sağlayan bağlama noktalarıdır. `ollama` model ağırlıklarını, `webui` ise sohbet veritabanını ve kullanıcı ayarlarını tutar.
3. docker-compose.yml dosyası
“`yaml
services:
ollama:
image: ollama/ollama:latest
container_name: ollama
restart: unless-stopped
volumes:
- ./ollama:/root/.ollama
ports:
- “127.0.0.1:11434:11434”
environment:
- OLLAMA_KEEP_ALIVE=30m
- OLLAMA_NUM_PARALLEL=2
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: open-webui
restart: unless-stopped
depends_on:
- ollama
ports:
- “127.0.0.1:3000:8080”
volumes:
- ./webui:/app/backend/data
environment:
- OLLAMA_BASE_URL=http://ollama:11434
- WEBUI_SECRET_KEY=buraya-uzun-ve-rastgele-bir-deger-yazin
“`
Dikkat edilmesi gereken üç nokta var: portlar yalnızca `127.0.0.1` üzerine bağlanır (yani dışarıdan doğrudan erişilemez), iki servis aynı Compose ağında olduğu için Open WebUI, Ollama’ya `ollama` servis adıyla ulaşır ve `WEBUI_SECRET_KEY` değeri oturum güvenliği için mutlaka değiştirilmelidir.
4. Servisleri başlatma
“`bash
docker compose up -d
docker compose ps
docker compose logs -f open-webui
“`
İlk açılışta Open WebUI imajı indirilir ve veritabanını oluşturur; bu birkaç dakika sürebilir. Log akışında hata görünmüyorsa `http://127.0.0.1:3000` adresi dinlemeye başlamıştır.
5. İlk modeli indirme
Arayüzden de model çekilebilir, ancak komut satırı daha hızlı ve şeffaftır:
“`bash
docker exec -it ollama ollama pull llama3.1:8b
docker exec -it ollama ollama list
curl http://127.0.0.1:11434/api/tags
“`
Son komut, API’nin hangi modelleri gördüğünü JSON olarak döner. Model indikten sonra arayüzdeki model seçicisinde görünmelidir.
6. İlk yönetici hesabı
Sunucuya bir SSH tüneli açarak arayüze güvenli biçimde bağlanabilirsiniz:
“`bash
ssh -L 3000:127.0.0.1:3000 kullanici@sunucu-ip
“`
Tarayıcıdan `http://localhost:3000` adresine gidin. İlk kaydolan hesap yönetici olur; bu nedenle kurulum tamamlanır tamamlanmaz kayıt ekranını kapatmak önemlidir.
Alan adı ve HTTPS ile yayına alma
Konteyner portlarını doğrudan internete açmak yerine bir ters vekil sunucu arkasına almak standart yaklaşımdır. Caddy, sertifika yönetimini otomatikleştirdiği için en az yapılandırmayla sonuç verir:
“`
sohbet.alanadim.com {
reverse_proxy 127.0.0.1:3000
}
“`
Bu dosyayı Caddy’nin yapılandırma dizinine koyup servisi yeniden yüklediğinizde Let’s Encrypt sertifikası otomatik alınır ve HTTP/2 ile birlikte TLS açılır. Alan adının A kaydını sunucunun IP adresine yönlendirmeyi unutmayın; kayıt işlemleri için domain kaydı adımlarını takip edebilirsiniz.
Nginx tercih ediyorsanız, grafik arayüz üzerinden yönetim kolaylığı sunan bir yaklaşım için VPS üzerinde Docker ile Nginx Proxy Manager kurulumu rehberi doğrudan bu senaryoya uyarlanabilir. Hangi ters vekili seçerseniz seçin, WebSocket yönlendirmesini açmayı ihmal etmeyin; sohbet arayüzü yanıtları akış halinde gösterir.
GPU’lu sunucuda Ollama’yı hızlandırma
GPU kullanacaksanız konteynerin cihaza erişebilmesi için sürücü ve konteyner araç seti gerekir:
“`bash
sudo apt install -y nvidia-driver-550
sudo apt install -y nvidia-container-toolkit
sudo systemctl restart docker
nvidia-smi
“`
Ardından Compose dosyasındaki `ollama` servisine kaynak ayırma bloğunu ekleyin:
“`yaml
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
“`
Servisi yeniden oluşturduktan sonra `docker exec ollama nvidia-smi` komutu GPU’yu görüyorsa hızlandırma aktif demektir. Tek GPU’lu makinelerde büyük modelleri nicelenmiş biçimde çalıştırmanın püf noktalarını tek GPU VPS'te gpt-oss-120b çalıştırma rehberi yazısında daha ayrıntılı bulabilirsiniz.
Güvenlik sertleştirmesi
Kurulumun en sık atlanan kısmı burasıdır. Sohbet arayüzü, yanlış yapılandırıldığında açık bir API kapısına dönüşebilir.
1. Kayıt ekranını kapatın. Yönetici hesabı oluşturulduktan sonra yeni kullanıcı kaydını devre dışı bırakın; hesapları elle açın.
2. Güvenlik duvarını daraltın. Yalnızca 22, 80 ve 443 portlarını açın. Ollama’nın `11434` portu asla dışarıya açılmamalı.
3. SSH erişimini sıkılaştırın. Parola ile girişi kapatın, anahtar tabanlı kimlik doğrulamaya geçin, mümkünse kaynak IP kısıtlaması uygulayın.
4. Kimlik doğrulamayı zorunlu tutun. Ters vekil tarafında temel kimlik doğrulama katmanı eklemek, arayüzün önüne ikinci bir kapı koyar.
5. Güncellemeleri takip edin. İmajları sabit sürüm etiketleriyle çalıştırıp düzenli aralıklarla bilinçli olarak yükseltin; `latest` etiketi sessiz değişiklikler getirebilir.
6. İstek sınırı koyun. Ters vekilde istek hızı sınırlaması, tek bir hesabın kaynakları tüketmesini engeller.
Yedekleme ve güncelleme rutini
İki tür veri vardır: yeniden üretilebilir olanlar (model ağırlıkları) ve üretilemeyenler (sohbetler, kullanıcılar, ayarlar). İkincisini mutlaka yedekleyin.
“`bash
tar czf webui-yedek-$(date +%F).tar.gz ./webui
“`
Model klasörü onlarca gigabayt tutabildiği için onu yedeklemek yerine `ollama pull` ile yeniden indirmek genellikle daha pratiktir. Güncelleme akışı ise şöyledir:
“`bash
docker compose pull
docker compose up -d
docker image prune -f
“`
Büyük sürüm atlamalarından önce `./webui` klasörünün bir kopyasını almak, veritabanı şeması değişikliklerinde geri dönüş imkânı tanır.
Performans ince ayarları
- Bağlam penceresi: Varsayılan değeri ihtiyacınızdan büyük tutmak belleği hızla tüketir. Sohbet uzunluğunuza göre düşürün.
- Eşzamanlı istek: `OLLAMA_NUM_PARALLEL` değerini VRAM’in izin verdiği ölçüde artırın; sınırı aşmak takas kullanımına ve ciddi yavaşlamaya yol açar.
- Model bellekte kalsın: `OLLAMA_KEEP_ALIVE` süresini uzatmak, her mesajda modelin yeniden yüklenmesini önler.
- Niceleme dengesi: Q4 niceleme kalite kaybını kabul edilebilir tutarken bellek ihtiyacını ciddi biçimde düşürür; kritik görevlerde Q5/Q6 deneyin.
- RAG için ayrı servis: Belge tabanlı soru-cevap kullanacaksanız gömme (embedding) modelini de yerel çalıştırın; aksi halde yüklemeler dışarıya çıkar.
Sık Sorulan Sorular
Open WebUI ve Ollama kurulumu için mutlaka GPU gerekir mi?
Hayır. CPU ile de çalışır ve 8B sınıfı modeller kabul edilebilir hızda yanıt verir. GPU yalnızca gecikmeyi düşürmek ve daha büyük modelleri çalıştırmak için gerekir.
Kaç kullanıcıya kadar sorunsuz çalışır?
Tek GPU’lu orta seviye bir sunucuda 8B modelle aynı anda birkaç aktif kullanıcı rahatça hizmet alır. Kalabalık ekipler için eşzamanlı istek sayısını ve bağlam uzunluğunu sınırlamak ya da daha büyük VRAM’e geçmek gerekir.
Sohbet verilerim nerede tutuluyor?
Compose dosyasındaki `./webui` klasöründe. Bu klasörü yedeklemek tüm sohbet geçmişini ve kullanıcı ayarlarını taşımak için yeterlidir.
Modelleri arayüzden mi indirmeliyim?
Her iki yöntem de çalışır. Komut satırından indirmek ilerlemeyi net gösterir ve büyük dosyalarda bağlantı kopsa bile süreç daha öngörülebilir olur.
Alan adı olmadan IP ile kullanabilir miyim?
Evet. Ters vekil kurmadan arayüze `http://sunucu-ip:3000` adresinden erişebilirsiniz; ancak bu durumda trafik şifrelenmez ve arayüz internete doğrudan maruz kalır. Üretim kullanımı için alan adı, HTTPS ve sıkı güvenlik duvarı kuralları şarttır.
Model cevapları neden yavaş geliyor?
En yaygın nedenler modelin VRAM’e sığmaması, bağlam penceresinin çok büyük seçilmesi ve eşzamanlı istek sayısının donanımın kaldırabileceğinin üzerinde olmasıdır. Daha küçük veya daha yoğun nicelenmiş bir modelle karşılaştırma yaparak darboğazı hızla tespit edebilirsiniz.
Sonuç
Open WebUI ve Ollama kurulumu, tek bir Compose dosyası ve birkaç komutla tamamlanacak kadar sade; asıl dikkat gerektiren kısım doğru donanımı seçmek, portları dışarıya kapatmak ve üretilemeyen veriyi düzenli olarak yedeklemektir. Bu üç noktayı baştan doğru kurguladığınızda, verisi kendi sunucunuzda kalan ve ihtiyacınız ölçüsünde büyütebileceğiniz bir yapay zeka çalışma alanına sahip olursunuz.
İlgili içerikler: AI Ajanları ve Agentic Yapay Zeka Arasındaki Fark • Yapay Zeka Ajanları Web'de Aracılık Sorununu Büyütüyor • Egemen Yapay Zeka Altyapıdan Modellere Yeni Dönem