Bu rehberde gerçek bir Windows Server 2022 VPS üzerinde Ollama’yı kurduk, hafif Gemma3 modelini CPU ile test ettik, Python 3.11 ve uv üzerinden Open WebUI’yi ayağa kaldırdık, FunctionGemma ile tool uyumluluğu sorununu belgeledik ve 60 gerçek ekran görüntüsüyle Open WebUI’yi Windows açılışında kullanıcı login olmadan otomatik başlayacak hale getirdik.
Windows VPS → Ollama :11434
↓
gemma3:270m / functiongemma
↓
Open WebUI :8080
↓
Windows Task Scheduler → 24/7Bu rehberde gerçek bir Windows Server 2022 VPS üzerinde tamamen yerel bir yapay zekâ katmanı kurduk. Ollama, modelleri Windows üzerinde çalıştıran runtime olarak; Open WebUI ise bu modellere tarayıcıdan erişmek için ChatGPT benzeri yönetim ve sohbet arayüzü olarak kullanıldı.
Test VPS’inde özel bir NVIDIA GPU bulunmadığı için önce yaklaşık 291 MB büyüklüğündeki gemma3:270m ile düşük kaynaklı bir doğrulama yaptık. Daha sonra Open WebUI’nin tool kullanımında verdiği uyarıyı belgeleyip FunctionGemma modelini ekledik. Son aşamada Open WebUI’yi Windows Task Scheduler üzerinden sistem açılışında, kullanıcı oturum açmasa bile başlayacak hale getirdik.
Windows VPS → Ollama :11434 → Yerel modeller
├── gemma3:270m
└── functiongemma
Open WebUI :8080 → Ollama
Windows Task Scheduler → Open WebUI otomatik başlangıçKuruluma Windows PowerShell’i Yönetici olarak çalıştırarak başladık. Ardından işletim sistemi, sanallaştırma platformu, fiziksel bellek, CPU ve görüntü bağdaştırıcısını Get-CimInstance ile kontrol ettik.
Test sistemimiz Microsoft Windows Server 2022 Standard Evaluation 64-bit, VMware Virtual Platform ve Intel Xeon E5-2697 v2 işlemci üzerinde çalışıyordu. Görüntü bağdaştırıcısı tarafında Microsoft Remote Display Adapter ve VMware SVGA 3D görünüyordu; bu nedenle büyük GPU modelleri yerine hafif modellerle kurulum akışını doğruladık.
Get-CimInstance Win32_OperatingSystem | Select-Object Caption, Version, OSArchitectureGet-CimInstance Win32_ComputerSystem | Select-Object Manufacturer, Model, TotalPhysicalMemoryGet-CimInstance Win32_Processor | Select-Object Name, NumberOfCores, NumberOfLogicalProcessorsGet-CimInstance Win32_VideoController | Select-Object Name, AdapterRAMOllama’nın Windows kurulumunu tek PowerShell komutuyla başlattık. Installer paketi indirdi, kurulum aşamasını tamamladı ve Windows tarafında ollama.exe uygulamasının kullanıcı oturumu açıldığında çalışacak şekilde yapılandırıldığına dair bildirim gösterildi.
İlk kurulumda indirme yüzdesi ve Installing Ollama aşaması normaldir. Kurulum bitmeden PowerShell penceresini kapatmayın. Install complete mesajını gördükten sonra servis ve CLI doğrulamasına geçin.
irm https://ollama.com/install.ps1 | iex




Ollama kurulduktan sonra tarayıcıda http://localhost:11434 adresini açtık. Ollama is running cevabı yerel HTTP servisinin ayağa kalktığını gösterdi. Bu portu yalnızca doğrulama amacıyla yerelde kullandık.
PowerShell’de ollama --version ile test ortamındaki sürümü kontrol ettik; ekrandaki testte 0.32.6 görünüyordu. Ardından ollama list çalıştırıldığında henüz herhangi bir model indirilmediği için liste boştu. Bu, temiz kurulumdan sonra beklenen durumdur.
ollama --versionollama listhttp://localhost:11434



Bu VPS’te çok sayıda servis daha kuracağımız ve özel GPU bulunmadığı için ilk doğrulama modelini küçük tuttuk. ollama pull gemma3:270m komutuyla yaklaşık 291 MB boyutunda bir model indirildi. Bu seçim kalite hedefinden çok Ollama çalışma zincirini düşük kaynakla doğrulamak içindi.
Modeli ollama run gemma3:270m ile açıp Türkçe test mesajı gönderdik ve yerel cevap aldık. ollama ps çıktısında modelin CPU üzerinde çalıştığı ve context bilgisinin bulunduğu görüldü. /bye ile etkileşimli oturumdan çıktıktan sonra ollama list modeli kalıcı listede gösterdi.
270M sınıfındaki çok küçük modeller; uzun muhakeme, hassas üretim işleri veya yüksek kalite beklenen görevler için sınırlıdır. Sunucu kaynaklarınıza göre daha büyük bir model seçebilirsiniz.
ollama pull gemma3:270mollama run gemma3:270mollama ps/byeollama list






Sunucuda önce python --version, py --version ve pip --version komutlarını çalıştırdık; mevcut varsayılan Python 3.13.1 idi. Sistemdeki Python’u kaldırmak yerine Open WebUI için ayrı Python 3.11.9 kurduk. Böylece diğer uygulamaların mevcut Python ortamını bozmadan belirli sürümü uv üzerinden seçebiliyoruz.
Python 3.11.9 64-bit installer açıldıktan sonra Add python.exe to PATH seçeneğini etkinleştirdik. Customize installation içinde pip gibi temel bileşenleri koruduk ve Advanced Options ekranında Add Python to environment variables seçeneğini işaretledik.
Kurulum Setup was successful mesajıyla tamamlandıktan sonra py -3.11 --version komutuyla Python 3.11.9’un gerçekten kullanılabilir olduğunu doğruladık.
python --version
py --version
pip --versionInvoke-WebRequest -Uri "https://www.python.org/ftp/python/3.11.9/python-3.11.9-amd64.exe" -OutFile "$env:TEMP\python-3.11.9-amd64.exe"Start-Process "$env:TEMP\python-3.11.9-amd64.exe"py -3.11 --version







Open WebUI’yi belirli Python sürümüyle izole biçimde başlatmak için Astral uv kullandık. Kurulum komutu uv.exe ve uvx.exe dosyalarını kullanıcı profilindeki .local\bin dizinine yerleştirdi.
Mevcut PowerShell oturumunda PATH’e C:\Users\Administrator\.local\bin yolunu ekledikten sonra uv --version ile kurulumu doğruladık. Yeni terminal açıldığında kalıcı PATH ayarı installer tarafından tanındığı sürece bu geçici satıra tekrar ihtiyaç kalmayabilir.
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"$env:Path = "C:\Users\Administrator\.local\bin;$env:Path"uv --versionOpen WebUI verilerini C:\open-webui\data altında tutmak için DATA_DIR değişkenini ayarladık ve uvx üzerinden Python 3.11 ile open-webui@latest serve komutunu çalıştırdık. İlk çalıştırmada çok sayıda Python bağımlılığı, veritabanı migration’ı ve yardımcı model dosyası indirildiği için işlem sonraki açılışlardan daha uzun sürdü.
Terminalde OPEN WEBUI logosu, Started server process ve application startup logları görüldüğünde servis hazır hale gelir. Test görüntülerimizde Open WebUI v0.11.0 görünüyordu; @latest kullandığınız için siz kurduğunuz tarihte farklı bir sürüm görebilirsiniz.
$env:DATA_DIR="C:\open-webui\data"; uvx --python 3.11 open-webui@latest serve



Tarayıcıda http://localhost:8080 adresini açtığımızda Open WebUI karşılama ekranı geldi. İlk kullanıcı oluşturma akışında Ad, E-posta ve Parola alanlarını doldurarak yönetici hesabını oluşturduk.
Yönetici hesabı oluşturulduktan sonra Ollama’daki gemma3:270m modeli Open WebUI model alanında otomatik olarak göründü. Bu, Open WebUI ile yerel Ollama servisinin aynı Windows sunucu üzerinde iletişim kurduğunu doğruladı.
http://localhost:8080



Open WebUI üzerinden gemma3:270m ile test yaparken registry.ollama.ai/library/gemma3:270m does not support tools uyarısı aldık. Bu uyarı Ollama servisinin veya model dosyasının bozuk olduğu anlamına gelmez; seçili sohbet/özellik akışı tool calling beklerken model bu yeteneği sunmuyor demektir.
Normal metin sohbeti için tool kullanımını kapatmak mümkün olabilir; biz rehberde ayrıca tool odaklı küçük bir model deneyerek FunctionGemma’ya geçtik. Böylece hatanın ağ veya Open WebUI kurulumundan değil model yeteneğinden kaynaklandığını ayrıştırdık.
PowerShell’de ollama pull functiongemma komutunu çalıştırdık. Yaklaşık 300 MB indirme tamamlanıp success görüldükten sonra Open WebUI model menüsünde functiongemma:latest ve gemma3:270m birlikte listelendi.
functiongemma:latest seçildikten sonra aynı Windows Server / Ollama / Open WebUI doğrulama mesajını tekrar gönderdik ve yerel cevap aldık. İki ayrı başarılı sohbet ekranını saklayarak model değişiminin gerçekten uygulandığını belgeledik.
FunctionGemma’nın eklenmesi, her tool senaryosunun otomatik olarak destekleneceği anlamına gelmez; Open WebUI özelliği ile modelin desteklediği tool şemasının uyumlu olması gerekir.
ollama pull functiongemmaollama list




Open WebUI’yi her seferinde DATA_DIR, PATH ve uvx komutlarını elle yazarak başlatmak yerine C:\open-webui\open-webui-baslat.cmd dosyası oluşturduk. Dosya veri dizinini ayarlıyor, uvx’in bulunduğu kullanıcı bin klasörünü PATH’e ekliyor ve Python 3.11 ile Open WebUI’yi başlatıyor.
CMD dosyasını manuel çalıştırıp terminal loglarından Open WebUI’nin tekrar ayağa kalktığını doğruladık. Görev Zamanlayıcıya geçmeden önce bu tek dosyanın sorunsuz çalışması troubleshooting açısından önemlidir.
notepad C:\open-webui\open-webui-baslat.cmd@echo off
set "DATA_DIR=C:\open-webui\data"
set "PATH=C:\Users\Administrator\.local\bin;%PATH%"
"C:\Users\Administrator\.local\bin\uvx.exe" --python 3.11 open-webui@latest serve


Win + R penceresinde taskschd.msc açarak Windows Görev Zamanlayıcıya girdik ve Görev Oluştur seçeneğini kullandık. Göreve Eka Open WebUI adını verdik.
Genel sekmesinde Kullanıcı oturum açmışsa da açmamışsa da çalıştır seçeneğini işaretledik, En yüksek ayrıcalıklarla çalıştır seçeneğini etkinleştirdik ve yapılandırmayı Windows Server 2022 olarak seçtik. Böylece hedef, RDP/Administrator masaüstü açık olmasa bile görevin sistem tarafından başlatılabilmesidir.
taskschd.msc





Tetikleyiciler sekmesinden Yeni seçeneğini açıp Görevi başlat alanında Başlatılırken seçimini yaptık. Bu tetikleyici kullanıcı login olayına değil sistem başlangıcına bağlıdır.
Windows açılışında Ollama ve diğer temel süreçlerin toparlanmasına kısa süre vermek için görevi 30 saniye geciktirdik. Bu süre zorunlu değildir; VPS performansınıza göre ayarlanabilir. Tetikleyiciyi Etkin durumda kaydettik.




Eylemler sekmesinde Program başlat seçtik. Program/komut dosyası olarak C:\Windows\System32\cmd.exe, bağımsız değişken olarak /c "C:\open-webui\open-webui-baslat.cmd" ve başlangıç klasörü olarak C:\open-webui girdik.
Görevi kaydederken Windows, kullanıcı oturum açmasa bile görevi çalıştırabilmek için Administrator hesabının parolasını istedi. Parola girildikten sonra Görev Zamanlayıcı Kitaplığında Eka Open WebUI görevi Hazır durumunda göründü.
Üretime almadan önce VPS’i tamamen yeniden başlatın, RDP ile giriş yapmadan bir süre bekleyin ve daha sonra localhost:8080 erişimini doğrulayın. Parola değiştirirseniz görevde saklanan hesap bilgisini de güncellemeniz gerekebilir.
Program/komut dosyası: C:\Windows\System32\cmd.exe
Bağımsız değişkenler: /c "C:\open-webui\open-webui-baslat.cmd"
Başlangıç: C:\open-webui




Ollama modelleri disk alanı tüketir; zaman içinde ollama list ile kullanılmayan modelleri gözden geçirin. Open WebUI tarafında @latest hızlı güncelleme sağlar fakat üretimde beklenmeyen davranış değişikliği istemiyorsanız sürüm sabitleme ve güncelleme öncesi VPS snapshot yaklaşımı daha kontrollüdür.
Sorun olduğunda katmanları ayrı test edin: önce http://localhost:11434 ile Ollama, sonra ollama list/ps ile model runtime, ardından http://localhost:8080 ile Open WebUI ve son olarak Görev Zamanlayıcı geçmişi. Böylece model sorunu, Open WebUI sorunu ve Windows başlangıç görevi birbirine karışmaz.
ollama listollama pshttp://localhost:11434http://localhost:8080Bu rehberde Ollama 11434 ve Open WebUI 8080 adresleri localhost üzerinden test edildi. Özellikle Ollama API’sini doğrudan kimlik doğrulamasız public internete açmak ciddi bir risk oluşturabilir. Uzak erişim gerekiyorsa TLS, kimlik doğrulama, IP kısıtı veya özel ağ kullanan kontrollü bir katman ekleyin.
Open WebUI yönetici hesabında güçlü ve benzersiz parola kullanın. Windows Firewall kurallarını, Task Scheduler hesabını, veri dizini izinlerini ve model/cache disk kullanımını düzenli takip edin. Sunucu üzerinde başka uygulamalar varsa port ve PATH değişikliklerini de hesaba katın.
Bu rehberde Ollama Windows Server 2022 Standard Evaluation üzerinde gerçek kurulumla test edildi. Kendi sürümünüzde servis ve reboot testini tekrarlayın.
Hayır. Küçük modeller CPU üzerinde çalışabilir. Ancak daha büyük modellerde yeterli RAM ve özellikle uygun bir GPU performansı ciddi şekilde artırır.
Test VPS’inde özel GPU yoktu ve başka servisler de kurulacaktı. Yaklaşık 291 MB model yalnızca Ollama ve Open WebUI zincirini düşük kaynakla doğrulamak için seçildi.
Ollama’nın varsayılan yerel HTTP servisinin test edildiği adrestir. Bu rehberde public internete açılmadı.
Bu kurulumda Open WebUI localhost:8080 üzerinde çalıştırıldı.
Sunucuda Python 3.13.1 bulunmasına rağmen Open WebUI’yi belirli ve ayrı bir Python 3.11 ortamıyla çalıştırmak için Python 3.11.9’u yan yana kurduk.
Seçili Open WebUI akışı tool calling bekliyor fakat model bu yeteneği desteklemiyorsa bu uyarı görülebilir. Bu, Ollama servisinin bozuk olduğu anlamına gelmez.
Tool/function odaklı ikinci bir küçük modelle Open WebUI model değiştirme ve yerel cevap zincirini tekrar doğrulamak için eklendi.
Evet. Bu rehberde Task Scheduler ile sistem başlangıcında 30 saniye gecikmeli ve kullanıcı oturum açmasa bile çalışacak Eka Open WebUI görevi oluşturuldu.
Genel olarak doğrudan ve korumasız açmayın. Uzak erişim gerekiyorsa kimlik doğrulama, TLS, IP kısıtı veya özel ağ gibi güvenlik katmanları kullanın.
Ollama, Open WebUI ve 7/24 yerel yapay zekâ servislerini kendi Windows sunucunuzda çalıştırmak için EKA Sunucu VPS paketlerini inceleyebilirsiniz.
Güncellendi: 09.08.2026