SearXNG ist eine selbstgehostete Suchmaschine. Die Ergebnisse kommen weiterhin von Google, Bing oder auch DuckDuckGo. Allerdings bekommt man keine Werbung und das Tracking wird über SearXNG unterbunden.
Inhalt
Installation
Zur Installation von SearXNG wird eine funktionierende Docker-Installation vorausgesetzt. Dazu gibt es bereits eine Anleitung wie man Docker auf einem Raspberry Pi installiert: Raspberry Pi: Docker installieren
Zudem sollte Nginx Proxy Manager bereits deployed sein, solltet ihr die Suchmaschine im Internet verfügbar machen wollen. Dazu ebenfalls die Anleitung: Nginx Proxy Manager installieren und verwenden
Zuerst erstellen wir die Datenverzeichnisse. Dazu führen man in Linux im Homeverzeichnis des Benutzers mkdir searxng searxng/core-config searxng/core-data searxng/valkey-data aus.
Mit cd searxng wechselt man in das erstellte Verzeichnis und mit nano docker-compose.yml erstellen wir eine Docker Compose File.
services:
searxng-core:
container_name: searxng-core
hostname: searxng-core
image: docker.io/searxng/searxng:latest
restart: always
links:
- searxng-valkey
ports:
- 8080:8080
volumes:
- ./core-config/:/etc/searxng/
- ./core-data/:/var/cache/searxng/
restart: unless-stopped
searxng-valkey:
container_name: searxng-valkey
hostname: searxng-valkey
image: docker.io/valkey/valkey:9-alpine
command: valkey-server --save 30 1 --loglevel warning
restart: always
volumes:
- ./valkey-data/:/data/
restart: unless-stopped
Mit [STRG]+[O] und [STRG]+[X] speichert man die Datei und schließt diese anschließend. Als letztes führen wir noch sudo docker-compose up -d aus und die Container werden gestartet.
Wenn man jetzt im Browser https://{IP-des-Hosts}:8080 aufruft, wird man SearXNG zu Gesicht bekommen.
Konfiguration
Auf der Webseite können browsergespeicherte Einstellungen durchgeführt werden. Geht da mal in Ruhe durch, das erklärt sich vielfältig selbst. Suchmaschinen können an- und ausgeschaltet werden. Sicher Suche kann Standardmäßig aktiviert werden. Es gibt auch verschiedenste Quellen, welche mit durchsucht werden. Beispielsweise Wikipedia, Docker Hub, OpenStreetMap.
Wenn euch das so reicht, ist es nun erledigt. Man hat allerdings auch die Möglichkeit in der Konfigurationsdatei noch ein paar Einstellungen vorzugeben.
Settings.xml
Dazu öffnen wir mit dem Editor die Setting.xml sudo nano core-config/settings.yml. In der Settings.xml können dann beispielweise Standardeinstellungen für jeden Nutzer vorgegeben werden können.
Ich habe folgende Einstellungen angepasst:
| Argument | Beschreibung |
|---|---|
| instance_name: „{Name-hier}“ | Gibt den Titel der Webseite im Browserfenster an |
| enable_metrics: false | Standardmäßig auf True. Ich habe die Metric auf /stats ausgeschaltet. |
| open_metrics: “{irgendein-langes-Passwort}“ | Wenn ein Passwort gesetzt wird, wird die OpenMetric API aktiviert und kann bspw. von Prometheus ausgelesen werden. |
| favicon_resolver: „“ | Ist im Standard ausgeschaltet, da die Funktion deutlich mehr Traffic verursacht. Sie kann allerdings angeschaltet werden in dem man bspw. duckduckgo oder google hinterlegt. Ich habe es aus gelassen. |
| default_lang: „de“ | Standardmäßig auf „auto“, ich habe es hier mal auf Deutsch gestellt. Die Suche liefert dann erstmal nur Ergebnisse in deutscher Sprache. |
| format: – html – json | Bei Format wird ausgewählt, in welchem Format die Suchergebnisse ausgegeben werden sollen. – html ist hier standardmäßig hinterlegt. – json ist für API-Abfragen sinnvoll. |
| base_url: „https://{FQDN-der-Webseite}“ | Wenn SearXNG in das Internet freigegeben wird, sollte hier die Base URL korrekt angegeben werden, damit Links korrekt umgeschrieben werden. |
| limiter: true | Aktiviert die Limitierung von Bot-Anfragen. Valkey wird dafür ebenfalls benötigt. |
| valkey: url: „valkey://searxng-valkey:6379/0“ | Valkey sorgt dafür, dass zu viele Bot-Anfragen blockiert werden. Damit wird dann auch SearXNG vor anderen Suchmaschinen geschützt, die ebenfalls zu viele Bot-Anfragen blockieren. |
| default_locale: „de“ | Ist die Standardsprache der Weboberfläche. Normalerweise ist der String leer und die Spracheinstellung wird vom Browser entliehen. |
| preferences: lock: … | Hier können Einstellungen vor Benutzeränderung geschützt werden. Dazu einfach die Kommentierung # entfernen. Achtet darauf auch die Raute bei preferences und lock zu entfernen. |
| engines: … | Unter Engines findet ihr alle Suchseite. Hier könnt ihr für jede Suchseite auswählen, ob diese Standardmäßig deaktiviert werden soll. Startpage und Wikidata und Brave Search haben hier bei mir meistens Probleme gemacht, daher habe ich diese deaktiviert. Fügt dazu disabled: true hinzu. |
Wenn so weit alles fertig ist, einmal mit [STRG]+[O] und [STRG]+[X] speichern und schließen.
Limiter.toml
Als nächstes müssen wir noch den Limiter konfigurieren, dazu mit dem Befehl sudo nano core-config/limiter.toml eine neue Datei erstellen. Dort tragen wir dann folgendes ein:
[botdetection.ip_limit]
link_token = true
[botdetection]
trusted_proxies = [
'127.0.0.0/8',
'::1',
'172.16.0.0/12',
]
Hiermit wird die gehashte IP in Valkey für 10 Minuten abgelegt. Sollten zu viele Anfragen innerhalb kurzer Zeit festgestellt werden, wird die IP für kurze Zeit blockiert. Außerdem wird hier das interne Docker Netz für Reverse Proxy-Anfragen als vertraut angegeben. Somit kann der Nginx Proxy Manager auch 100% ordentlich arbeiten. Wieder mit [STRG]+[O] und [STRG]+[X] speichern und schließen.
Mit sudo docker-compose down und sudo docker-compose up -d werden die Container mit den aktuellen Einstellungen neu erstellt.

