Eine eigene Searx-Instanz unter Ubuntu 16.04 aufsetzen

| 17 Kommentare

Nachdem ich eine eigene Instanz von Searx, die searx.site aufgesetzt habe (zu der ich auch mein erstes Firefox-Addon veröffentlicht habe), wurde ich von einigen angesprochen, die Fragen zur Installation hatten oder bei denen es Probleme gab. Des Weiteren gibt es anscheinend bisher keine Anleitung, die z.B. auf das zusätzliche Einrichten des Filtron Proxys zum Schutz von Searx eingeht oder die die Einrichtung von Nginx mit Letsencrypt thematisiert. Daher ich beschlossen mich hier an einer Anleitung zu versuchen.

Hinweisen möchte ich aber mit Nachdruck noch einmal, dass zunächst das von den Entwicklern von Searx herausgegebene Tutorial beachtet werden sollte. Dort werden nötige Änderungen sicherlich schnell eingepflegt, was hier nicht unbedingt der Fall sein muss.

Diesem Tutorial folge ich hier in den ersten Schritten auch komplett. Unterschiede zu diesem mache ich deutlich und erläutere sie. Ich

Zunächst müssen die für Searx nötigen Pakete installiert werden (hier habe ich die Anleitung so verändert, dass ich Paket, die sonst später erst installiert werden, hier schon installiere):

Vorarbeiten

Installation und Einrichtung von Searx

Anschließend kann Searx installiert werden und der Searx-Nutzer angelegt werden:

Nun werden die Abhängigkeiten in einem virtualenv installiert:

Danach kann ein Key für Searx erzeugt und in die Konfigurationsdatei eingefügt werden:

Nun kann Searx schon gestartet werden, indem man

eingibt.

Mit Hilfe eines Browsers, der in der Konsole läuft, wie z.B. links2, kann man nun überprüfen, ob alles korrekt läuft. Hierzu einfach http://localhost:8888 eingeben.

Wenn alles korrekt läuft die Debug-Option in der settings.yml deaktivieren:

Nun kann die virtuelle Umgebung und der Searx-Nutzer beendet werden. Hierfür zweimal

eingeben.

Anschließend folgende UWSGI-Konfig-Datei erstellen (hier habe ich im Gegensatz zu Original-Anleitung noch eine Ergänzung für die Zusammenarbeit mit dem Filtron-Proxy vorgenommen, s. Anmerkung)

Dies einfügen:

Anschließend muss diese Konfiguration aktiviert und gestartet werden:

Nginx und Let’s Encrypt

Nachdem jetzt Searx als Daemon bereits läuft, wollen wir die Seite natürlich verfügbar machen. Hierfür legen wir zunächst einen Virtual-Host an, der sich erheblich von dem doch sehr einfachen Beispiel in der Original-Anleitung unterscheidet. Wir verlassen an dieser Stelle auch die Originalanleitung. Noch ein Hinweis: example.com natürlich immer durch die eigene Domain ersetzen. Es bietet sich an sich zunächst über

Root-Rechte zu besorgen.

Und dies dort einfügen:

Anschließend kann diese Konfiguration bereits aktiviert werden (funktionier so aber noch nicht):

Wer genau hingesehen hat, dem ist aufgefallen, dass in der Nginx-Konfiguration bereits der Pfad zu Zertifikaten von Letsencrypt angelegt waren. Diese müssen nun aber zunächst erzeugt werden. Hierzu zunächst Nginx stoppen:

Um dann das Zertifikat zu erzeugen:

und Nginx wieder starten und das Zertifikat noch einmal neu mit der Webroot-Methode anfragen (Letsencrypt fragt, ob ein neues Zertifikat ausgestellt werden soll. Diese Option wählen):

Da die Zertifikate von Let’s Encrypt nur 90 Tage gültig sind, sollte man sie automatisch erneuern lassen. Hierzu legen wir einen Cron-Job an, der täglich läuft:

Und fügen dies ein und speicher und schließen die Datei:

Nun noch Diffie-Hellman-Parameter erzeugen (dies kann dauern!):

Filtron

Mit der oben beschriebenen Konfiguration läuft Searx immer noch nicht, da die Konfiguration auf den Betrieb mit dem Proxy Filtron ausgelegt ist, der unsere Instanz z.B. vor der Nutzung durch Bots schützen soll, weil dies dazu führen könnte, dass die Suchmaschinen, die Searx anfragt uns nach einiger Zeit ablehnen.

Zunächst muss für den Betrieb von Filtron Go installiert werden (hierwird davon ausgegangen, dass immer noch der Root-Nutzer genutzt wird. Wenn nicht noch einmal „sudo su“ eingeben):

Damit wir Go persistent nutzen können, müssen wir die Standard-Shell von Dash auf Bash ändern. Hierzu

eingeben und bei dem sich öffnenden Dialog „Nein“ wählen (Danke @matze für den Hinweis).

Dann legen wir zunächst einen Nutzer für Filtron an und weisen ihm einen Ordner zu:

Anschließend machen wir uns zum Nutzer filtron und richten Go für diesen ein:

Anschließend kann Filtron installiert werden:

Ob die Installation funktioniert hat, kann man z.B. mit der Ausgabe der Hilfe von Filtron ausprobieren:

Wir benötigen noch ein Regelset für Filtron (wer die folgenden Regeln verändern möchte, findet hier Informationen).

Hier dies einfügen und an die eigenen Bedürfnisse anpassen:

Wer möchte kann nun schon ausprobieren, ob Filtron läuft:

Doch wir werden Filtron noch mit Hilfe von Systemd daemonizieren (Sagt man das so?). Daher den Prozess beenden (STRG+C) und den User filtron verlassen:

Nun eine neue Datei erstellen:

Und dies einfügen und wie gehabt speichern und schließen:

Anschließend kann dann der neue Service aktiviert und gestartet werden:

Ob Filtron wunschgemäß läuft, kann nun folgendermaßen überprüft werden:

Anpassungen
Jetzt sollte die Metasuchmaschine Searx mit dem Proxy Filtron laufen. Abschließend können noch einige Anpassungen vorgenommen werden. So habe ich z.B. Google als Quelle deaktivieren müssen, da hier immer eine Fehlermeldung auftauchte. Das Problem ist aber bekannt. Suchmaschinen können in der Datei

aktiviert und deaktivert werden. Nur immer daran denken, nach einer Veränderung UWSGI neu zu starten:

Viel Spaß beim Aufsetzen von Searx! Ich freue mich über (konstruktives) Feedback!

Mir haben beim Verfassen dieser Anleitung folgende Quellen sehr geholfen:

Autor: Alexander Kallenbach

Mein Name ist Alexander Kallenbach. Ich schreibe hier auf Scroom über alles mögliche – vor allem aber über IT. Hierbei interessieren mich besonders freie und/oder quelloffene Software sowie deren Entwicklung und Einsatz. Außerdem interessieren mich Auswirkungen von IT auf unser Leben. Hierbei ist die Nutzung von Daten und somit auch Datenschutz ein Themenbereich.

17 Kommentare

  1. Hi Alexander, ich finde es super, hier eine solche Anleitung zu finden. Habe natürlich direkt damit begonnen, bleibe aber leider bei der Einrichtung von Filtron hängen.

    $ source ~/.bashrc
    -sh: 1: source: not found

    /usr/local# go get github.com/asciimoo/filtron
    package github.com/asciimoo/filtron: cannot download, $GOPATH not set. For more details see: go help gopath

    Wo ist der Fehler?

    Gruß matze

    • Hm, nutzt du ein Standard-Ubuntu? Ist dir aufgefallen, dass die zwei Zeilen über source ~/.bashrc eigentlich eine ist? (Habe gerade ein Plugin installiert, mit dessen Hilfe jetzt auch u.a. Zeilennummern angezeigt werden)

      Habe es gerade noch einmal auf einer andern Maschine getestet und dort ging es.

  2. Ja, ein Standard Ubuntu Server 16.04.03, der als voreingestellte Shell /bin/dash eingestellt hat und diese hat „source“ wohl nicht mit an Board. Kann daher auch nicht ausgeführt werden. Einfach zu /bin/bash wechseln
    $ls -l which sh #überprüfen
    /bin/sh -> dash

    $sudo dpkg-reconfigure dash # „nein“ wählen

    $ls -l which sh
    /bin/sh -> bash

    Ich musste beim nginx noch folgende auskommentierte Zeilen in der /etc/nginx/nginx.conf aktivieren, sonst startete der Webserver nicht:

    server_names_hash_bucket_size 64;
    server_name_in_redirect off;

    Und schon läuft der Rest 🙂

    Gruß matze

  3. Hallo Alexander,

    ich gehe mal davon aus, das bei Ubuntu Server in der minimalen Ausführung, „source“ in der dash nicht enthalten ist, in der normalen Ubuntu Version, sprich Ubuntu Desktop aber schon.

    Gruß,

    Matze

  4. ja, oder meiner 🙂

    Gruß,
    Matze

  5. Hello
    Wow amazing tutorial

    I was thinking that could be great have a docker with this installation, could be a good idea to grow up more public instances???

    Why u use filtron and not morty?

    Thanks, and great job again

  6. Hi Alexander,

    ich versuche gerade auf meinem Ubuntu 16.04 Server Deine super Anleitung abzuarbeiten.

    Leider kommt bei dem Befeh
    „echo „GOPATH=$HOME/.go“ >> ~/.bashrc“
    folgende Fehlermeldung:
    $ echo „GOPATH=$HOME/.go“ >> ~/.bashrc
    -sh: syntax error near unexpected token `;&‘
    $

    Weißt Du was ich hier falschmache?
    Wäre echt super.

    Vielen Dank und Gruß
    Tom

    • Hey Tom,

      hast du den Hinweis von Matze (steht mittlerweile auch im Artikel) beachtet?:

      „dpkg-reconfigure dash

      eingeben und bei dem sich öffnenden Dialog „Nein“ wählen“

      Anscheinend waren aber auch die entsprechenden Zeichen in meinem Beitrag nicht korrekt formatiert. Ich habe dies geändert, so dass du diese jetzt auch wieder kopieren können müsstest.

      MfG

      Alexander

      PS: Deinen zweiten Kommentar lösche ich, da er ja dieselbe Anfrage enthält.

  7. Hi Alex,

    ja das habe ich so gemacht.
    Und sorry… Mein Kommentar wurde nicht angezeigt, deswegen hatte ich erneut geschrieben.

    Gruß
    Tom 🙂

  8. Hallo,

    wie sieht es mit der Installation von Morty aus? Macht die Sinn, ist das überflüssig?Wenn das sinnvoll ist, könntest du deine Anleitung noch um die Installationsschritte für Morty erweitern?

    Gruß
    Simon

  9. Hallo!
    In dieser Anleitung wird noch Morty installiert. https://raspiblog.noblogs.org/post/2018/01/27/installing-searx-with-apache-and-morty/

    Ist Das sinnvoll?

    Gruß Simon

Schreibe einen Kommentar zu Simon Antworten abbrechen

Pflichtfelder sind mit * markiert.