Die beste anonyme Meta-Suchmaschine

Eine selbstgehostete, datenschutzfreundliche Suchmaschine mit SearXNG und Docker – für maximale Kontrolle über die eigenen Suchanfragen und -ergebnisse!

Die beste anonyme Meta-Suchmaschine

Suchmaschinen sind für die meisten von uns tägliche Begleiter im Netz. Doch während wir fleißig nach Informationen suchen, hinterlassen wir digitale Spuren, die mehr über uns verraten, als uns lieb ist. Die großen Player im Suchmaschinengeschäft wissen genau, was wir suchen, wann wir es suchen und oft sogar, von wo aus wir suchen. Klingt unheimlich? Ist es auch.

Warum Privatsphäre bei Websuchen wichtig ist

Ich habe bereits beschrieben, welche Gefahr von unwichtig geglaubten Daten ausgeht. Selbst ich habe erst vor kurzem bei einer Analyse von mir zugespielten Daten erschreckende Erkenntnisse sammeln dürfen. Eine Werbe ID? Ist das nicht einfach nur eine Zufallszahl, die keinen Bezug zu einem Nutzer erkennen läßt? Das ist zwar richtig, doch wenn man sieht, welche Rückschlüsse mir dadurch möglich wurden, dann wird einem gleich ganz anders:

Mit Werbung Geheimdienste enttarnen
Dass Google-Maps mir Restaurants in meiner Umgebung empfehlen kann, und welche Auswirkungen dieser Komfort hat, sehen wir hier genauer…

SearXNG

Hier kommt SearXNG ins Spiel (das χ soll an das griechische chi erinnern - es wird also wie searching ausgesprochen 😃). Diese Open-Source-Metasuchmaschine leitet ihre Anfragen an verschiedene Suchmaschinen weiter, sammelt die Ergebnisse ein und serviert sie auf einem Silbertablett – ohne Werbung, ohne Tracking, ohne Schnickschnack. Was macht SearXNG so besonders?

  1. Privatsphäre first: Keine Logs, keine Cookies, keine Spuren. Was in SearXNG passiert, bleibt in SearXNG.
  2. Vielseitig: Egal ob Webseiten, Bilder, Videos, News oder Darknet.
  3. Anpassbar: Von der Farbgebung bis zur Suchmaschinen-Auswahl.
  4. Selbst-gehostet = selbstbestimmt: Die eigene Instanz, somit die eigenen Regeln. Kein Vertrauen in Dritte nötig.
GitHub - searxng/searxng: SearXNG is a free internet metasearch engine which aggregates results from various search services and databases. Users are neither tracked nor profiled.
SearXNG is a free internet metasearch engine which aggregates results from various search services and databases. Users are neither tracked nor profiled. - searxng/searxng

In diesem Artikel zeige ich, wie man eine einfache SearXNG-Instanz mit Docker aufsetzt und hinter einem Nginx Proxy Manager betreibt. Es ist einfacher, als man denkt, und am Ende hat man eine persönliche Suchmaschine, die die Privatsphäre respektiert.

Vorteile und Grenzen von SearXNG im Vergleich zu anderen Suchmaschinen

Vorteile von SearXNG:
  • Datenschutz und Anonymität:
    • Das selbstgehostete SearXNG erhebt logischerweise keine Nutzerdaten, speichert keine Logs und verwendet keine Cookies. Im Gegensatz zu großen Suchmaschinen wie Google, Bing oder Yahoo, die umfangreiche Profile ihrer Nutzer erstellen, bleibt der Suchverlauf bei SearXNG vollkommen privat (also in eurem Browser). Diese datenschutzfreundliche Architektur schützt die Anonymität des Nutzers.
  • Werbefreiheit:
    • Während kommerzielle Suchmaschinen wie Google und Bing von Werbung durchsetzt sind, bietet SearXNG eine klare und werbefreie Benutzeroberfläche. Dies sorgt nicht nur für ein angenehmeres Sucherlebnis, sondern verhindert auch, dass Nutzer durch gezielte Werbung getrackt werden.
  • Anpassbarkeit:
    • SearXNG ist hochgradig anpassbar. Nutzer können die Suchmaschine nach ihren Bedürfnissen konfigurieren, z. B. indem sie bestimmte Suchmaschinen aktivieren oder deaktivieren, das Design anpassen oder Plugins hinzufügen. Diese Flexibilität bieten kommerzielle Suchmaschinen oft nicht.
  • Unabhängigkeit durch Selbst-Hosting:
    • Durch die Möglichkeit, eine eigene SearXNG-Instanz zu hosten, behalten Nutzer die volle Kontrolle über ihre Suchmaschine. Dies eliminiert die Notwendigkeit, einem Drittanbieter zu vertrauen, was bei den großen Suchmaschinen nicht der Fall ist.
Grenzen von SearXNG:
  • Eingeschränkte Suchergebnisse:
    • Da SearXNG nur als Metasuchmaschine fungiert und Ergebnisse aus verschiedenen Quellen aggregiert, kann die Relevanz der Suchergebnisse variieren. Kommerzielle Suchmaschinen wie Google verwenden fortschrittliche Algorithmen und maschinelles Lernen, um die Suchergebnisse zu optimieren, was zu präziseren und relevanteren Ergebnissen führen kann, auf Kosten der Trackbarkeit.
  • Geringerer Komfort und fehlende Integration:
    • Große Suchmaschinen bieten eine Reihe von zusätzlichen Diensten und Integrationen, wie personalisierte Ergebnisse, Sprachsuche oder enge Verknüpfung mit anderen Diensten wie E-Mail, Kalender und Cloud-Speicher. Diese Funktionen fehlen bei SearXNG, was für Nutzer, die den Komfort und die Integration dieser Dienste schätzen, ein Nachteil sein kann. Diesen Anbietern stehen dadurch natürlich genauere Daten über ihre Nutzer zur Verfügung.
  • Technische Anforderungen:
    • Das Einrichten und Betreiben einer eigenen SearXNG-Instanz erfordert technisches Wissen, insbesondere im Bereich Server-Administration und Docker. Für weniger technisch versierte Nutzer kann dies eine erhebliche Hürde darstellen, während große Suchmaschinen sofort einsatzbereit sind. Aber deswegen seid ihr ja hier gelandet 😉.
  • Kein personalisiertes Sucherlebnis:
    • Da SearXNG keine Nutzerprofile erstellt, gibt es auch keine personalisierten Suchergebnisse. Dies kann in manchen Fällen ein Vorteil sein, aber es bedeutet auch, dass Nutzer nicht von den personalisierten Empfehlungen und Ergebnissen profitieren, die Suchmaschinen wie Google bieten. Aber genau das war ja auch das Ziel: Kein Profiling.

Integration in die eigene Umgebung

Ich habe ja bereits beschrieben, wie man einen Webserver mit offiziellen Zertifikaten aufsetzt.

Eigener Webserver mit offiziellen Zertifikaten
Der Basis-Artikel für alle folgenden Services, die ich hier demonstrieren werde…

Einen weiteren Dienst, wie z.B. SearXNG, hinzuzufügen ist dann ein Kinderspiel, und verläuft genauso, wie auch der eigene Passwort-Manager:

Passwörter sicher in der eigenen Cloud verwalten
Zentrale Passwortverwaltung mit Docker auf dem eigenen Server/Raspberry betreiben ist leichter als gedacht.

Deployment von SearXNG

Zuerst braucht man eine Docker Compose-Konfiguration für SearXNG. Ich gehe hierzu in das Verzeichnis, wo bereits mein docker-compose.yml für meinen Webserver liegt. Dann füge ich für meinen Test einfach folgende Zeilen hinzu:

  searxng:
    container_name: searxng
    image: docker.io/searxng/searxng:latest
    restart: unless-stopped
    depends_on:
      - nginx-proxy-manager
    networks:
      - web
    expose:
      - 8080
    volumes:
      - ./searxng:/etc/searxng:rw
    environment:
      - SEARXNG_BASE_URL=https://notgoogle.[deine-domain].de/
    cap_drop:
      - ALL
    cap_add:
      - CHOWN
      - SETGID
      - SETUID
    logging:
      driver: "json-file"
      options:
        max-size: "1m"
        max-file: "1"
    labels:
      - com.centurylinklabs.watchtower.enable=true

Dabei bedeuten die Einträge folgendes:

  • Container-Name: searxng
  • Image: Verwendet das neueste SearxNG-Image von Docker Hub.
  • Neustart-Policy: Container wird immer wieder neu gestartet, es sei denn, er wurde aktiv gestoppt. Auch nach einem Reboot.
  • Abhängigkeiten: Der Container startet nur, wenn der nginx-proxy-manager läuft. Sonst wäre er ja sowieso nicht erreichbar.
  • Netzwerk: Der Container ist im web-Netzwerk eingebunden, welches auf der internen Seite hinter dem Reverse-Proxy liegt..
  • Expose: Exponiert Port 8080 für den Container im web Netzwerk für den Reverse-Proxy, NPM.
  • Volumen: Ein Verzeichnis auf dem Host (./searxng) wird in den Container gemountet, um Konfigurationen zu speichern.
  • Umgebungsvariablen: Setzt die Basis-URL der SearxNG-Instanz.
  • Berechtigungen: Bestimmte Linux-Rechte werden zugewiesen, um die Sicherheit zu erhöhen.
  • Logging: Logs werden im JSON-Format mit begrenzter Größe und Anzahl der Log-Dateien gespeichert.
  • Labels: Ein Label für das Monitoring durch Watchtower, ein Tool zur automatischen Aktualisierung von Docker-Containern.

Auf der Webseite von SearXNG sind zwar noch weitere Container erforderlich. Doch anstelle von Caddy nutze ich ja NPM. Und wenn man den redis-Container nicht startet, verwendet SearXNG den Cache sowieso im RAM. Auf dem System, wo alle meine Internetdienste terminieren, sieht das im Moment so aus:

Mittels docker-compose up -d searxng starte ich schließlich den Container. Doch damit ist er nur innerhalb des virtuellen Docker-Netzwerkes erreichbar. Er muss also noch von außen erreichbar gemacht werden.

Subdomain anlegen

Für den Webserver hatten wir ja bereits eine Domain bei https://www.dynu.com angelegt. Auf die gleiche Weise können wir wieder eine Domain für unsere neue Suchmaschine anlegen. Ich habe mich für die Subdomain notgoogle entschieden. Und die muss nun im Nginx Proxy Manager hinterlegt werden.

Anpassung des Nginx Proxy Manager

Ich gehe daher wieder auf die Webseite meines NPM und füge meine neue Subdomain hinzu:

Da der NPM den Container im virtuellen Docker-Netzwerk sehen kann, kann ich die Anfragen an notgoogle.meine-domain.de auf diesen weiterleiten. Jetzt nurnoch SSL konfigurieren, und dann kann es auch schon losgehen:

Erste Suche

Rufen wir nun unsere Suchmaschine auf mit https://notgoogle.[meine-domain].de sehen wir eine schöne, simple Oberfläche:

Konfiguration und Anpassung

SearXNG ist sehr anpassungsfähig. Änderungen, die man über den Browser vornimmt, sind leider nicht persistent. Es gibt jedoch eine zentrale Konfigurationsdatei, die zum Glück leicht verständlich ist. In der Datei settings.yml kann man alle Einstellungen vornehmen. Das hat auch den Vorteil, dass andere User für sich zwar kurzfristige Änderungen machen können. Diese sind aber eben nicht von Dauer. Um diese Datei anzupassen, schreibt man einfach folgendes in die Konsole:

nano ./searxng/settings.yml

Hier kann man der Suchmaschine zum Beispiel auch einen Namen geben, der dann im Fenstertitel erscheint. Ich habe hier folgendes geändert:

general:
  instance_name: "Meister-Search"

Plugins

SearXNG kommt mit einer Handvoll nützlicher Plugins. Hier ein paar, die man aktivieren sollte:

enabled_plugins:
  - 'Hash plugin'
  - 'Self Informations'
  - 'Tracker URL remover'
  - 'Ahmia blacklist'

Das "Tracker URL remover"-Plugin ist besonders wertvoll, denn es entfernt Tracking-Parameter aus URLs.

Suchmaschinen

In der settings.yml kann man auch festlegen, welche Suchmaschinen SearXNG nutzen soll. Standardmäßig sind viele aktiviert, aber ein Blick lohnt sich:

engines:
  - name: duckduckgo
    engine: duckduckgo
    shortcut: ddg
  - name: wikipedia
    engine: wikipedia
    shortcut: wp
# Fügt hier weitere hinzu oder entfernt, was ihr nicht braucht

Abschluss und Neustart

Nachdem alle Änderungen eingebracht wurden, ist ein finaler Neustart des Containers nötig:

docker-compose restart searxng

Und damit ist die Suchmaschine einsatzbereit.

Nutzung

Nachdem nun einige Tests, auch mit Bildersuchen und Softwarepaketen, abgeschlossen sind, kann man sich auch erste Statistiken anschauen:

Sicherheitsaspekte

Die Sicherheit ist ein entscheidender Faktor, wenn es darum geht, eine eigene Suchmaschine zu betreiben. Während SearXNG von Natur aus datenschutzfreundlich ist, gibt es einige zusätzliche Maßnahmen, die man ergreifen kann, um die Instanz noch sicherer zu machen.

Zugriffsbeschränkungen

Um unbefugten Zugriff auf die SearXNG-Instanz zu verhindern, man man den Zugriff auf bestimmte IP-Adressen oder Netzwerke beschränken. Dies kann über die Nginx Proxy Manager-Konfiguration erfolgen:

  • Whitelist: Erlaubt nur bestimmten IP-Adressen den Zugriff.
  • Passwortschutz: Aktiviert eine Authentifizierung, um sicherzustellen, dass nur autorisierte Benutzer Zugriff haben.
Regelmäßige Updates

Damit SearXNG immer aktuell ist, habe ich bereits mit watchtower vorgesorgt. In docker-compose.yml ist bereits folgendes eingetragen:

    labels:
      - com.centurylinklabs.watchtower.enable=true

Watchtower aktualisiert dann die Software, sobald Aktualisierungen vorliegen.

Monitoring und Logging

Ich überwache die URL mit Uptime-Kuma und die Zugriffe mit wazuh. Es ist wichtig zu wissen, was auf den anvertrauten Systemen los ist. Und an dieser Stelle bin ich extrem penibel.

Realtime Monitoring
Nicht nur für Sicherheitsvorfälle. Realtime ist auch bei Störungen im Haus nützlich.
Mit wazuh Dateien beobachten
Angriffe in Logfiles erkennen und verhindern.

Backups

Backups sind besonders schnell gemacht. SearXNG legt nur zwei Dateien an, die sich per Cronjob leicht in Sicherheit bringen lassen.

Fazit

SearXNG ist eine sehr schnelle, lokale Suchmaschine. Trotz der vielen Quellen, die im Hintergrund befragt werden, ist die Relevanz der Ergebnisse erstaunlich hoch. Ich habe zum Beispiel nach einer bestimmten Datei gesucht. Zu dieser kannte ich nur den Dateityp, und mögliche Bestandteile im Dateinamen. Google konnte viele Kandidaten finden. Doch in der Unmenge der Ergebnisse eher unbrauchbar. SearXNG nutzte auch das Wissen aus speziellen Datei-Suchmaschinen. Die Datei war schließlich unter den ersten fünf Ergebnissen zu finden.

Besonders das Entfernen der Werbung und Tracker finde ich sehr angenehm. Vielleicht macht die Anbindung ans Tor-Netzwerk noch Sinn, um letztlich auch die eigene Source-IP zu verschleiern und auch die Darknet-Suchmaschinen nutzen zu können.