Warum?

Ich hatte vor mir einen lokalen Ollama Server aufzubauen um die Fähigkeiten kleinerer large language models (LLMs) in der Softwareentwicklung zu testen ohne an externe Dienste gebunden zu sein.

Was man so braucht:

  • Hardware / Konfiguration
    • Lokales Serversystem , z.B. Windows 11, Linux, …
    • NVIDIA Grafikkarte mit GPU und etwas VRAM um die LLMs laufen lassen zu können
    • Sauber konfiguriertes lokales Netzwerk.
  • Software
    • Ollama Runtime auf dem Server
    • Treiber für die Grafikkarte
    • CUDA Toolkit
    • NVIDIA Prozessmonitor für die Kommandozeile nvidia-smi

Netzwerksetup

  • Die Netzwerkfirewalls müssen so konfiguriert sein, dass sie den Traffic von den Clients und den VLANs/Subnetzen zum Server erlauben.

  • Die Firewall des Hosts muss einkommenden Traffic zum Ollama-Port erlauben. Ggfs. kann man hier das Quellnetzwerk noch angeben, damit nur bestimmte Clients zugreifen können.

netsh advfirewall firewall add rule name="Ollama incoming requests" dir=in action=allow protocol=TCP localport=11434 profile=any
  • Windows muss so konfiguriert sein, dass der Traffic intern geroutet wird
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=11434 connectaddress=127.0.0.1 connectport=11434
  • In den Umgebungsvariablen des Systems muss der Ollama-Host konfiguriert sein: OLLAMA_HOST=0.0.0.0

Ollama Installation & IDE (zed, kilocode, VSCode, …)

In Windows wird die Ollama Anwendung beim Systemstart auch gestartet. Da ich es bevorzuge die Dienste erst zu starten, wenn ich sie brauche, habe ich die Ollama-Verknüpfung aus dem Autostart entfernt.

Von der Kommandozeile (z.B. PowerShell) kann man Ollama mit ollama serve starten. Nachdem der Dienst gestartet ist, kann man den Status im Browser überprüfen http://localhost:11434. Dort sollte folgendes zu lesen sein: Ollama is running..

Bevor man ein Modell starten kann, muss man es vorher herunterladen (pull), ich habe folgende Modelle geladen:

  • ollama pull mistral
  • ollama pull qwen-2.5-coder:7b
  • ollama pull gemma3:4b

Die heruntergeladenen Modelle kann man sich mit ollama list anschauen, und ollama ps zeigt an, welches Modell gerade aktiv ist.

Dann kann man interaktiv mit dem Modell chatten, sobald man es gestartet hat: ollama run mistral. Ob die Hardware richtig verwendet wird kann man sich im Nvidia-Monitor anschauen:: nvidia-smi -l 2.

Danach kann man den (lokalen) Ollama Service als Modell in der IDE aufnehmen. Aber niemand hat gesagt, dass das so einfach ist :-). Deshalb habe ich eine Liste an Problemen auf die ich gestoßen bin unten beschrieben.

Happy LLMing.

Problemanalyse und -behebung

  • Mögliche Fehlermeldungen, die beim Start von Ollama oder bei Interaktion mit der API auftauchen:
Error: listen tcp 127.0.0.1:11434:
Error: Head "http://127.0.0.1:11434/": EOF
  • Neustarten des Host Network Services
net stop hns
net start hns
  • Finden und stoppen von existierenden Ollama-Prozessen
Get-Process | Out-String -Stream | Select-String 'llama' | Stop-Process
  • Nach dem Update von Ollama kommt es manchmal zu Situationen, dass der Port 11434 von einem anderen Prozess geblockt ist:
netstat -ano | findstr :11434
netstat -ano | findstr :11434 | findstr 'LISTEN'

Mit Hilfe des Outputs kann man die Prozess-ID (PID) heraufinden (hier: 4684) und den Prozess stoppen.

tasklist /svc /FI "PID eq 4684"
taskkill /F /PID 4684