Zum Inhalt springen
Alle Systeme betriebsbereitKI-GlossarRegion Oberfrankenhostspezial.de
09571 873149 KI-Schnellcheck →
← Zurück zur Übersicht Tutorials

Ollama sucht bei ollama.com, vLLM 0.31 meldet sich beim Start: was in einem lokalen Stack wirklich lokal bleibt

Ollamas Websuche schickt die Suchanfrage an ollama.com – nur das Modell läuft lokal; seit Version 0.35.1 vom 29. September 2026 bis zu zehnmal pro Antwort. vLLM 0.31 vom 5. Oktober 2026 bringt 717 Commits, einen Weight-Cache-Daemon und neue Sicherheitsvorgaben, meldet aber weiterhin Systemdaten, wenn niemand es abschaltet. Dieses Tutorial zeigt, wie Sie messen, was Ihr Stack nach außen spricht, welche Schalter es gibt und wie ein Air-Gap-Transfer aussieht – und sagt ehrlich, für wen der Air-Gap zu viel ist.

Kategorie TutorialsStand 22.10.2026Lesezeit 18 Min.Quellen 11 Primärbelege
Das Wichtigste in Kürze
  • Ollamas Websuche geht als POST an https://ollama.com/api/web_search und braucht ein Ollama-Konto mit API-Schlüssel; lokal bleibt nur die Inferenz. Version 0.35.1 vom 29. September 2026 erlaubt bis zu zehn Suchen pro Antwort statt drei.
  • OLLAMA_NO_CLOUD=1 oder „disable_ollama_cloud": true in server.json schaltet Websuche und Cloud-Modelle ab; das Log bestätigt mit „Ollama cloud disabled: true".
  • vLLM 0.31.0 vom 5. Oktober 2026 sendet beim Start weiterhin Systemdaten, bis VLLM_NO_USAGE_STATS=1 oder DO_NOT_TRACK=1 gesetzt ist; HF_HUB_OFFLINE=1 und ein lokaler Modellpfad unterbinden den Hub-Zugriff.
  • Eine Egress-Inventur mit ss, tcpdump und einer nftables-Protokollregel zeigt in einer Stunde, welche Prozesse welche Ziele außerhalb des Hauses erreichen – und sie muss nach jedem Release wiederholt werden.
  • Ein vollständiger Air-Gap ist nur für geheime oder regulatorisch isolierte Datenklassen die richtige Wahl; für vertrauliche Daten genügt ein Stack mit bekannten, protokollierten und per Firewall begrenzten Außenverbindungen.
KI-Transparenzhinweis: Dieser Beitrag wurde teilweise mit Unterstützung von KI-Systemen erstellt und vor der Veröffentlichung redaktionell geprüft. Kennzeichnung gemäß EU-KI-Verordnung (Verordnung (EU) 2024/1689).

/01Was Ollama und vLLM in den letzten Wochen geändert haben

Zwei Werkzeuge tragen den größten Teil der lokalen Inferenz im Mittelstand: Ollama auf Arbeitsplätzen und kleinen Servern, vLLM auf GPU-Servern. Beide haben seit Ende September Versionen veröffentlicht, die die Frage „Was läuft hier eigentlich lokal?" neu stellen.

Ollama. Die Websuche als Werkzeug für Modelle gibt es seit dem 24. September 2025 – so datiert der Blogeintrag, der die Funktion eingeführt hat. Seitdem ist sie ausgebaut worden: Version 0.35.1 vom 29. September 2026 hebt die Zahl der Suchen pro Antwort von drei auf zehn. Version 0.35.0 vom Vortag bringt „Decision Models" über einen neuen Endpunkt /v1/systemone. Parallel läuft die 0.40er-Reihe: 0.40.0 vom 25. September 2026 macht MLX zur Standard-Laufzeit auf Apple Silicon; 0.40.1 vom 7. Oktober fügt dem lokalen Server laut Änderungsliste einen Proxy für die „cloud usage and balance APIs" hinzu und entfernt den Kontoschritt aus dem CLI-Onboarding; 0.40.2 vom 8. Oktober führt eine Hintergrund-Aktualisierung bereits heruntergeladener Modelle beim ersten Start ein; 0.40.3 vom 11. Oktober setzt genau diese Hintergrund-Aktualisierung wieder aus. Vier Releases in zwei Wochen, drei davon mit Änderungen daran, was der lokale Prozess von sich aus tut.

vLLM. Version 0.31.0 vom 5. Oktober 2026 bündelt laut Release Notes 717 Commits von 307 Beitragenden. Für Betreiber relevant: vllm preload startet einen Daemon, der quantisierte Gewichte im GPU-Speicher hält, sodass ein Neustart der Engine ohne erneutes Laden auskommt; experimentell gibt es Snapshots einer initialisierten Engine per CRIU. spekulatives Dekodieren mit Draft-Modell läuft jetzt auf dem neuen Model Runner V2. Zwei Sicherheitsänderungen betreffen jeden, der multimodale Modelle serviert: Anfrageparameter mm_processor_kwargs und media_io_kwargs werden standardmäßig abgelehnt, es sei denn, der Server startet mit --trust-request-mm-kwargs – eine Konsequenz aus Lücken wie der im Artikel zu CVE-2026-22778 beschriebenen. Entfernt wurde tokenizer_mode="slow"; --enforce-eager schaltet jetzt auch das JIT-Kernel-Warmup ab.

Nichts davon ist ein Skandal. Es ist der normale Lauf zweier aktiver Projekte. Aber wer einen Stack als „lokal" beschafft hat, sollte nach diesen Wochen prüfen, ob er das noch ist.

/02Wer sucht, wenn Ollama sucht

Die Websuche in Ollama ist technisch kein lokales Werkzeug. Die Dokumentation ist eindeutig: Die Anfrage geht als POST https://ollama.com/api/web_search an Ollamas Server, ebenso web_fetch für das Laden einzelner Seiten. Voraussetzung ist ein kostenloses Ollama-Konto und ein API-Schlüssel von ollama.com/settings/keys, gesetzt als OLLAMA_API_KEY oder im Authorization-Header. Der Parameter max_results steht standardmäßig auf 5, höchstens 10. Ollama spricht von einem „großzügigen kostenlosen Kontingent"; höhere Limits gibt es über ein Cloud-Abonnement.

Das Modell läuft dabei weiter lokal. Was das Haus verlässt, ist die Suchanfrage – und die formuliert das Modell aus dem Gespräch heraus. Fragt ein Sachbearbeiter den Assistenten nach dem Lieferstatus für Kunde Müller und das Modell beschließt, dazu zu suchen, steht „Lieferstatus Müller GmbH" in einer Anfrage an ollama.com. Die Datenschutzerklärung von Ollama (Stand März 2026) beschreibt, dass Cloud-Inhalte „transient" verarbeitet und nicht über die Bearbeitung hinaus gespeichert werden; die FAQ sagt für lokale Nutzung: „We don't see your prompts or data when you run locally." Beides kann stimmen und ändert nichts an der Architektur: Ein Modell mit Werkzeugaufruf entscheidet selbst, wann es das Werkzeug zieht, und die Anfrage ist eine Ableitung aus dem Prompt.

Dazu kommen die Cloud-Modelle. Seit Ollama Modelle mit dem Suffix :cloud anbietet, die nicht heruntergeladen werden, sondern auf Ollamas Servern laufen, kann ein Nutzer mit einem Tippfehler im Modellnamen – gemma4:cloud statt gemma4 – die gesamte Konversation nach außen geben. Die Cloud-Dokumentation sagt zudem: Für zuletzt genutzte Cloud-Modelle zeigen die Nutzungseinstellungen „upcoming retirements"; heruntergeladene lokale Modelle seien davon nicht betroffen. Das ist der ganze Unterschied in einem Satz.

Merksatz: „Lokal" ist keine Eigenschaft des Werkzeugs, sondern eine Eigenschaft der Konfiguration. Ollama ohne Konto ist lokal; Ollama mit API-Schlüssel ist ein Client für einen Cloud-Dienst mit lokalem Modell davor.

/03Inventar: was ein „lokaler" Stack nach außen meldet

Die Websuche ist der sichtbarste Fall, aber nicht der einzige. Die folgende Tabelle listet, was in einem typischen Stack aus Ollama, vLLM, Hugging-Face-Bibliotheken und einer Chat-Oberfläche Verbindungen nach außen aufbaut – mit der Quelle, aus der die Abschaltung hervorgeht.

Verbindungen nach außen in einem On-Premise-Inferenzstack (Stand Dokumentation 11.10.2026)
KomponenteVerbindung nach außenAbschaltbar?Befehl / Einstellung
Ollama: Modell-DownloadHTTPS zu Ollamas Registry beim ollama pull (FAQ: „Ollama pulls models from the Internet", nur HTTPS)Nicht nötig im Betrieb; über Proxy lenkbarHTTPS_PROXY=https://proxy.firma:3128; im Air-Gap: Modelle vorab ziehen, OLLAMA_MODELS auf Transferverzeichnis
Ollama: Websuche, Web-FetchPOST https://ollama.com/api/web_search und /api/web_fetch, mit API-SchlüsselJaOLLAMA_NO_CLOUD=1 oder "disable_ollama_cloud": true in ~/.ollama/server.json; Log zeigt Ollama cloud disabled: true
Ollama: Cloud-Modelle (:cloud)Gesamte Anfrage an ollama.comJa, dieselbe EinstellungOLLAMA_NO_CLOUD=1; kein API-Schlüssel hinterlegen
Ollama: Nutzungs-/Guthaben-Proxy (0.40.1)Server reicht Cloud-Nutzungsabfragen durchMit Cloud-Abschaltung gegenstandslosOLLAMA_NO_CLOUD=1
Ollama: Desktop-AppLädt auf macOS und Windows Updates automatisch; Datenschutzerklärung nennt „limited device and usage metadata (such as app version and request counts)"Teilweise (Linux-Server: nur Installationsskript)Auf Servern Linux-Binary ohne App; Update nur per install.sh oder Paket
vLLM: NutzungsstatistikBeim Start Systemdaten (GPU-Typ, Speicher, Modellarchitektur, Version, Quantisierung, TP-Grad)JaVLLM_NO_USAGE_STATS=1 oder DO_NOT_TRACK=1 oder Datei ~/.config/vllm/do_not_track
vLLM: Modell-DownloadHTTPS zu huggingface.co bei Modellnamen statt Pfad; Versions-Check auch bei gecachten DateienJaHF_HUB_OFFLINE=1 und --model /pfad
Hugging-Face-BibliothekenTelemetrie der Bibliotheken; hf-CLI prüft höchstens einmal täglich PyPI auf neue VersionJaHF_HUB_DISABLE_TELEMETRY=1, HF_HUB_DISABLE_UPDATE_CHECK=1, HF_HUB_DISABLE_IMPLICIT_TOKEN=1
Chat-Oberfläche mit WebsucheZum konfigurierten SuchanbieterJa – oder auf eigenen Suchdienst lenkenOpen WebUI: WEB_SEARCH_ENGINE=searxng, SEARXNG_QUERY_URL=http://searxng:8080/search
Container-ImagesRegistry-Zugriff beim pullNicht nötig im BetriebImages per docker save transferieren; interne Registry

Was in der Tabelle fehlt, ist genauso wichtig: die Werkzeuge, die Ihr Agent selbst aufruft. Ein MCP-Server, der „nur" einen Wechselkurs holt, telefoniert nach außen; ein RAG-Indexer, der URLs aus Dokumenten nachlädt, ebenfalls. Wie man diese Klasse über ein Gateway einfängt, steht im Artikel zur Egress-Kontrolle für MCP.

/04Egress-Inventur: ss, tcpdump, Proxy-Log

Die Tabelle sagt, was die Dokumentation verspricht. Was Ihr Server tut, sagt nur eine Messung. Drei Werkzeuge reichen, und sie sind auf jedem Linux-Server vorhanden oder in einer Minute installiert.

# 1) Momentaufnahme: welche Prozesse halten ausgehende HTTPS-Verbindungen?
ss -tnp state established '( dport = :443 )'

# 2) Mitschnitt über eine Stunde Betrieb: Ziele außerhalb des eigenen Netzes
sudo tcpdump -ni eth0 -l 'tcp port 443 and not net 10.0.0.0/8 and not net 192.168.0.0/16' \
  | awk '{print $5}' | sed 's/\.[0-9]*:$//' | sort | uniq -c | sort -rn | head -30

# 3) DNS verrät die Namen, auch wenn TLS den Inhalt verbirgt
sudo tcpdump -ni eth0 -l 'udp port 53' | grep -oE 'A\? [^ ]+' | sort | uniq -c | sort -rn | head -30

# 4) Wenn ein Proxy Pflicht ist: alles, was ihn umgeht, ist verdächtig
journalctl -u ollama --since "1 hour ago" | grep -iE 'ollama\.com|cloud|web_search'

Führen Sie die Messung in drei Zuständen durch: Leerlauf, normaler Betrieb mit echten Nutzern, und einmal gezielt nach ollama pull beziehungsweise einem Modellwechsel. Der Leerlauf zeigt Telemetrie und Update-Checks; der Betrieb zeigt Werkzeugaufrufe; der Modellwechsel zeigt Registry- und Hub-Zugriffe. Notieren Sie je Ziel den Prozess, der die Verbindung hält – ss -p liefert ihn – und ordnen Sie ihn einer Zeile der Tabelle zu. Was sich nicht zuordnen lässt, ist ein Fund.

Wer es dauerhaft will, schreibt die Regel in die Firewall statt in den Kalender. Mit nftables lässt sich der Benutzer ollama (der Standard-Dienstbenutzer des Linux-Installers) auf interne Ziele beschränken und jeder Versuch nach außen protokollieren:

sudo nft add table inet egress
sudo nft add chain inet egress out '{ type filter hook output priority 0; policy accept; }'
sudo nft add rule inet egress out meta skuid ollama ip daddr != 10.0.0.0/8 \
  tcp dport { 80, 443 } log prefix "ollama-egress " drop
sudo nft list chain inet egress out

Der Vorteil gegenüber dem Vertrauen in eine Umgebungsvariable: Die Regel gilt auch nach dem nächsten Update, das vielleicht eine neue Verbindung einführt – wie 0.40.1 den Nutzungs-Proxy. Die Protokollzeile sagt Ihnen dann, dass sich etwas geändert hat.

Die Inventur ist eine Stunde Arbeit; sie nach jedem Release zu wiederholen und die Firewall-Regeln mitzuziehen, ist Betrieb. KI-Administration — Betrieb und Wartung Ihres Inferenzstacks mit Egress-Regeln, Update-Prüfung und Protokoll je Release.

/05Ollama: Cloud und Websuche abschalten

Die Abschaltung ist dokumentiert und einfach. Die FAQ nennt zwei gleichwertige Wege; auf einem Server mit systemd gehört die Variable in die Dienstdefinition, nicht in die Shell eines Administrators.

# Weg 1: Umgebungsvariable im systemd-Dienst
sudo systemctl edit ollama.service
# im Editor:
[Service]
Environment="OLLAMA_NO_CLOUD=1"
Environment="OLLAMA_HOST=127.0.0.1:11434"
Environment="OLLAMA_MODELS=/srv/ollama/models"
Environment="HTTPS_PROXY=https://proxy.firma.local:3128"

sudo systemctl daemon-reload && sudo systemctl restart ollama
journalctl -u ollama -b | grep -i 'cloud disabled'      # erwartet: Ollama cloud disabled: true

# Weg 2: Konfigurationsdatei des Dienstbenutzers
sudo -u ollama tee /usr/share/ollama/.ollama/server.json <<'EOF'
{ "disable_ollama_cloud": true }
EOF

Drei Hinweise aus der Praxis. Erstens: OLLAMA_HOST bleibt auf 127.0.0.1, solange kein Reverse-Proxy mit Authentifizierung davorsteht; die FAQ beschreibt die Nginx-Variante. Ein offener Port 11434 ist seit den Vorfällen im LLMjacking-Artikel und der Lücke aus CVE-2026-7482 keine Nachlässigkeit mehr, sondern ein Angebot. Zweitens: Die FAQ warnt ausdrücklich davor, HTTP_PROXY zu setzen – Ollama lädt nur über HTTPS, und die Variable kann Client-Verbindungen zum Server stören. Drittens: Prüfen Sie nach der Abschaltung, dass kein Nutzer einen eigenen API-Schlüssel in seiner Shell hat; OLLAMA_API_KEY in einem Nutzerprofil reicht für direkte Aufrufe an ollama.com/api/web_search, am lokalen Server vorbei. Die nftables-Regel aus Abschnitt /04 fängt auch das.

/06vLLM 0.31 offline: Telemetrie, Hub, lokaler Modellpfad

vLLM hat keine Websuche und keine Cloud-Modelle; seine Außenverbindungen sind Nutzungsstatistik und Hugging-Face-Hub. Die Nutzungsstatistik sammelt laut Dokumentation Systemdaten – eine zufällige UUID, Anbieter, CPU-Zahl und -Typ, Arbeitsspeicher, Architektur, Plattform, GPU-Zahl, GPU-Typ und -Speicher, Modellarchitektur, vLLM-Version und Einstellungen wie Quantisierung und Tensor-Parallelität. Keine Prompts. Trotzdem gehört sie auf einem Server, der als lokal beschafft wurde, aus. Die Dokumentation nennt drei gleichwertige Wege.

# Gewichte einmalig und versioniert holen (auf einer Maschine mit Netz)
hf download Qwen/Qwen3-27B --revision <voller-commit-hash> --local-dir /models/qwen3-27b@2026-10
sha256sum /models/qwen3-27b@2026-10/*.safetensors > /models/qwen3-27b@2026-10/SHA256SUMS

# Serving ohne Netz: lokaler Pfad, Hub offline, keine Statistik
docker run -d --name vllm --gpus all -p 127.0.0.1:8000:8000 \
  -e HF_HUB_OFFLINE=1 -e VLLM_NO_USAGE_STATS=1 -e DO_NOT_TRACK=1 \
  -e HF_HUB_DISABLE_TELEMETRY=1 -e HF_HUB_DISABLE_UPDATE_CHECK=1 \
  -v /models:/models:ro \
  vllm/vllm-openai:v0.31.0 \
  --model /models/qwen3-27b@2026-10 --served-model-name assistent-lokal \
  --max-model-len 65536

# Gegenprobe: der Container darf nichts auflösen und nichts erreichen
docker exec vllm sh -c 'getent hosts huggingface.co || echo "kein DNS: gut"'

Der entscheidende Schalter ist --model /pfad statt --model Qwen/Qwen3-27B. Mit einem Repo-Namen versucht die Hub-Bibliothek einen Versions-Check, auch wenn alle Dateien im Cache liegen; HF_HUB_OFFLINE=1 unterbindet den Aufruf, aber erst der Pfad macht den Server unabhängig vom Cache-Layout. DO_NOT_TRACK=1 wirkt laut Hugging-Face-Dokumentation auf das gesamte Python-Ökosystem (transformers, diffusers, gradio) und laut vLLM-Dokumentation auch auf vLLM – eine Variable für beides.

Mit 0.31 kommt vllm preload dazu. Der Daemon hält quantisierte Gewichte im GPU-Speicher, sodass ein Engine-Neustart nach einer Konfigurationsänderung nicht wieder Minuten lädt. In einem Air-Gap ist das besonders nützlich, weil dort jeder Neustart ohne Hub-Zugriff auskommen muss und die Ladezeit großer Modelle von der lokalen Platte kommt. Wie der Grundaufbau eines OpenAI-kompatiblen Servers aussieht, steht in den Vertiefungen OpenAI-API selbst hosten und Llama auf vLLM: Setup in 40 Minuten; dieser Abschnitt ergänzt nur die Offline-Schalter.

/07Air-Gap: Gewichte vorab ziehen, prüfen, einspielen

Ein Air-Gap-Betrieb ist kein Serverzustand, sondern ein Prozess: Alles, was der Server braucht, kommt über eine kontrollierte Transferstation hinein, und nichts geht hinaus. Für einen Inferenzstack sind das vier Artefaktklassen – Modellgewichte, Container-Images, Python-Pakete und Konfiguration –, und für jede gilt dasselbe Muster: auf der Netzseite holen, Prüfsumme bilden, übertragen, Prüfsumme vergleichen, einspielen.

# Netzseite: Artefakte sammeln
hf download Qwen/Qwen3-27B --revision <voller-commit-hash> --local-dir transfer/qwen3-27b@2026-10
docker pull vllm/vllm-openai:v0.31.0 && docker save vllm/vllm-openai:v0.31.0 | zstd -o transfer/vllm-0.31.0.tar.zst
ollama pull qwen3.8 && tar -C /usr/share/ollama/.ollama -cf transfer/ollama-models.tar models
(cd transfer && find . -type f -not -name SHA256SUMS -exec sha256sum {} + > SHA256SUMS)

# Air-Gap-Seite: prüfen, dann einspielen
(cd /mnt/transfer && sha256sum --check SHA256SUMS --quiet) && echo "Transfer unversehrt"
zstd -dc /mnt/transfer/vllm-0.31.0.tar.zst | docker load
tar -C /usr/share/ollama/.ollama -xf /mnt/transfer/ollama-models.tar
systemctl restart ollama

Zwei Details, die in der Praxis Ärger machen. Erstens: Ollama speichert Modelle als Manifeste plus Blobs; der Tarball muss beide enthalten, sonst zeigt ollama list das Modell, aber ollama run scheitert. Zweitens: Die Hintergrund-Aktualisierung aus 0.40.2 wandelt Modelle beim ersten Start um und legt Sicherungskopien an – in 0.40.3 ist sie ausgesetzt. In einem Air-Gap mit knappem Plattenplatz prüfen Sie vor dem Versionssprung, ob die Funktion wieder aktiv ist, und planen den doppelten Speicherbedarf ein. Die Release Notes sind in diesem Fall Teil des Change-Managements, nicht Lektüre.

Für die Hardware heißt Air-Gap vor allem: kein Nachladen. Was nicht auf der Platte liegt, läuft nicht. Ein ki·spezial System mit 192 GB VRAM im Vollausbau trägt ein 27B-Modell in 4-Bit-Quantisierung neben einem Embedding-Modell, einem Reranker und einem zweiten Kandidatenmodell für Tests; eine 24-GB-Karte trägt eines davon. Welche Modellstände in welchem Transferzyklus eingespielt werden, gehört in einen Plan, der vor dem ersten Air-Gap-Tag steht. Wie ein RAG-System in dieser Umgebung aussieht, haben wir im Artikel zum air-gapped Agentic RAG beschrieben.

Ein Air-Gap scheitert selten an der Technik und oft am Transferprozess – an fehlenden Prüfsummen, veralteten Images, einem Modell, das niemand nachgezogen hat. Air-Gapped KI — vollständig offline betriebene Systeme mit definiertem Transferzyklus, auf Ihrer Hardware oder im Rechenzentrum in Coburg.

/08Websuche behalten, aber selbst suchen: SearXNG statt Hersteller-API – und wann der Air-Gap die falsche Wahl ist

Ehrlich: Die Websuche ist für viele Anwendungsfälle nützlich. Ein Assistent, der zu einer Norm die aktuelle Fassung findet, zu einem Lieferanten die Insolvenzmeldung oder zu einer Fehlermeldung den Herstellereintrag, ist mehr wert als einer, der 2024 stehen geblieben ist. Die Entscheidung lautet deshalb nicht „Websuche ja oder nein", sondern „wer sucht". Ein eigener Metasuchdienst beantwortet die Frage so, dass die Anfrage zwar das Haus verlässt – zu den Suchmaschinen –, aber nicht an einen KI-Anbieter geht, nicht an ein Konto gebunden ist und keinen API-Schlüssel braucht, der in Nutzerprofilen landet.

SearXNG ist das verbreitete Open-Source-Werkzeug dafür. Die Installation per Container ist in der Projektdokumentation beschrieben; für Open WebUI genügen danach vier Umgebungsvariablen. Wichtig ist das JSON-Format in der SearXNG-Konfiguration – ohne es antwortet SearXNG der Oberfläche mit 403.

# SearXNG starten (Dokumentation: docker run)
docker run --name searxng -d -p 127.0.0.1:8888:8080 \
  -v "./config/:/etc/searxng/" -v "./data/:/var/cache/searxng/" \
  docker.io/searxng/searxng:latest

# config/settings.yml – JSON für die Oberfläche freischalten
search:
  formats:
    - html
    - json

# Open WebUI – Suche auf den eigenen Dienst lenken
ENABLE_WEB_SEARCH=True
WEB_SEARCH_ENGINE=searxng
WEB_SEARCH_RESULT_COUNT=3
SEARXNG_QUERY_URL=http://searxng:8080/search

Was der eigene Suchdienst nicht löst: Die Suchmaschinen dahinter sehen die Anfragen weiterhin, nur ohne Ihr Konto und gemischt mit denen aller anderen Nutzer der Instanz. Und das Modell entscheidet nach wie vor selbst, wann es sucht und was es in die Anfrage schreibt. Wer das nicht will, schaltet die Suche für die betroffenen Rollen oder Datenklassen ab – nicht für alle.

Womit die Gegenseite benannt ist: Ein vollständiger Air-Gap ist für die meisten Mittelständler die falsche Wahl. Er kostet Aktualität (kein Nachladen, keine Suche), Betriebsaufwand (jeder Modellwechsel ist ein Transfer) und Komfort (keine Cloud-Modelle als Rückfallebene für Spitzenlasten). Er lohnt sich dort, wo Daten das Netz nicht berühren dürfen – Konstruktionsdaten mit Geheimhaltungsvereinbarung, Patientendaten, Verschlusssachen, KRITIS-Steuerungsnetze. Für ein Haus, das Angebote schreibt und Rechnungen prüft, reicht ein Stack, dessen Außenverbindungen bekannt, auf eine Allowlist beschränkt und protokolliert sind. Das ist nicht „fast Air-Gap", sondern ein anderes, meist passenderes Schutzziel.

/09Entscheidung nach Datenklasse

Die Frage „Was bleibt lokal?" hat keine Antwort für den ganzen Betrieb, nur je Datenklasse. Die meisten Mittelständler kommen mit drei Klassen aus.

Klasse A – öffentlich oder intern ohne Personenbezug (Produktdokumentation, Normen, allgemeine Recherche): Websuche erlaubt, über den eigenen SearXNG. Cloud-Modelle als Rückfallebene zulässig, wenn das Gateway sie nur für diese Klasse freigibt. Telemetrie trotzdem aus – nicht aus Risikogründen, sondern weil ein Server, der grundlos telefoniert, die Inventur verwässert.

Klasse B – vertraulich (Kundendaten, Angebote, Personal, Verträge): Inferenz ausschließlich lokal, Websuche aus oder auf eine Allowlist interner Quellen beschränkt, OLLAMA_NO_CLOUD=1 gesetzt und per Firewall erzwungen, vLLM mit lokalem Pfad und Offline-Schaltern. Modellwechsel über gepinnte Versionen. Außenverbindungen: Proxy für Updates in einem Wartungsfenster, sonst nichts. Das ist für die Mehrheit der Anwendungsfälle der richtige Zustand, und er kostet keinen Komfort, den die Nutzer vermissen würden.

Klasse C – geheim oder regulatorisch isoliert: Air-Gap mit Transferstation nach Abschnitt /07, eigener Transferzyklus für Modelle und Images, kein Proxy, keine Suche. Nur für die Systeme, die diese Daten verarbeiten – nicht für das ganze Haus.

Die Zuordnung treffen nicht die Administratoren, sondern die Fachbereiche mit dem Datenschutzbeauftragten; die Administratoren setzen sie um und messen sie nach – mit den Befehlen aus Abschnitt /04, nach jedem Release. Ollama hat in zwei Wochen vier Versionen veröffentlicht, vLLM eine mit 717 Commits. Die Inventur vom September gilt im Oktober nicht mehr automatisch.

Welche Klasse welche Hardware braucht, lässt sich vorab klären – mit einem Proof of Concept auf unserer Hardware, 2 bis 4 Wochen, kostenlos, mit Ihren Daten und Ihren Egress-Regeln. KI On-Premise — GPU-Server ab rund 15.000 €, lokale Sprachmodell, Model Serving mit vLLM oder Ollama, Außenverbindungen nach Ihrer Vorgabe.

Das ist keine Formsache: Ein Stack, der „lokal" heißt, aber eine Websuche mit Hersteller-Konto, Cloud-Modelle per Tippfehler und Telemetrie beim Start mitbringt, ist in der Datenschutz-Folgenabschätzung etwas anderes als das, was der Fachbereich bestellt hat. Die Differenz steht nirgends im Angebot – sie steht in ss -tnp.

/10Quellen & Primärbelege

Alle Zahlen, Einordnungen und Quellenangaben in diesem Beitrag wurden vor der Veröffentlichung gegen die folgenden Primärquellen geprüft.

  1. Ollama: Releases (GitHub) Versionen und Daten: v0.35.0 (28.09.2026, Decision Models über /v1/systemone), v0.35.1 (29.09.2026, bis zu zehn Websuchen pro Antwort statt drei), v0.40.0 (25.09.2026, MLX als Standard auf Apple Silicon), v0.40.1 (07.10.2026, Proxy für Cloud-Nutzungs- und Guthaben-APIs, Kontoschritt aus CLI-Onboarding entfernt), v0.40.2 (08.10.2026, Hintergrund-Aktualisierung von Modellen), v0.40.3 (11.10.2026, Hintergrund-Aktualisierung ausgesetzt); abgerufen am 11.10.2026.
  2. Ollama: Web search (Blog, 24.09.2025) Einführung der Websuche über https://ollama.com/api/web_search mit API-Schlüssel, kostenloses Kontingent, höhere Limits über Ollama Cloud, Empfehlung von rund 32.000 Token Kontext; abgerufen am 11.10.2026.
  3. Ollama: Web Search (Dokumentation) Endpunkte POST https://ollama.com/api/web_search und /api/web_fetch, Konto und API-Schlüssel erforderlich, max_results Standard 5 und Maximum 10; abgerufen am 11.10.2026.
  4. Ollama: FAQ (Dokumentation) Abschaltung der Cloud-Funktionen über OLLAMA_NO_CLOUD=1 oder disable_ollama_cloud in server.json mit Logzeile „Ollama cloud disabled: true"; HTTPS_PROXY für Modell-Downloads, Warnung vor HTTP_PROXY; automatische Updates auf macOS und Windows; Umgebungsvariablen per systemctl edit; Aussage zu lokalen Prompts; abgerufen am 11.10.2026.
  5. Ollama: Cloud models (Dokumentation) Cloud-Modelle mit Suffix :cloud laufen auf ollama.com ohne Download, Hinweis auf Abkündigungen in den Nutzungseinstellungen, lokale Modelle nicht betroffen; abgerufen am 11.10.2026.
  6. Ollama: Privacy Policy (Stand März 2026) Erhebung von „limited device and usage metadata (such as app version and request counts)", keine Erhebung lokaler Prompts und Antworten, transiente Verarbeitung von Cloud-Inhalten; abgerufen am 11.10.2026.
  7. vLLM: Release v0.31.0 (05.10.2026) 717 Commits von 307 Beitragenden; vllm preload und CRIU-Snapshots; Draft-Modell-Spekulation auf Model Runner V2; --trust-request-mm-kwargs; Entfernung von tokenizer_mode="slow"; --enforce-eager ohne JIT-Warmup; Docker-Image vllm/vllm-openai:v0.31.0; abgerufen am 11.10.2026.
  8. vLLM: Usage Stats Collection (Dokumentation) Erhobene Felder (uuid, provider, CPU, Speicher, Plattform, GPU-Zahl und -Typ, Modellarchitektur, Version, Quantisierung, Tensor-Parallelität) und die drei Abschaltwege VLLM_NO_USAGE_STATS=1, DO_NOT_TRACK=1, ~/.config/vllm/do_not_track; abgerufen am 11.10.2026.
  9. Hugging Face: Environment variables (huggingface_hub) HF_HUB_OFFLINE, HF_HUB_DISABLE_TELEMETRY, DO_NOT_TRACK für das gesamte HF-Python-Ökosystem, HF_HUB_DISABLE_UPDATE_CHECK (PyPI-Abfrage höchstens einmal täglich), HF_HUB_DISABLE_IMPLICIT_TOKEN; abgerufen am 11.10.2026.
  10. SearXNG: Installation with Docker (Dokumentation) docker-run-Befehl mit Image docker.io/searxng/searxng:latest, Port 8080, Konfigurationsverzeichnis /etc/searxng; abgerufen am 11.10.2026.
  11. Open WebUI: SearXNG als Suchanbieter (Dokumentation) Umgebungsvariablen ENABLE_WEB_SEARCH, WEB_SEARCH_ENGINE=searxng, SEARXNG_QUERY_URL; JSON-Format in settings.yml, sonst 403; abgerufen am 11.10.2026.

/11Häufige Fragen

Ist Ollama ohne weitere Einstellung ein lokales Werkzeug?

Die Inferenz ja. Websuche, Web-Fetch und Cloud-Modelle laufen über ollama.com und setzen ein Konto mit API-Schlüssel voraus. Ohne Schlüssel sind diese Funktionen nicht nutzbar; mit OLLAMA_NO_CLOUD=1 sind sie abgeschaltet, auch wenn ein Nutzer einen Schlüssel hat. Modell-Downloads laufen über HTTPS, im Air-Gap werden sie vorab übertragen.

Sieht Ollama unsere Prompts, wenn die Websuche an ist?

Die Suchanfrage, die das Modell formuliert, geht an ollama.com; die Datenschutzerklärung beschreibt eine transiente Verarbeitung ohne Speicherung über die Anfrage hinaus. Der Prompt selbst bleibt lokal. Da das Modell die Suchanfrage aus dem Gespräch ableitet, kann sie vertrauliche Begriffe enthalten – das ist der Grund, die Funktion je Datenklasse zu entscheiden.

Was sendet vLLM genau?

Laut Dokumentation Systemdaten beim Start: eine zufällige Kennung, Anbieter, CPU, Arbeitsspeicher, Plattform, GPU-Zahl und -Typ, GPU-Speicher, Modellarchitektur, vLLM-Version und Einstellungen wie Quantisierung und Tensor-Parallelität. Keine Prompts und keine Antworten. Abschalten mit VLLM_NO_USAGE_STATS=1, DO_NOT_TRACK=1 oder der Datei ~/.config/vllm/do_not_track.

Reicht HF_HUB_OFFLINE=1 für einen Betrieb ohne Internet?

Für die Hugging-Face-Bibliotheken ja: Es unterbindet alle HTTP-Aufrufe an den Hub, auch den Versions-Check gecachter Dateien. Zusätzlich sollte vLLM mit einem lokalen Modellpfad statt einem Repo-Namen starten, und die Gewichte müssen vorher vollständig und mit geprüfter Prüfsumme auf der Platte liegen. Container-Images und Python-Pakete brauchen denselben Transferweg.

Können wir die Websuche behalten und trotzdem nichts an einen KI-Anbieter geben?

Ja, mit einem eigenen Metasuchdienst wie SearXNG, an den die Chat-Oberfläche ihre Suchanfragen schickt. Die Anfragen gehen dann an die Suchmaschinen, aber ohne Konto, ohne API-Schlüssel und nicht an einen Modellanbieter. Die Suchmaschinen sehen die Anfragen weiterhin; für vertrauliche Datenklassen bleibt die Suche deshalb aus.

Brauchen wir einen Air-Gap?

In den meisten Fällen nicht. Ein Air-Gap lohnt sich für Daten, die das Netz nicht berühren dürfen – Konstruktionsdaten unter Geheimhaltung, Patientendaten, Verschlusssachen, Steuerungsnetze. Für vertrauliche Geschäftsdaten reicht ein Stack, dessen Außenverbindungen bekannt, per Firewall begrenzt und protokolliert sind. Der Air-Gap kostet Aktualität und jeden Modellwechsel als Transferprojekt.

Herausgeber

ki·spezial-Redaktion — ki·spezial ist die On-Premise-KI-Marke der HostSpezial GmbH, Lichtenfels, zertifiziert nach ISO/IEC 27001:2024. Fachliche Prüfung und Freigabe dieses Beitrags liegen bei der Redaktion. Impressum · Kontakt

MEHRVerwandte Artikel

Weiterlesen zum gleichen Thema.

$ related --articles
// nächster schritt

Wissen, was Ihr Stack nach außen spricht – vor dem nächsten Release.

Wir nehmen Ihren Inferenzstack mit Ihren Datenklassen in Betrieb: Egress-Inventur, Abschalter, Firewall-Regeln und – wo nötig – ein Air-Gap mit Transferzyklus. Zuerst als Proof of Concept auf unserer Hardware, 2 bis 4 Wochen, kostenlos. Einstieg über KI On-Premise; vollständig isolierte Systeme unter Air-Gapped KI.

Beratung und Betrieb aus Lichtenfels · Teil der HostSpezial GmbH

$ nft list chain inet egress out | grep -c drop
Proof of Concept anfragen → 09571 873149 Termin vereinbaren
30 Minuten, unverbindlich und direkt mit einem technischen Ansprechpartner. Drei Sätze zur Ausgangslage genügen; aus der Anfrage entsteht keine Verpflichtung.