Kendi dil modelinizi kendi sunucunuzda çalıştırmak, verinizi üçüncü taraf bir yapay zekâ hizmetine göndermeden sohbet, özetleme ve kod yardımı gibi işleri yapmanın en doğrudan yoludur. Bunun için gereken yazılım artık karmaşık değil: Ollama modelleri indirip çalıştırır, Open WebUI de tarayıcıdan kullanabileceğiniz sohbet arayüzünü sağlar. Zor kısım sırayla doğru adımları atmaktır: sürücü, Docker, servis ayarı ve en önemlisi güvenli erişim. Bu rehberde Ubuntu 24.04 LTS çalışan bir GPU sunucuda sıfırdan başlayıp, internete açık bir kapı bırakmadan çalışan bir yerel yapay zekâ ortamı kuruyoruz.
Kurulum üç parçadan oluşur. Birincisi, NVIDIA sürücüsüdür; kart bu sürücü olmadan hesaplama yapamaz. İkincisi, doğrudan sunucuya kurulan Ollama servisidir; model dosyalarını yönetir ve ekran kartını kullanarak yanıt üretir. Üçüncüsü, Docker kabı içinde çalışan Open WebUI'dir; Ollama'ya yerel adres üzerinden bağlanır ve size bir tarayıcı arayüzü sunar. Hiçbirini internete açmıyoruz: Ollama yalnızca yerel adresi dinler, Open WebUI'ye ise güvenlik duvarının arkasından yalnızca SSH tüneliyle erişirsiniz.
Örneklerde hangi kartı kullandığınız fark etmez; yalnızca hangi modelin VRAM'inize sığacağı değişir. Hesap için yerel LLM için kaç GB VRAM gerekir rehberimize bakabilirsiniz.
Sunucuya bağlanın ve önce paketleri güncelleyin. Ardından bir güvenlik duvarı kurup yalnızca SSH'ye izin verin. SSH erişimini anahtar tabanlı hale getirmek için Linux sunucu güvenliği rehberimizi izleyin.
sudo apt update && sudo apt -y upgrade
sudo apt -y install ufw curl ca-certificates
sudo ufw allow OpenSSH
sudo ufw enable
Bu noktada ne Ollama'nın ne de Open WebUI'nin portunu açmıyoruz; bu bilinçli bir tercih.
Ubuntu, kartınıza uygun sürücü paketini kendisi önerir. Önce hangi paketin önerildiğine bakın, sonra kurun ve yeniden başlatın:
sudo ubuntu-drivers devices
sudo ubuntu-drivers install
sudo reboot
Sunucu açıldığında şu komutla kartı görmelisiniz:
nvidia-smi
Çıktıda kartın adı, VRAM miktarı ve sürücü sürümü yer alır. İki nokta önemli. RTX 50 serisi gibi yeni nesil kartlar, sürücünün yeterince yeni olmasını ve çoğu durumda açık çekirdek modüllü dalını gerektirir; bu yüzden elle sürüm seçmek yerine ubuntu-drivers devices çıktısındaki öneriyi kullanın. Tesla P40 gibi eski nesil kartlarda ise tersi geçerlidir: sürücü dalı bir gün bu nesli desteklemeyi bırakabilir, bu yüzden çalışan sürümü sudo apt-mark hold ile sabitleyip güncellemeyi bilerek yapın. nvidia-smi hata veriyorsa sorun giderme için Ubuntu 24.04 rehberimize ve bu serinin sürücü sorunları yazısına bakın.
Docker'a yalnızca Open WebUI için ihtiyacımız var. Ubuntu'nun kendi paketi yeterlidir:
sudo apt -y install docker.io
sudo systemctl enable --now docker
sudo docker run --rm hello-world
Docker Compose ile çok kaplı yapılar kurmayı düşünüyorsanız Docker Compose kurulum rehberimiz işinize yarar. Ollama'yı da Docker içinde çalıştırmak isterseniz NVIDIA Container Toolkit kurmanız gerekir; biz Ollama'yı doğrudan sunucuya kurarak bu ek katmandan kaçınıyoruz.
Resmi kurulum betiği Ollama'yı kurar ve bir systemd servisi olarak başlatır. Servis varsayılan olarak yalnızca yerel adresi dinler:
curl -fsSL https://ollama.com/install.sh | sh
systemctl status ollama --no-pager
ollama pull llama3.1:8b
ollama run llama3.1:8b
Model adı bir örnektir; kendi VRAM'inize uygun güncel bir modeli Ollama kütüphanesinden seçin. Model çalışırken başka bir terminalde şunları çalıştırın:
ollama ps
nvidia-smi
ollama ps çıktısındaki PROCESSOR sütunu modelin nerede çalıştığını söyler. Tamamen GPU'da çalışıyorsa yüzde yüz GPU görürsünüz; CPU ve GPU karışımı görüyorsanız model VRAM'e tam sığmamış ve yavaşlamıştır. Bu durumda daha küçük ya da daha çok nicemlenmiş bir model seçin. Programlı erişim için yerel API de hazırdır:
curl http://127.0.0.1:11434/api/generate -d '{"model":"llama3.1:8b","prompt":"Merhaba, kendini tanıt.","stream":false}'
Open WebUI, Ollama için hazırlanmış kapsamlı bir sohbet arayüzüdür. Burada iki ayrıntı önemli. Birincisi, Ollama yalnızca 127.0.0.1 adresini dinlediği için köprü ağındaki sıradan bir Docker kabı ona ulaşamaz; bu yüzden kabı ana makinenin ağında (--network=host) çalıştırıyoruz. İkincisi, Docker'ın -p 3000:8080 gibi yayınladığı portlar ufw kurallarını atlar ve kabı fark etmeden internete açabilir. Host ağında çalışan kap ise normal güvenlik duvarı kurallarına tabidir; ufw'de yalnızca SSH açık olduğu için arayüze dışarıdan ulaşılamaz:
sudo docker run -d --name open-webui --restart always --network=host -e OLLAMA_BASE_URL=http://127.0.0.1:11434 -v open-webui:/app/backend/data ghcr.io/open-webui/open-webui:main
Kap başladığında arayüz sunucuda 8080 portunu dinler. Çalıştığını şu komutla doğrulayın ve dışarıdan görünmediğini ayrıca kontrol edin:
sudo docker ps
curl -I http://127.0.0.1:8080
sudo ufw status
Arayüze kendi bilgisayarınızdan erişmek için SSH tüneli kullanın. Bağlantıyı açık tuttuğunuz sürece kendi bilgisayarınızdaki localhost:3000 adresi, sunucudaki 8080 portunda çalışan Open WebUI'ye yönlenir:
ssh -L 3000:127.0.0.1:8080 kullanici@sunucu-adresi
Tarayıcıda http://localhost:3000 adresini açın. İlk oluşturduğunuz hesap yönetici olur; bu yüzden hesabı hemen kendiniz oluşturun. Başkalarının kayıt olmasını engellemek için kabı -e ENABLE_SIGNUP=false değişkeniyle yeniden oluşturabilirsiniz. Ekibinizle ortak kullanacaksanız tünel yerine, HTTPS sağlayan ve kimlik doğrulama ekleyen bir ters vekil tercih edin; kapı açık, parola zayıf bir yapay zekâ arayüzü saldırganlar için cazip bir hedeftir.
Kendi yapay zekâ sunucunuzu İstanbul'da kurun
Fiziksel GPU, tam root erişimi ve Gen4/Gen5 M.2 NVMe diskle teslim edilen GPU sunucularda Ollama ve Open WebUI'yi dakikalar içinde çalıştırabilirsiniz.
GPU sunucu paketlerini inceleyinOllama'nın davranışını systemd servisine ortam değişkeni ekleyerek değiştirirsiniz. Önce override dosyasını açın:
Model dizinini değiştirecekseniz dizini önce oluşturup Ollama kullanıcısına verin:
sudo mkdir -p /data/ollama-models
sudo chown ollama:ollama /data/ollama-models
sudo systemctl edit ollama
Açılan editöre örneğin şunları yazın, kaydedin, sonra servisi yeniden başlatın:
[Service]
Environment="OLLAMA_KEEP_ALIVE=30m"
Environment="OLLAMA_NUM_PARALLEL=2"
Environment="OLLAMA_MODELS=/data/ollama-models"
sudo systemctl daemon-reload
sudo systemctl restart ollama
OLLAMA_KEEP_ALIVE modelin son istekten sonra bellekte ne kadar kalacağını belirler; sık kullanılan bir modelin her seferinde yeniden yüklenmesini önler. OLLAMA_NUM_PARALLEL eşzamanlı istek sayısını sınırlar. OLLAMA_MODELS ise model dosyalarının hangi dizinde duracağını söyler; büyük NVMe diskinizde ayrı bir dizin kullanmak düzenli bir yapı sağlar.
Model seçerken VRAM'i referans alın. Kabaca bir kılavuz olarak, 4 bit nicemlenmiş yaklaşık 8 milyar parametreli modeller 8 GB'a rahat sığar; 14 milyar parametreli modeller 16 GB için uygundur; 30 milyar parametre civarındaki modeller 24 GB'a, 32 milyar parametreli modeller ise bağlam payıyla birlikte 32 GB'a daha rahat oturur. Bağlam uzunluğunu artırdıkça bellek kullanımı büyüdüğü için bu rakamlara pay bırakın. Bağlamı artırmak için bir Modelfile'da PARAMETER num_ctx 8192 satırı kullanabilirsiniz.
Yerel çalışan bir modelin kalitesi ve hızı büyük ölçüde ekran kartı belleğine bağlıdır. Aşağıdaki tablo kabaca bir başlangıç noktası verir; gerçek değerler modele, nicemleme düzeyine ve bağlam uzunluğuna göre değişir.
| Kart belleği | Uygun model sınıfı | Not |
|---|---|---|
| 8 GB | Yaklaşık 7-8 milyar parametre, 4 bit | Sohbet ve özetleme için yeterli; uzun bağlamda pay bırakın |
| 16 GB | Yaklaşık 14 milyar parametre, 4 bit | Günlük kullanım için dengeli başlangıç noktası |
| 24 GB | Yaklaşık 30 milyar parametre, 4 bit | Daha güçlü akıl yürütme ve kodlama yeteneği |
| 32 GB | Yaklaşık 32 milyar parametre, daha yüksek kalite | Bağlam payıyla rahat çalışır |
Aynı modelin farklı nicemleme sürümleri vardır: düşük bit sayısı belleği azaltır ama kaliteyi biraz düşürür. İlk denemede 4 bit sürümü ile başlayın, kalite yetmezse bir üst düzeye çıkın. Hangi kartın size uyduğunu RTX 5060 Ti rehberimizdeki inference bölümünden de okuyabilirsiniz.
Üç senaryo bu ortamı gerçekten işe yarar kılar. Birincisi, ekip içi sohbet asistanıdır: çalışanlar şirket içi bilgiyi dışarı çıkarmadan taslak yazdırır, e-posta özetletir ve metin düzelttirir. İkincisi, belge özetleme ve soru-cevaptır: Open WebUI'nin belge yükleme özelliğiyle sözleşme, rapor ya da teknik doküman üzerinde soru sorabilirsiniz; belgeler sunucunuzda kalır. Üçüncüsü, kod yardımcısıdır: Ollama'nın yerel API'sine bağlanan editör eklentileriyle kod tamamlama ve açıklama alırsınız. Üçünde de ortak fayda aynıdır: veri kendi sunucunuzdan çıkmaz ve kullanım başına dış bir ücret oluşmaz.
ufw açık ve yalnızca gerekli portlara izin veriyor.ufw atlandığı için kabı host ağında ya da yalnızca 127.0.0.1'e bağlı çalıştırıyorsunuz.Bir üretim ortamında sunucu bakım için yeniden başlatıldığında servislerin kendiliğinden ayağa kalkması gerekir. Ollama kurulum betiğiyle etkinleştirilmiş bir systemd servisidir; Open WebUI kabı da --restart always ile başladığı için Docker açıldığında kendisi geri gelir. Bunu bir kez bilerek test etmek iyi bir alışkanlıktır: sunucuyu yeniden başlatın, birkaç dakika sonra nvidia-smi, systemctl is-active ollama ve sudo docker ps komutlarıyla her şeyin yerinde olduğunu doğrulayın. İlk istekte model yeniden belleğe yükleneceği için yanıt biraz gecikir; bu normaldir.
ollama ps ile modelin CPU'ya taştığını doğrulayın; daha küçük bir model ya da daha düşük bağlam deneyin.journalctl -u ollama -e hata satırını gösterir. Sürücü yüklü değilse önce nvidia-smi'yi düzeltin.--network=host ile başladığını ve Open WebUI ayarlarında bağlantı adresinin http://127.0.0.1:11434 olduğunu kontrol edin.ollama list ile modelleri görüp ollama rm model-adi ile kullanmadıklarınızı silin.dkms status ile modülün derlendiğini kontrol edin ve gerekirse sürücü paketini yeniden kurun.Open WebUI sohbetleri ve ayarları open-webui adlı Docker biriminde durur; Ollama modelleri ise yeniden indirilebilir olduğu için yedeklenmesi şart değildir. Asıl değerli olan sizin ayarlarınız ve gerekiyorsa kendi bilgi tabanı belgeleriniz. Birimi düzenli olarak bir arşive alıp sunucu dışında saklayın. Güncelleme için kabı durdurup yeni görüntüyü çekin ve aynı birimle yeniden başlatın; veri birimde kaldığı için sohbetleriniz korunur. Çekirdek ve sürücü güncellemelerini ise bir bakım penceresinde yapın, ardından nvidia-smi ile kartın görünür olduğunu doğrulayın.
Birden fazla kullanıcı için daha büyük bir kart mı gerekiyor?
Daha fazla VRAM, daha büyük model ve daha çok eşzamanlı kullanıcı demektir. İhtiyacınıza göre kart ve paket seçin ya da teklif isteyin.
GPU sunucu teklif formuna gidinOllama GPU'yu kullanıyor mu, nasıl anlarım?
Bir model çalışırken ollama ps komutunu çalıştırın. PROCESSOR sütununda 100 yüzde GPU görüyorsanız model tamamen ekran kartında çalışıyor demektir. CPU/GPU karışımı görürseniz model VRAM'e tam sığmamıştır.
Ollama için Docker gerekli mi?
Hayır. Ollama doğrudan sunucuya kurulabilir ve GPU'yu kendisi kullanır. Docker'ı yalnızca Open WebUI gibi web arayüzünü izole çalıştırmak için kullanıyoruz; bu kap GPU'ya ihtiyaç duymaz.
Open WebUI'ye dışarıdan nasıl güvenle erişirim?
Güvenlik duvarında yalnızca SSH'ye izin verin ve arayüze SSH tüneliyle bağlanın. Herkese açık adres gerekiyorsa HTTPS sağlayan bir ters vekilin arkasına koyun, kayıt olmayı kapatın ve güçlü yönetici parolası belirleyin.
Aynı anda birden fazla kullanıcı Ollama'yı kullanabilir mi?
Evet, ancak her eşzamanlı istek ek bellek ve işlem gücü ister. OLLAMA_NUM_PARALLEL ayarıyla eşzamanlı istek sayısını sınırlayabilir, yoğun kullanımda ise daha büyük VRAM'li bir kart seçebilirsiniz.
Hangi model 8 GB VRAM'e sığar?
Yaklaşık 7 ila 8 milyar parametreli ve 4 bit nicemlenmiş modeller 8 GB VRAM'e rahat sığar. Bağlam uzunluğunu artırdıkça bellek kullanımı da büyür, bu yüzden pay bırakın.
Sürücü güncellemesi sonrası GPU kaybolursa ne yapmalıyım?
Çekirdek güncellemesi sonrası modülün yeniden derlenmesi gerekebilir. dkms status çıktısına bakın, linux-headers paketinin kurulu olduğunu doğrulayın ve gerekirse sürücü paketini yeniden kurup sunucuyu yeniden başlatın.
Modelleri başka bir diske taşıyabilir miyim?
Evet. OLLAMA_MODELS ortam değişkenini yeni bir dizine ayarlayıp servisi yeniden başlatırsanız modeller o dizine indirilir. Büyük NVMe diski olan sunucularda bu yöntem düzenli bir yapı sağlar.