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 offfehlt. - Timeout:
proxy_read_timeoutzu niedrig. - Kein TLS: Unverschlüsselte Kommunikation.
- CORS-Fehler: Header fehlen.
- Schlechte Authentifizierung: BasicAuth-Passwort zu schwach.
- Falsche Weiterleitung: Pfad nicht korrekt.
Weiterführende Links und Infos
- BotServ.de Ollama Remote-Zugriff
- BotServ.de Docker Reverse Proxy
- BotServ.de Docker TLS-Zertifikate
- BotServ.de Ollama API-Fehlerbehebung
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
- nginx reverse proxy: https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/
- Caddy: https://caddyserver.com/docs/quick-starts/reverse-proxy
- Traefik: https://doc.traefik.io/traefik/getting-started/quick-start/
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.


