Die beste anonyme Meta-Suchmaschine
Eine selbstgehostete, datenschutzfreundliche Suchmaschine mit SearXNG und Docker – für maximale Kontrolle über die eigenen Suchanfragen und -ergebnisse!
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:
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?
- Privatsphäre first: Keine Logs, keine Cookies, keine Spuren. Was in SearXNG passiert, bleibt in SearXNG.
- Vielseitig: Egal ob Webseiten, Bilder, Videos, News oder Darknet.
- Anpassbar: Von der Farbgebung bis zur Suchmaschinen-Auswahl.
- Selbst-gehostet = selbstbestimmt: Die eigene Instanz, somit die eigenen Regeln. Kein Vertrauen in Dritte nötig.
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.
Einen weiteren Dienst, wie z.B. SearXNG, hinzuzufügen ist dann ein Kinderspiel, und verläuft genauso, wie auch der eigene Passwort-Manager:
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.
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.