Skip to content
BotServBotServ
OllamaReverse-ProxyNginxTraefikCaddy

Ollama hinter einem Reverse-Proxy

Ollama sicher hinter Nginx, Traefik oder Caddy. SSL, DNS, Load Balancing und Authentifizierung.

S

schutzgeist

2 min read
Ollama hinter einem Reverse-Proxy

Ollama hinter einem Reverse-Proxy

Was dieser Artikel über Ollama-Reverse-Proxies behandelt

  • Warum ein Reverse-Proxy für Ollama sinnvoll ist.
  • Konfigurationen für nginx, Traefik und Caddy.
  • TLS und DNS.
  • Timeouts und Streaming.
  • Authentifizierung am Proxy.

Einleitung: Ollama hinter einem Reverse-Proxy

Wer Ollama für andere Geräte oder das Internet erreichbar machen möchte, sollte nicht den Ollama-Port direkt freigeben. Ein Reverse-Proxy schaltet sich dazwischen und bietet TLS, Authentifizierung, Logging und einfachere Verwaltung. Beliebte Proxies sind nginx, Traefik und Caddy. Mit der richtigen Konfiguration wird Ollama sicher und stabil hinter dem Proxy betrieben.

Dieser Artikel zeigt typische Reverse-Proxy-Setups für Ollama.

Wichtige Begriffe

  • Reverse-Proxy: Vermittlung von Client-Anfragen an Backend.
  • TLS: Verschlüsselung.
  • Upstream: Backend-Server, hier Ollama.
  • Timeout: Zeitlimit für Antworten.
  • Load Balancing: Verteilung auf mehrere Instanzen.
  • Middleware: Zusatzfunktion wie Authentifizierung.
  • Stream: Sukzessive Auslieferung von Token.
  • Proxy Buffering: Zwischenspeichern von Antworten.

Warum ein Reverse-Proxy?

  • TLS-Verschlüsselung.
  • Zentrale Authentifizierung.
  • Logging und Monitoring.
  • Einfache DNS-Namen.
  • Keine direkte Freigabe des Ollama-Ports.
  • Load Balancing bei mehreren Ollama-Instanzen.

nginx

server {
    listen 443 ssl;
    server_name ollama.example.com;

    ssl_certificate /etc/letsencrypt/live/ollama.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/ollama.example.com/privkey.pem;

    location / {
        proxy_pass http://localhost:11434;
        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_read_timeout 300s;
        proxy_buffering off;
    }
}

proxy_buffering off ist wichtig für Streaming.

Caddy

ollama.example.com {
    reverse_proxy localhost:11434
}

Caddy holt und erneuert TLS automatisch.

Traefik

services:
  ollama:
    image: ollama/ollama
    networks:
      - proxy
    labels:
      - traefik.enable=true
      - traefik.http.routers.ollama.rule=Host(`ollama.example.com`)
      - traefik.http.routers.ollama.tls=true
      - traefik.http.routers.ollama.tls.certresolver=letsencrypt
      - traefik.http.services.ollama.loadbalancer.server.port=11434

networks:
  proxy:
    external: true

Authentifizierung am Proxy

Traefik BasicAuth

labels:
  - traefik.http.middlewares.ollama-auth.basicauth.users=admin:$$apr1$$H6uskkkW$$IgXLP6ewTrSuBkTrqE8wj/
  - traefik.http.routers.ollama.middlewares=ollama-auth

nginx BasicAuth

htpasswd -c /etc/nginx/.htpasswd admin
location / {
    auth_basic "Ollama";
    auth_basic_user_file /etc/nginx/.htpasswd;
    proxy_pass http://localhost:11434;
}

Timeouts für Streaming

Lange Antworten erfordern grosszügige Timeouts:

proxy_read_timeout 600s;
proxy_send_timeout 600s;
proxy_connect_timeout 60s;

CORS

Falls ein Webfrontend auf den Proxy zugreift:

add_header Access-Control-Allow-Origin "https://frontend.example.com";
add_header Access-Control-Allow-Headers "authorization, content-type";

Load Balancing

Bei mehreren Ollama-Instanzen:

upstream ollama {
    server ollama1:11434;
    server ollama2:11434;
}

server {
    location / {
        proxy_pass http://ollama;
    }
}

Tipps

  • TLS immer aktivieren.
  • Timeouts hoch setzen.
  • Buffering für Streaming deaktivieren.
  • Authentifizierung einrichten.
  • DNS korrekt eintragen.
  • Logs regelmässig prüfen.
  • Rate-Limiting hinzufügen.

Typische Stolpersteine

  • Streaming funktioniert nicht: proxy_buffering off fehlt.
  • Timeout: proxy_read_timeout zu niedrig.
  • Kein TLS: Unverschlüsselte Kommunikation.
  • CORS-Fehler: Header fehlen.
  • Schlechte Authentifizierung: BasicAuth-Passwort zu schwach.
  • Falsche Weiterleitung: Pfad nicht korrekt.

FAQ: Ollama hinter einem Reverse-Proxy

Brauche ich unbedingt TLS? Ja, wenn der Zugriff über das Internet erfolgt.

Welcher Proxy ist am einfachsten? Caddy für automatisches TLS, Traefik für Docker-Integration.

Warum bricht die Antwort ab? Wahrscheinlich Timeout zu niedrig.

Geht Streaming durch den Proxy? Ja, wenn Buffering ausgeschaltet und Timeouts hoch sind.

Wie authentifiziere ich Benutzer? Am besten über Proxy-Middleware wie BasicAuth oder Authelia.

Quellen und weiterführende Literatur

Zusammenfassung: Ollama hinter einem Reverse-Proxy

Ein Reverse-Proxy macht Ollama sicher, erreichbar und einfach nutzbar. nginx, Traefik und Caddy sind etablierte Lösungen, die TLS, Authentifizierung und Logging bieten. Wichtig bei Ollama sind hohe Timeouts und deaktiviertes Buffering, damit Streaming funktioniert. Wer einen Proxy mit TLS und Zugangsschutz vorschaltet, vermeidet das Risiko einer offenen, ungeschützten API.

Zurück zum KI Blog
Share:

Ähnliche Beiträge