Category: PHP

  • Ollama-URL ändern: So steuerst du deinen Ollama-Endpoint sauber & stabil

    Wenn du mit Ollama arbeitest – sei es lokal, in Docker, im Netzwerk oder hinter einem Reverse Proxy – ist eine zentrale Frage:

    Wie kann ich den URL/Host ändern, den die Ollama-Bibliothek verwendet, um Anfragen zu senden?

    Viele Entwickler probieren, das direkt im Prompt zu ändern … aber das funktioniert nicht. Der “Host” wird nicht im Prompt ausgewertet, sondern direkt in der Client-Konfiguration.

    Dieser Beitrag erklärt …

    ✔️ Was der Ollama-URL überhaupt ist
    ✔️ Warum er wichtig ist
    ✔️ Wie du ihn in verschiedenen Setups kontrollierst
    ✔️ Beispiele in Python
    ✔️ Tipps für Docker, Remote-Server & Production


    🧩 Was bedeutet “Ollama-URL”?

    Wenn du mit der Ollama-Bibliothek eine Anfrage wie diese schickst:

    res = ollama.chat(model=model, messages=[...])
    

    … dann baut die Bibliothek intern einen HTTP-Client, der standardmäßig gegen den lokalen Ollama-Server auf Port 11434 spricht:

    http://localhost:11434
    

    👉 Das ist der Ollama-Base-URL.

    Wenn dein Ollama-Daemon irgendwo anders läuft – lokal auf einem anderen Port, per Docker-Container, auf einem anderen Server im Netzwerk oder hinter einem Proxy – dann musst du diesen URL anpassen.


    🚫 Warum du den URL nicht im Prompt ändern kannst

    Ein häufiger Anfängerfehler ist:

    Ändere hier den URL: http://server:11434
    

    im Prompt selbst zu schreiben.

    ❌ Das klappt nicht.
    Prompts werden an das Modell geschickt – sie beeinflussen nicht den HTTP-Client oder die Bibliothek.

    Deshalb:

    Der Ollama-URL wird nicht durch Inhalte im Prompt gesteuert.
    Er wird durch die Client-Konfiguration / Umgebungsvariable gesteuert.


    🛠️ Drei Wege, den Ollama-URL zu ändern

    1) 🔧 Per Umgebungsvariable OLLAMA_HOST (einfach & global)

    Dies ist der gängigste Weg – besonders für lokale Entwicklung und Server.

    Linux / macOS

    export OLLAMA_HOST="http://192.168.1.100:11434"
    

    Windows PowerShell

    setx OLLAMA_HOST "http://192.168.1.100:11434"
    

    ⚠️ Wichtig: Terminal/IDE neu starten, damit die Variable übernommen wird.

    Vorteile

    • Global gültig für alle Skripte
    • Kein Code-Änderung nötig

    Nachteile

    • Weniger flexibel, wenn mehrere Instanzen im Spiel sind

    2) 🧠 Direkt im Python-Client (empfohlen bei mehreren Hosts)

    Wenn du mehrere Ollama-Server hast oder klar im Code steuern willst:

    from ollama import Client
    
    client = Client(host="http://192.168.1.100:11434")
    
    res = client.chat(
        model=model,
        messages=[
            {
                "role": "user",
                "content": prompt_text
            }
        ]
    )
    
    print(res)
    

    So vermeidest du Abhängigkeiten von Umgebungsvariablen.

    Tipp: Das ist ideal für Microservices, APIs, Tests und automatische Deployments.


    3) 🚢 Docker & Netzwerk-Setups

    Wenn Ollama in Docker läuft, musst du beachten:

    • Docker-Container kommunizieren nicht automatisch über localhost mit dem Host.
    • Je nach Setup musst du z. B.:
    docker run --network="host" ollama/ollama
    

    oder

    docker run -p 11434:11434 ollama/ollama
    

    … um den Host erreichbar zu machen.

    Dann kannst du wieder entweder die Umgebungsvariable nutzen oder im Client setzen.


    🔍 Debugging: Wie erkennst du den aktuell verwendeten Host?

    Terminal

    echo $OLLAMA_HOST
    

    Python-Code

    import os
    print(os.getenv("OLLAMA_HOST"))
    

    Wenn hier nichts steht, verwendet Ollama den Standard:

    http://localhost:11434
    

    🕸️ Edge-Cases & Fallstricke

    ❗ SSL & HTTPS

    Wenn du Ollama hinter einen Reverse-Proxy mit HTTPS stellst:

    • Benenne deine Variable entsprechend:export OLLAMA_HOST="https://ollama.meinedomain.de"
    • Achte auf valide Zertifikate oder aktiviere Trust/CA im Client.

    ❗ Authentifizierung

    Ollama selbst nutzt keine Auth per Default — wenn du vor einem Auth-Proxy sitzt, musst du:

    • Token im Proxy konfigurieren
    • Header im Client setzen

    ❗ CORS & Browser-Clients

    Ollama ist ein Backend-Server. Browser müssen über dein Backend proxied werden.


    📌 Zusammenfassung

    MethodeFlexibilitätEmpfehlung
    Umgebungsvariablemittelgut für lokale Dev
    Client-Config im Codehochbest geeignet
    Docker-Netzwerkabhängigwenn Container im Spiel

    Wichtig: Niemand liest den URL aus dem Prompt!
    Der Prompt bleibt nur für die Modell-Eingabe relevant.


    💡 Bonus: Beispiel-Projektstruktur

    my_ai_project/
    ├── .env
    ├── main.py
    ├── requirements.txt
    └── docker-compose.yml
    

    .env

    OLLAMA_HOST=http://ollama-server:11434
    

    main.py

    from ollama import Client
    import os
    
    ollama_host = os.getenv("OLLAMA_HOST")
    client = Client(host=ollama_host)
    
    # …