[email protected]

Anleitung · Lokale KI für Unternehmen

SearXNG selbst betreiben: Docker, Absicherung und Open WebUI

Hinweis zum Inhalt: Versionen, Befehle und Preise können sich ändern. Bitte prüfen Sie kritische Schritte vor dem produktiven Einsatz eigenständig. Dieser Leitfaden ersetzt keine individuelle Fach-, Rechts- oder Steuerberatung.

SearXNG betreiben lassen oder Websuche für KI-Chats einrichten? WZ-IT richtet SearXNG als private Metasuche ein und betreibt sie: Engines, Zugriffsschutz, Updates und Monitoring. Unabhängig davon enthält die KI-Plattform mit Open WebUI (ab 149,90 € netto im Monat) eine Websuche im Chat. SearXNG Hosting & Betrieb ansehen

SearXNG ist eine freie Metasuchmaschine: Sie nimmt eine Suchanfrage entgegen, gibt sie an konfigurierte Suchmaschinen weiter und führt die Ergebnisse zusammen. Unternehmen nutzen sie, um Mitarbeitenden oder KI-Chats eine Websuche bereitzustellen, ohne dass die Anfragen unter einem Nutzerprofil bei einem Anbieter landen. Dieser Leitfaden beschreibt Installation, Konfiguration, Absicherung und die Anbindung an Open WebUI. Die Konfigurationsschritte wurden am 28.10.2026 mit dem aktuellen Container-Image nachvollzogen, die Testbedingungen stehen unter „Stand und Methodik“. Stand Oktober 2026.

Inhaltsverzeichnis

Was SearXNG ist und was nicht

SearXNG führt die Ergebnisse anderer Suchmaschinen zusammen und speichert dabei keine Informationen über seine Nutzer (Projektdokumentation). Es betreibt keinen eigenen Webindex. Daraus folgen zwei Eigenschaften, die den Betrieb bestimmen: Die Ergebnisqualität ist die Summe dessen, was die aktivierten Engines liefern, und jede Anfrage geht an diese Engines weiter.

Open WebUI empfiehlt für die stärksten Suchergebnisse gehostete Such-APIs. SearXNG bleibt sinnvoll, wenn eine selbst gehostete, datenschutzfreundliche Metasuche gewünscht ist, wobei die Ergebnisqualität stark von den vorgelagerten Engines, Ratenlimits und der Instanzkonfiguration abhängt (Open-WebUI-Dokumentation).

Lizenz AGPL-3.0: Folgen für Nutzung und Änderungen

SearXNG steht unter der GNU Affero General Public License Version 3 (LICENSE im Repository). Für den Betrieb im Unternehmen gilt:

Vorgang Folge laut LICENSE
Unverändertes Programm betreiben, auch geschäftlich Abschnitt 2 bestätigt die „unlimited permission to run the unmodified Program“
Konfiguration anpassen (settings.yml, limiter.toml, Umgebungsvariablen) Das ist Konfiguration, der Programmcode bleibt unverändert; Abschnitt 13 knüpft an die Änderung des Programms an
Programmcode ändern und Nutzern über das Netzwerk bereitstellen Abschnitt 13: Die geänderte Fassung muss allen Nutzern, die über das Netzwerk mit ihr interagieren, den Quelltext dieser Fassung anbieten
Kopien oder Images weitergeben Abschnitte 4 bis 6: Lizenztext und Hinweise beilegen; wird das Programm ohne Quelltext weitergegeben, gilt Abschnitt 6 (Quelltext mitliefern oder anbieten); bei Änderungen kommen die Bedingungen aus Abschnitt 5 hinzu

Open WebUI und andere Clients sprechen SearXNG über HTTP an. Ob sich Lizenzpflichten auf angrenzende Software erstrecken, ist eine Rechtsfrage des Einzelfalls. Dieser Abschnitt ist keine Rechtsberatung; wer Code ändert oder Images weitergibt, lässt die Lage vorab prüfen.

Installation mit Docker Compose

Die Projektdokumentation empfiehlt Compose als Standardweg (Installation container):

mkdir -p ./searxng/core-config/ && cd ./searxng/
curl -fsSL \
  -O https://raw.githubusercontent.com/searxng/searxng/master/container/docker-compose.yml \
  -O https://raw.githubusercontent.com/searxng/searxng/master/container/.env.example
cp .env.example .env

In der .env die Veröffentlichung des Ports begrenzen (Begründung im Abschnitt Absicherung), dann starten:

printf 'SEARXNG_HOST=127.0.0.1\nSEARXNG_PORT=8080\n' >> .env
docker compose up -d

Die Vorlage startet zwei Dienste: core (SearXNG) und valkey (Datenbank für den Limiter). Zwei Speicherorte müssen erhalten bleiben: das Verzeichnis core-config (Bind-Mount nach /etc/searxng, Konfiguration) und das Volume core-data (nach /var/cache/searxng). Beim ersten Start legt der Container die settings.yml aus einer Vorlage an. Sie enthält use_default_settings: true, einen zufällig erzeugten secret_key und image_proxy: true. Der Standardwert ultrasecretkey führt beim Start zum Abbruch.

settings.yml: die Einstellungen, die zählen

Mit use_default_settings: true genügt es, Abweichungen von den Standardwerten einzutragen. Beispiel für eine Instanz als Suchbackend für KI:

use_default_settings:
  engines:
    keep_only:
      - brave
      - duckduckgo
      - wikipedia

server:
  secret_key: "…"      # vom Container erzeugt, nicht ändern
  image_proxy: true

search:
  default_lang: "de"
  formats:
    - html
    - json

general:
  open_metrics: "langes-zufälliges-passwort"
Einstellung Wirkung
search.formats Aktiviert JSON für die API-Nutzung. Standard ist nur html, ein nicht aktiviertes Format liefert HTTP 403 (Search API)
engines.keep_only oder remove Wählt die Engines; eine deaktivierte Engine wird mit einem Eintrag - name: bing und disabled: false unter engines: eingeschaltet (settings.yml). Im Standard sind rund 80 von 352 Engines aktiv, darunter DuckDuckGo, Brave und Wikipedia; die allgemeinen Web-Engines von Google und Bing sind deaktiviert (settings.yml vom 28.10.2026). Die Liste ändert sich mit der Version
server.limiter, valkey.url Bot-Schutz, benötigt Valkey. Als Umgebungsvariablen SEARXNG_LIMITER und SEARXNG_VALKEY_URL
search.suspended_times Sperrdauer einer Engine nach Fehlern, Standard 3.600 s nach CAPTCHA, 180 s nach Access Denied und Too Many Requests; Sonderfälle: Cloudflare-CAPTCHA 15 Tage, reCAPTCHA 7 Tage
outgoing.request_timeout, outgoing.proxies Timeout der Abfragen an die Engines (Standard 3 s) und optionale Proxys für ausgehende Anfragen (outgoing)
general.open_metrics Passwort für den Metrik-Endpunkt /metrics (general)

Absicherung: Port, Zugriff und Limiter

Port. Ohne SEARXNG_HOST veröffentlicht die Vorlage den Port auf allen Adressen. Veröffentlichte Docker-Ports sind auch von außen erreichbar (Docker: Port publishing) und umgehen die Regeln von ufw (Docker: Packet filtering). Mit 127.0.0.1 ist der Port ab Docker Engine 28.0.0 nur auf dem Host erreichbar, in älteren Versionen erreichen Rechner im selben L2-Segment auch an localhost veröffentlichte Ports. Open WebUI im selben Compose-Netz braucht keinen veröffentlichten Port: Der Dienstname core löst im Netz auf, die URL lautet http://core:8080/search.

Zugriff. Für Nutzer außerhalb des Hosts gehört ein Reverse Proxy oder VPN mit Authentifizierung davor, die Header-Konfiguration für NGINX und Apache steht in der Projektdokumentation. Der Limiter begrenzt Anfrageraten und ist keine Anmeldung.

Limiter. Er schützt die Engines vor Last, indem er Bots an der Instanz blockiert (Limiter). Welcher Betriebsmodus passt, hängt vom Zugriff ab:

Betrieb Limiter Schutz
Nur Open WebUI und definierte Dienste im internen Netz aus (Standard) Netzgrenze, kein veröffentlichter Port
Zugriff für Menschen oder weitere Clients ein, mit Valkey Rate Limit und Header-Prüfung, Dienste per pass_ip ausnehmen

Der Limiter zählt Anfragen mit format ungleich html getrennt und lässt je IP (bei IPv6 je /48-Netz) nur 4 pro Stunde zu (API_MAX und API_WINDOW in der Bot-Detection). Im Test erhielt die fünfte JSON-Anfrage aus dem Compose-Netz HTTP 429. Außerdem blockiert der Limiter Clients ohne passende Accept-, Accept-Encoding- und Accept-Language-Header sowie bekannte Bibliotheken wie python-requests. Wer ihn für API-Clients einschaltet, nimmt deren Netz aus. Das Subnetz zeigt docker network inspect searxng_default:

# core-config/limiter.toml
[botdetection.ip_lists]
pass_ip = [
  '172.22.0.0/16',   # Subnetz des Compose-Netzes mit Open WebUI
]

In der .env aktivieren SEARXNG_LIMITER=true und SEARXNG_VALKEY_URL=valkey://valkey:6379/0 den Limiter. Hinter einem Reverse Proxy müssen X-Forwarded-For oder X-Real-IP und trusted_proxies korrekt gesetzt sein, sonst sieht der Limiter nur die IP des Proxys.

Websuche in Open WebUI anbinden

Open WebUI kennt SearXNG als Suchanbieter. Die URL zeigt auf den Endpunkt /search, die Parameter q, format=json, language und weitere ergänzt Open WebUI selbst (SearXNG-Anleitung, von der Community beigesteuert).

services:
  open-webui:
    environment:
      ENABLE_WEB_SEARCH: "True"
      WEB_SEARCH_ENGINE: "searxng"
      SEARXNG_QUERY_URL: "http://core:8080/search"
      WEB_SEARCH_RESULT_COUNT: "3"
      WEB_SEARCH_CONCURRENT_REQUESTS: "2"   # Beispielwert
Variable Bedeutung (Standard)
SEARXNG_QUERY_URL Adresse des /search-Endpunkts
SEARXNG_LANGUAGE Suchsprache an SearXNG (all), überschreibt search.default_lang der Instanz
WEB_SEARCH_RESULT_COUNT Zahl der verwendeten Treffer (3)
WEB_SEARCH_CONCURRENT_REQUESTS gleichzeitige Suchanfragen, 0 heißt unbegrenzt (0)
BYPASS_WEB_SEARCH_WEB_LOADER nur Snippets verwenden, Ergebnisseiten nicht laden (aus)
ENABLE_WEB_SEARCH_CONFIRMATION Nutzer bestätigen jede Suche (aus)
WEB_SEARCH_DOMAIN_FILTER_LIST erlaubte oder gesperrte Domains in den Ergebnissen

Diese Variablen gelten nur beim ersten Start. Danach liegen die Werte in der Datenbank und werden in den Admin-Einstellungen unter Websuche geändert, sofern ENABLE_PERSISTENT_CONFIG nicht auf False steht (Umgebungsvariablen, Stand Open WebUI v0.12.1). Ein Test von außen: curl 'http://127.0.0.1:8080/search?q=test&format=json'. HTTP 403 heißt, json fehlt in search.formats. HTTP 429 heißt, der Limiter blockiert den Client.

Grenzen: blockierte Engines und schwankende Qualität

SearXNG reicht Anfragen an Suchmaschinen weiter, die automatisierte Abfragen nicht wünschen. Folgen für den Betrieb:

  • Engines fallen aus, die Suche nicht. Antwortet eine Engine mit CAPTCHA, 403 oder 429, wird sie in der Regel für die Sperrzeit ausgesetzt. Die Instanz liefert weiter Treffer der übrigen Engines. Im Test vom 28.10.2026 meldete DuckDuckGo von einem Büroanschluss in Deutschland schon bei der ersten Anfrage CAPTCHA. Die Engine duckduckgo setzt bei CAPTCHA keine Sperrzeit und wird bei jeder Anfrage erneut abgefragt. Die Ergebnisse kamen von den anderen Engines, ein Fehler war für den Nutzer nicht zu sehen.
  • Qualität schwankt. Fehlt eine Quelle, ändern sich Reihenfolge und Treffer. Für Agenten, die Quellen belegen müssen, ist das ein messbares Risiko.
  • Agenten erzeugen Last. Mehrere Suchen je Antwort können für eine Engine wie automatisierte Last aussehen. WEB_SEARCH_CONCURRENT_REQUESTS, eine bewusste Engine-Auswahl und gegebenenfalls Proxys begrenzen das.
  • Suchergebnisse sind nicht vertrauenswürdig. Geladene Webseiten können Anweisungen für das Modell enthalten, siehe Schutz vor Prompt Injection.

SearXNG und Datenschutz: was an Suchmaschinen geht

Eine private Instanz entfernt Nutzerbezug, aber nicht die Suchanfrage. Die Projektdokumentation beschreibt, was SearXNG entfernt (Why use a private instance?):

Datum Geht an die Suchmaschine?
Suchbegriff mit Sprache und Seitenzahl Ja, an die aktivierten Engines der gewählten Kategorie. Open WebUI übergibt keine Kategorie, es gilt general
IP-Adresse des Nutzers Nein. Die Engine sieht die IP der Instanz oder eines konfigurierten Proxys
Cookies Nein, das Browserprofil wird je Anfrage zufällig erzeugt
Chatverlauf und Dokumente Nicht Teil der Anfrage. Welche Begriffe das Modell formuliert, hängt von Frage und Modell ab
Ergebnisseiten Nicht über SearXNG: Open WebUI lädt sie selbst, mit der IP des Open-WebUI-Servers, sofern kein Proxy gesetzt ist
Protokolle der Instanz Beim Betreiber, Umfang liegt in seiner Hand

Rechtsgrundlage, Verträge und Eingaberegeln sind davon getrennt zu prüfen, siehe DSGVO-konforme KI: Prüfkriterien.

Updates und Monitoring

Updates. Images tragen Datum und Commit als Tag, zum Beispiel 2026.10.28-c360868e5. SEARXNG_VERSION in der .env hält eine Version fest. Aktualisiert wird mit docker compose down, docker compose pull und docker compose up -d. Vorlagen (docker-compose.yml, .env.example) sind bei größeren Änderungen neu zu laden und zu vergleichen. Engines ändern sich mit dem Image: Nach jedem Update die Engine-Fehler prüfen.

Endpunkt Zweck
/healthz Erreichbarkeit, antwortet OK und ist vom Limiter ausgenommen
unresponsive_engines im JSON je Anfrage die ausgefallenen Engines mit Grund
/stats/errors Fehler je Engine als JSON, im Test mit CAPTCHA bei DuckDuckGo und 100 %
/metrics OpenMetrics mit Reliabilität, Antwortzeit und Trefferzahl je Engine, Basic Auth mit open_metrics

Alarm gehört auf die Zahl der erreichbaren Engines und die Reliabilität je Engine. Der Container kann laufen, während nur noch eine Engine antwortet. Für den Ausfall mehrerer Engines braucht der Betrieb eine Rückfallebene, etwa den Wechsel auf eine Such-API.

Wann sich der Eigenbetrieb lohnt

Situation Eher geeignet
Suchbegriffe sollen nicht bei einem zusätzlichen API-Anbieter landen eigene SearXNG-Instanz
Zugesicherte Qualität und Verfügbarkeit der Treffer gehostete Such-API, SearXNG als Rückfall
Wenige Nutzer, gelegentliche Suche gehostete Such-API, wenn der Betrieb einer eigenen Instanz nicht im Verhältnis steht
Viele automatisierte Suchen durch Agenten SearXNG mit Engine-Auswahl, Proxys und Rückfallebene

Stand und Methodik

  • Stand: 28.10.2026. Dokumentation und Quelltext von SearXNG (Build 2026.10.28-c360868e5) und Open WebUI (Dokumentation zu v0.12.1) wurden am 28.10.2026 abgerufen.
  • Testaufbau: Compose-Vorlage aus dem Repository mit Valkey 9, Docker Desktop. Geprüft: Erststart mit erzeugter settings.yml, JSON-Anfrage vor und nach search.formats (403 und 200), Limiter mit Valkey (fünfte JSON-Anfrage HTTP 429, mit pass_ip keine Sperre), Zugriff aus einem Container über den Dienstnamen core mit den Headern von Open WebUI, keep_only, /healthz, /stats/errors und /metrics.
  • Grenzen des Tests: Ein Netz, ein Tag. Welche Engines blocken, hängt von IP, Last und Zeitpunkt ab und ist nicht übertragbar.
  • Quellen: die verlinkten Seiten von SearXNG, Open WebUI, Docker und die LICENSE im Repository.

Tabellen und Zahlen dürfen mit Quellenangabe und Link auf diesen Beitrag weiterverwendet werden.

Unser Vorgehen bei WZ-IT

Auf der Seite SearXNG Hosting & Betrieb beschreibt WZ-IT den Betrieb als private Metasuche: Engines, Limiter, Proxy, Valkey, Protokollierung und Zugriff werden passend zum Einsatz konfiguriert, Datenflüsse und aktivierte Engines dokumentiert, öffentliche Instanzen zusätzlich mit Rate Limits und Abuse-Schutz versehen. Updates, Monitoring und Backup gehören zum Betrieb.

Die KI-Plattform ist eine eigene Open-WebUI-Instanz mit in Deutschland bei deutschen Anbietern betriebenen Modellen und bringt die Websuche im Chat mit, ein eigener Suchdienst muss dafür nicht betrieben werden. An Suchmaschinen gehen nur die Suchbegriffe, Administratoren schalten die Websuche je Gruppe ab. Das Paket Start bis 10 Nutzer kostet ab 149,90 € netto im Monat (Stand Oktober 2026). Auf Wunsch binden wir SearXNG als Suchdienst in die Plattform ein, ebenso Docling für die Dokumentverarbeitung.

Weiterführende Guides

Websuche für die eigene KI einrichten? Wir betreiben SearXNG als Dienst oder liefern die Websuche mit der KI-Plattform. SearXNG Hosting & Betrieb · KI-Plattform

Weiterführend: Websuche in Open WebUI: Anbieter im Vergleich

Lieber betreiben lassen?

Sie möchten Lokale KI für Unternehmen nicht selbst betreiben? WZ-IT übernimmt Einrichtung, Betrieb und Wartung - datenschutzorientiert aus Deutschland.

Anfrage

Lokale KI für Ihren Einsatz einordnen

Starten Sie mit dem AI Cube oder lassen Sie eine individuelle KI-Plattform, Wissensanbindung oder Integration einordnen.

  • Direkt mit Timo und Robin - kein Vertrieb, kein Sales-Pitch
  • Fachliche Einschätzung Ihrer Situation
  • Konkrete nächste Schritte für Infrastruktur, Software oder KI

Das Gespräch ist unverbindlich und kostenlos.

Timo und Robin habe ich als engagierte und professionelle Gesprächspartner kennengelernt, die für einen Kunden so einiges möglich machen, das erst mal unmöglich scheint. Ich fühlte mich sehr gut beraten. Die angebotenen Leistungen haben mich sehr überzeugt.
Andrea PawlowskiCommunications Manager, Golem.de, Deutschland
Timo und Robin, Gründer von WZ-IT

Lokale KI für Ihren Einsatz einordnen

Timo und Robin habe ich als engagierte und professionelle Gesprächspartner kennengelernt, die für einen Kunden so einiges möglich machen, das erst mal unmöglich scheint. Ich fühlte mich sehr gut beraten. Die angebotenen Leistungen haben mich sehr überzeugt.
Andrea PawlowskiCommunications Manager, Golem.de, Deutschland

Häufig gestellte Fragen

Antworten auf die wichtigsten Fragen

Wissen

Mehr zu Lokale KI für Unternehmen

Alle Lokale KI für Unternehmen-Artikel

Unternehmen weltweit vertrauen WZ-IT

  • Stadtwerke Brühl
  • DGHO e.V.
  • solarwerkstatt berlin
  • Krüger Dirndl
  • ABCO Water Systems
  • Golem.de
  • EVADXB
  • nextGYM
  • AInergy
  • ml&s
  • Odiseo Solutions
  • Annota
  • ARGE
  • SweetConnect GmbH
  • Aphy AG
  • CORGOS
  • Rekorder
  • SolidProof
  • Yonju
  • Keymate
  • Paritel
  • Mr. Clipart
  • Millenium
  • Negosh
  • Führerscheinmacher
  • BTI
  • Deutsche Gesellschaft für Datenschutz
Kundenstimmen ansehen