Open WebUI ile Ollama için ChatGPT Benzeri Arayüz Kurulumu
Yerel ortamda bir dil modeli çalıştırmak harika bir şey, ancak terminal üzerinden curl komutlarıyla veya Python scriptleriyle sürekli model sorgulamak uzun vadede yorucu hale geliyor. İşte tam burada Open WebUI devreye giriyor. Ollama’nın üzerine oturan bu arayüz, size ChatGPT’yi andıran temiz ve kullanışlı bir web arayüzü sunuyor. Hem kişisel kullanım için hem de küçük ekiplerin ortak LLM altyapısı için ideal bir çözüm.
Bu yazıda Open WebUI’yi Docker ile ve doğrudan kurulum yöntemiyle nasıl kuracağınızı, Ollama ile nasıl entegre edeceğinizi, kullanıcı yönetimini, model ayarlarını ve production ortamında nasıl servis edeceğinizi adım adım anlatacağım.
Ön Gereksinimler
Başlamadan önce sistemde şunların hazır olduğundan emin olun:
- Çalışan bir Ollama kurulumu (en az bir model indirilmiş olmalı)
- Docker ve Docker Compose (önerilen yöntem için)
- En az 4GB RAM (model boyutuna göre bu ihtiyaç artar)
- Ubuntu 22.04/24.04 veya benzeri bir Linux dağıtımı
Ollama kurulu ve çalışıyorsa şu komutla doğrulayabilirsiniz:
curl http://localhost:11434/api/tags
# Ya da daha okunaklı bir çıktı için:
ollama list
Çıktıda mevcut modellerinizi görüyorsanız devam edebiliriz.
Docker ile Hızlı Kurulum
En hızlı ve temiz kurulum yöntemi Docker üzerinden yapmaktır. Open WebUI, resmi Docker imajı üzerinden dakikalar içinde ayağa kalkıyor.
Temel Docker çalıştırma komutu:
docker run -d
-p 3000:8080
--add-host=host.docker.internal:host-gateway
-v open-webui:/app/backend/data
--name open-webui
--restart always
ghcr.io/open-webui/open-webui:main
Bu komutta dikkat edilmesi gereken birkaç nokta var. --add-host=host.docker.internal:host-gateway parametresi, container’ın host makinedeki Ollama servisine ulaşabilmesi için gerekli. Ollama varsayılan olarak localhost:11434 adresinde çalışıyor ve container içinden bu adrese ulaşmak için bu bridge gerekiyor.
-v open-webui:/app/backend/data ile kalıcı bir volume oluşturuyoruz. Bu volume olmadan container her yeniden başladığında tüm ayarlarınız, kullanıcılarınız ve sohbet geçmişiniz sıfırlanır.
Container ayağa kalktıktan sonra http://localhost:3000 adresine gidin. İlk açılışta bir admin hesabı oluşturmanız istenecek.
Docker Compose ile Kurulum
Tek bir docker run komutu işe yarasa da, özellikle Ollama’yı da Docker üzerinde çalıştırıyorsanız Docker Compose kullanmak çok daha yönetilebilir bir yapı sunuyor.
# docker-compose.yml
version: '3.8'
services:
ollama:
image: ollama/ollama:latest
container_name: ollama
volumes:
- ollama_data:/root/.ollama
ports:
- "11434:11434"
restart: always
# GPU kullanıyorsanız aşağıdaki satırları aktif edin
# deploy:
# resources:
# reservations:
# devices:
# - driver: nvidia
# count: all
# capabilities: [gpu]
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: open-webui
depends_on:
- ollama
ports:
- "3000:8080"
environment:
- OLLAMA_BASE_URL=http://ollama:11434
volumes:
- open-webui_data:/app/backend/data
restart: always
volumes:
ollama_data:
open-webui_data:
Compose dosyasını oluşturduktan sonra:
docker compose up -d
# Logları takip etmek için:
docker compose logs -f open-webui
# Servislerin durumunu kontrol etmek için:
docker compose ps
Bu yapıda OLLAMA_BASE_URL=http://ollama:11434 ortam değişkeni önemli. Open WebUI, Ollama’ya bu URL üzerinden bağlanıyor. Docker Compose, aynı network içindeki servislerin birbirine servis adıyla ulaşmasına izin veriyor.
Doğrudan Kurulum (Docker Olmadan)
Bazı ortamlarda Docker kullanmak istemeyebilirsiniz. Open WebUI’yi doğrudan Python ortamında da çalıştırmak mümkün. Bunun için Python 3.11 veya üzeri gerekiyor.
# Python sürümünü kontrol edin
python3 --version
# pip ile kurulum
pip install open-webui
# Uygulamayı başlatın
open-webui serve
Bu kadar basit. Servis varsayılan olarak 8080 portunda çalışmaya başlayacak. Eğer port değiştirmek isterseniz:
open-webui serve --port 3000 --host 0.0.0.0
Üretim ortamında doğrudan kurulum yapıyorsanız bir systemd servisi oluşturmak daha akıllıca olacaktır:
sudo nano /etc/systemd/system/open-webui.service
[Unit]
Description=Open WebUI Service
After=network.target ollama.service
[Service]
Type=simple
User=ubuntu
WorkingDirectory=/home/ubuntu
Environment="OLLAMA_BASE_URL=http://localhost:11434"
Environment="DATA_DIR=/home/ubuntu/.open-webui"
ExecStart=/home/ubuntu/.local/bin/open-webui serve --port 3000 --host 0.0.0.0
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable open-webui
sudo systemctl start open-webui
sudo systemctl status open-webui
İlk Kurulum ve Admin Hesabı
Open WebUI’yi ilk açtığınızda bir kayıt ekranıyla karşılaşırsınız. İlk kaydolan kullanıcı otomatik olarak admin yetkisi alır. Bu nedenle kurulumdan hemen sonra admin hesabınızı oluşturun, sonrasında başkalarının kayıt olmasını engelleyebilir ya da davet sistemi kurabilirsiniz.
Admin paneline giriş yaptıktan sonra sol alt köşedeki profil ikonuna tıklayarak Admin Panel kısmına gidin. Burada göreceğiniz önemli ayarlar şunlar:
- Users: Kullanıcı yönetimi, rol atama
- Models: Hangi modellerin görüneceğini kontrol etme
- Connections: Ollama bağlantı ayarları
- General: Kayıt, davet ve güvenlik ayarları
Yeni kullanıcı kaydını kapatmak için Admin Panel > General altında Default User Role ayarını Pending yapın. Bu sayede yeni kaydolan kullanıcılar admin onayı almadan sistemi kullanamaz.
Nginx ile Reverse Proxy Kurulumu
Open WebUI’yi internete açacaksanız ya da iç ağda güzel bir domain adıyla sunmak istiyorsanız Nginx reverse proxy kurulumu şart.
sudo apt install nginx -y
sudo nano /etc/nginx/sites-available/open-webui
server {
listen 80;
server_name ai.sirketiniz.com;
# HTTP'yi HTTPS'e yönlendir
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name ai.sirketiniz.com;
ssl_certificate /etc/letsencrypt/live/ai.sirketiniz.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ai.sirketiniz.com/privkey.pem;
# Büyük dosya yüklemeleri için (RAG belgeler)
client_max_body_size 100M;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# WebSocket desteği (streaming yanıtlar için kritik)
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# Uzun yanıtlar için timeout değerlerini artırın
proxy_read_timeout 300s;
proxy_connect_timeout 75s;
}
}
sudo ln -s /etc/nginx/sites-available/open-webui /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
SSL sertifikası için Certbot kullanabilirsiniz:
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d ai.sirketiniz.com
Ortam Değişkenleri ile Gelişmiş Yapılandırma
Open WebUI pek çok davranışını ortam değişkenleriyle kontrol etmenize izin veriyor. Docker Compose kullanıyorsanız bunları environment bloğuna ekleyebilirsiniz.
# .env dosyası oluşturun
nano .env
# Ollama bağlantı adresi
OLLAMA_BASE_URL=http://localhost:11434
# Gizli anahtar (mutlaka değiştirin!)
WEBUI_SECRET_KEY=cok-gizli-rastgele-bir-string-buraya
# Kayıt işlemini tamamen kapat
ENABLE_SIGNUP=false
# Varsayılan model
DEFAULT_MODELS=llama3.2:latest
# Arayüz dili
DEFAULT_LOCALE=tr-TR
# RAG özelliği için embedding modeli
RAG_EMBEDDING_MODEL=nomic-embed-text
# Dosya yükleme limiti (MB)
MAX_FILE_SIZE_MB=100
Docker Compose ile bu .env dosyasını kullanmak için:
services:
open-webui:
image: ghcr.io/open-webui/open-webui:main
env_file:
- .env
# diğer ayarlar...
RAG (Retrieval Augmented Generation) Kurulumu
Open WebUI’nin güçlü özelliklerinden biri belge yükleyerek model ile sohbet edebilmek. Şirket içi dökümanlarınızı, teknik kılavuzlarınızı ya da herhangi bir PDF’i yükleyip modele sorular sorabilirsiniz. Bu özellik için bir embedding modeli gerekiyor.
Önce Ollama üzerinden embedding modelini indirin:
ollama pull nomic-embed-text
Ardından Open WebUI’nin Admin panelinde Documents sekmesine gidin ve embedding modelini nomic-embed-text olarak ayarlayın.
Belge yüklemek için sohbet ekranında ataç ikonuna tıklayın. PDF, Word dosyaları, düz metin ve hatta web URL’leri destekleniyor. Yüklenen belge otomatik olarak işlenip vektör veritabanına ekleniyor.
Gerçek dünya senaryosu olarak şunu düşünün: Şirketinizdeki Kubernetes cluster belgelerini ve runbook’larınızı yükledikten sonra “Production cluster’da pod restart döngüsü yaşıyorum, ne yapmalıyım?” diye sorabilirsiniz. Model, kendi genel bilgisi yerine sizin belgelerinize dayanarak yanıt verecek.
Model Parametrelerini Özelleştirme
Her model için sohbet başlamadan önce ya da sohbet sırasında parametreleri ayarlayabilirsiniz. Sohbet ekranındaki ayarlar ikonuna tıklayarak şunları değiştirebilirsiniz:
- Temperature: Yaratıcılık seviyesi. 0’a yakın değerler daha deterministik yanıtlar, 1’e yakın değerler daha yaratıcı ama tutarsız yanıtlar üretir
- Context Length: Modelin hafızası. Desteklenen maksimum değeri kullanmak uzun sohbetler için önemli
- System Prompt: Modele özel bir kişilik veya rol vermek için
Bunları Admin panelinden Models sekmesinde varsayılan değer olarak kaydedebilirsiniz:
# Bir modelin mevcut parametrelerini API üzerinden kontrol etmek için:
curl http://localhost:11434/api/show
-d '{"name": "llama3.2"}' | python3 -m json.tool
Kullanıcı Grupları ve Yetkilendirme
Birden fazla kullanıcının sistemi kullandığı ortamlarda hangi kullanıcının hangi modele erişeceğini kontrol etmek isteyebilirsiniz. Open WebUI bu konuda üç temel rol sunuyor:
- Admin: Tam yetki, tüm ayarları değiştirebilir
- User: Normal kullanıcı, sohbet edebilir, belge yükleyebilir
- Pending: Onay bekliyor, sistemi kullanamaz
Ekibinizde geliştiricilere farklı, yöneticilere farklı modeller sunmak istiyorsanız şu yaklaşımı kullanabilirsiniz: Admin panelinde Models sekmesine gidin, her model için hangi rol grubunun erişebileceğini belirleyin. Örneğin büyük ve yavaş modelleri sadece belirli kullanıcılara açıp hafif modelleri herkesin kullanımına sunabilirsiniz.
Güncelleme Prosedürü
Open WebUI aktif geliştirme altında olan bir proje ve düzenli güncellemeler geliyor. Docker kullananlar için güncelleme oldukça basit:
# Yeni imajı çek
docker pull ghcr.io/open-webui/open-webui:main
# Eski container'ı durdur ve sil
docker stop open-webui
docker rm open-webui
# Yeni container'ı başlat (volume silinmediği için veriler korunur)
docker run -d
-p 3000:8080
--add-host=host.docker.internal:host-gateway
-v open-webui:/app/backend/data
--name open-webui
--restart always
ghcr.io/open-webui/open-webui:main
Docker Compose kullanıyorsanız:
docker compose pull
docker compose up -d
pip ile kurulum yapanlara yönelik güncelleme:
pip install --upgrade open-webui
sudo systemctl restart open-webui
Yedekleme Stratejisi
Üretim ortamında kullandığınız Open WebUI kurulumunu mutlaka yedekleyin. Veritabanı, yüklenen belgeler ve ayarların tamamı tek bir dizinde tutuluyor.
# Docker volume'u yedekleme
docker run --rm
-v open-webui:/source
-v $(pwd):/backup
alpine tar czf /backup/open-webui-backup-$(date +%Y%m%d).tar.gz -C /source .
# Yedeği geri yükleme
docker run --rm
-v open-webui:/target
-v $(pwd):/backup
alpine tar xzf /backup/open-webui-backup-20241201.tar.gz -C /target
# Doğrudan kurulum için yedekleme
tar czf open-webui-backup-$(date +%Y%m%d).tar.gz ~/.open-webui/
Otomatik yedekleme için bir cron job ekleyebilirsiniz:
crontab -e
# Her gece 02:00'de yedek al, 7 günden eski yedekleri sil
0 2 * * * docker run --rm -v open-webui:/source -v /backup/open-webui:/backup alpine tar czf /backup/backup-$(date +%Y%m%d).tar.gz -C /source . && find /backup/open-webui -name "*.tar.gz" -mtime +7 -delete
Sık Karşılaşılan Sorunlar
Open WebUI Ollama’ya bağlanamıyor: Docker container içinden host.docker.internal adresine ping atın. Çalışmıyorsa --add-host parametresini kontrol edin. Ollama’nın sadece localhost‘u dinleyip dinlemediğini kontrol etmek için:
sudo ss -tlnp | grep 11434
# 127.0.0.1:11434 görüyorsanız Ollama sadece localhost'u dinliyor
# Docker'dan erişim için Ollama'yı 0.0.0.0'da dinletmeniz gerekiyor
# /etc/systemd/system/ollama.service.d/override.conf oluşturun:
sudo mkdir -p /etc/systemd/system/ollama.service.d/
sudo tee /etc/systemd/system/ollama.service.d/override.conf <<EOF
[Service]
Environment="OLLAMA_HOST=0.0.0.0"
EOF
sudo systemctl daemon-reload
sudo systemctl restart ollama
Streaming yanıtlar gelmiyor: Nginx yapılandırmanızda proxy_buffering off ve WebSocket başlıklarını kontrol edin. Bu konfigürasyon olmadan model yanıtı tek seferde gelir, akan yazı efekti çalışmaz.
Model listesi boş görünüyor: Admin panelinde Connections sekmesine gidin ve Ollama URL’sini doğrulayın. Bağlantı testini çalıştırın.
Sonuç
Open WebUI, Ollama ile çalışan yerel LLM kurulumunuzu gerçek anlamda kullanılabilir hale getiriyor. Terminal komutlarıyla model sorgulamaktan ChatGPT benzeri bir arayüze geçmek, özellikle teknik olmayan ekip üyelerinin de sistemi kullanmasını sağlıyor. RAG desteği, çoklu model yönetimi ve kullanıcı yetkilendirme özellikleriyle küçük ve orta ölçekli ekiplerin kurumsal AI altyapısı için sağlam bir temel sunuyor.
Docker Compose ile dakikalar içinde kurabildiğiniz bu sistemi Nginx arkasına alıp SSL ile güvence altına aldığınızda, tamamen kendi kontrolünüzde, internet bağlantısı gerektirmeyen ve verilerinizi üçüncü taraflarla paylaşmayan bir AI asistanına kavuşmuş oluyorsunuz. Bu, özellikle hassas verilerle çalışan şirketler için büyük bir avantaj.
