DecaTec

Home-Server | Linux | Nextcloud | Raspberry Pi | Programmierung | Fotografie

Metasuchmaschine searx auf eigenem Server installieren (mit Docker und nginx)

searx Logo

Eine Suchmaschine ist eine der wichtigsten Tools im Internet. Google ist hier der unangefochtenen Platzhirsch: Die Marktmacht von Google lässt sich allein schon an der Tatsache erahnen, dass das Wort „googeln“ schon 2004 im Duden aufgenommen wurde.
Wer nun aber Wert auf Privatsphäre und Datenschutz im Internet legt, für den ist Google sicherlich nicht die beste Wahl.

Hier gilt es also, sich nach Alternativen umzusehen. Auf dem Markt gibt es zum Glück einige Suchmaschinen, die in Bezug auf Privatsphäre und Datenschutz besser dastehen als Google. Einfach eine andere Suchmaschine zu benutzen ist jedoch auch keine optimale Lösung – mehr dazu später.

Der folgende Artikel soll daher zeigen, wie man searx als eigene Metasuchmaschine mit Docker und nginx betreiben kann. Damit bleibt man auch bei der Suche im Internet Herr seiner eigenen Daten.

Update-Historie (letztes Update: 15.12.2019)
  • 15.12.2019:
    • Befehl zum Starten des Docker-Containers angepasst, so dass keine Docker-Logs geschrieben werden (–log-driver none).
  • 13.11.2019:
    • Allgemeine Hinweise zum Betrieb einer eigenen searx-Instanz hinzugefügt (kleiner Nutzerkreis).
  • 21.10.2019:
    • Hinweis auf die von mir betriebene searx-Instanz searx.decatec.de hinzugefügt.
    • Hinweis auf das Anpassen der Standard-Einstellungen (/opt/searx/searx/settings.yml) hinzugefügt.

Warum eine eigene Suchmaschine betreiben?

Sehen wir uns den Markt der Suchmaschinen mal näher an:

Hier gibt es zum einen Suchmaschinen, die von den jeweiligen Anbietern betrieben werden, z.B. Google, Bing, Yahoo, etc. Nur diese großen Anbieter haben die Kapazitäten, eigene Suchindizes aufzubauen. Und wer hier investiert, der möchte mit dem Produkt natürlich auch Geld verdienen. Dies sind jedoch nicht die Suchmaschinen selbst, sondern das Produkt sind dabei die Benutzer (bzw. deren Daten). Die Benutzer-Daten können gesammelt und ausgewertet werden, um daraufhin z.B. personalisierte Werbung zu schalten.

Daneben gibt es die sog. Metasuchmaschinen. Dies sind Suchmaschinen, die keine eigenen Suchindizes verwalten, sondern Suchanfragen an andere Suchmaschinen (wie z.B. Google) weiterleiten. Der große Vorteil dabei ist, dass dadurch Suchanfragen anonymisiert werden können, da z.B. Google einen User nicht mehr eindeutig tracken kann. Der einzige Nachteil an einer Metasuchmaschine ist, dass die Suchergebnisse nicht mehr personalisiert werden. Daher hat man immer das Gefühl, dass die Suchergebnisse von Google direkt etwas besser ausfallen, als die Ergebnisse einer Metasuchmaschine. Google schafft dies allerdings nur, weil die User getrackt werden, und das wollen wir ja gerade verhindern.

Lange Zeit habe ich Startpage als Metasuchmaschine genutzt und empfohlen. Jedoch hat Startpage ab Oktober diesen Jahres mit System1 LLC einen neuen Anteilseigner (Quellen: hier bzw. hier). Dessen Geschäftsmodell basiert allerdings genau auf dem Sammeln und Auswerten von Daten. Dies passt meiner Meinung nach nicht zu den Grundsätzen von Startpage (lt. eigener Aussage „die diskreteste Suchmaschine der Welt“). Mit dieser Meinung stehe ich sicherlich nicht allein da, siehe Startpage and System1 Abuse Your Privacy Under the Guise of ‘Privacy One Group’.

Eine Alternative wäre hier z.B. DuckDuckGo (ebenfalls eine Metasuchmaschine). Allerdings wird diese von einem amerikanischen Anbieter betrieben, der lt. Gesetzt dazu verpflichtet ist, mit den US-Behörden zusammen zu arbeiten. Also kann man im Zweifelsfall auch davon ausgehen, dass hier Daten gespeichert und ausgewertet/weitergegeben werden.

Mit searx gibt es allerdings auch eine Metasuchmaschine, die auf einem eigenen Server betrieben werden kann. Ziel dieses Open Source Projektes ist der Schutz der Privatsphäre der Benutzer, indem keine IP-Adressen an die dahinter liegenden Suchmaschinen weitergegeben werden und deren Tracking-Cookies geblockt werden.

Voraussetzungen und Installationsvarianten

searx kann auf jedem Linux-System installiert werden, welches Python-Programme ausführen kann. Dies ist auf so gut wie allen Distributionen gegeben.

Dabei gibt es mehrere Installationsvarianten:

  • Die klassische Installation.
  • Das Bauen eines Docker-Images aus dem offiziellen Repositories und der Betrieb als Docker-Container.
  • Die Nutzung eines vorgefertigten Docker-Images (z.B. wonderfall/serx bei Docker Hub).
  • Die Nutzung des Docker-Images aus dem Projekt searx-docker.

Ich empfehle hier die zweite Variante, indem das Docker-Image aus dem offiziellen Repository gebaut wird. Genau diese Variante wird daher auch in diesem Artikel gezeigt.

Daher ist der Betrieb von Docker ebenfalls eine Installations-Voraussetzung. Eine Einführung zu Docker mit Installationsanweisungen kann dem Artikel Docker auf Ubuntu Server entnommen werden.

Wichtig ist hier auch, dass die Suchmaschine per HTTPS erreichbar ist, damit die Verbindung stets verschlüsselt ist. Hier wird nginx als Webserver verwendet, der die Anfragen an die Suchmaschine an den Docker-Container weiterleitet. Der Webserver ist hierbei für die Verschlüsselung per HTTPS zuständig. Wie man die entsprechenden TLS-Zertifikate mittels acme.sh erzeugen kann, ist im Artikel RSA und ECDSA-Zertifikate mit nginx (Hybrid-Lösung) zu finden.

Am einfachsten ist der Betrieb der Suchmaschine über eine eigene (Sub-)Domain. Wenn DynDNS verwendet wird, dann empfiehlt sich das Anlegen eines CNAME-Eintrags. Details dazu findet man im Artikel Nextcloud: Online-Office mit ONLYOFFICE (mit eigener Subdomain). Im folgenden gehe ich davon aus, dass die Suchmaschine unter der Domain searx.meinedomain.de betrieben wird.

Allgemeine Hinweise zum Betrieb einer eigenen searx-Instanz

Der Artikel zeigt, wie man schnell eine eigene searx-Instanz in Betrieb nehmen kann. Jedoch sollte man sich im Vorfeld Gedanken über den Nutzerkreis der Instanz machen.

Google, Bing & Co „sehen“ nur die IP-Adresse des searx-Servers. Wenn die eigene Suchmaschine nur von sehr wenigen Usern benutzt wird (im Extremfall von nur einem Benutzer), nutzt die Verschleierung der IP-Adressen der Clients durch searx hier wenig. Die Suchmaschinen können dann ebenso einfach ein Profiling vornehmen, als wenn man die diese direkt (d.h. ohne searx) verwenden würde – da die IP pro Nutzer immer die gleiche ist.

Daher sollte man eine searx-Instanz besser nicht mit sehr wenigen/einem einzelnen Benutzer betreiben. Je mehr Benutzer die Instanz verwenden, desto weniger können die Suchmaschinen ein Profiling vornehmen.

Wenn der Nutzerkreis der eigenen searx-Instanz vermutlich sehr klein ausfallen wird, ist es vielleicht eine Überlegung wert, statt einer privaten searx-Instanz auf eine der öffentlich verfügbaren searx-Instanzen auszuweichen.

searx installieren

Zunächst bringen wir das System auf den neusten Stand:

Anschließend wird das Git-Repository gecloned:

In den meisten Anleitungen wird das Docker-Image direkt aus dem Main-Branch des Projekts gebaut (Entwicklungsversion). Ich empfehle hier jedoch das Bauen des neusten Releases. Dazu listet man zunächst einmal die Releases des Projekts auf:

Auflisten der searx-Releases

Auflisten der searx-Releases

Momentan ist die Version v0.15.0 aktuell, daher rufen wir im Folgenden diesen Release ab:

Die Warnung („Detached Head“) kann hier ruhig ignoriert werden.

Auch wenn searx recht gute Standard-Einstellungen mitbringt (z.B. die zu verwendenden Suchmaschinen, die Standard-Sprache der Suche, das Theme, etc.), können diese Einstellungen individuell angepasst werden. Dazu wird vor dem Bauen des Docker-Images folgende Datei bearbeitet:

Die Inhalte dieser Datei sind eigentlich selbsterklärend und würden den Rahmen des Artikels sprengen. Daher wird an dieser Stelle nur auf die Möglichkeit hingewiesen, die Einstellungen der searx-Instanz individuell anzupassen.
Auch wenn alle Einstellungen auf Standard belassen werden, können die Benutzer der Suchmaschine später ihre individuellen Einstellungen vornehmen. Diese werden dann Client-seitig mittels eines Cookies gespeichert.

Das einzige, was ihr in der Datei settings.yml ändern solltet, ist der sog. secret_key: Dies kann mit folgendem Befehl schnell durchgeführt werden:

Das Docker-Image wird nun mit folgendem Befehl gebaut:

Nun kann man sich erst mal einen Kaffee holen, da dieser Vorgang durchaus ein paar Minuten dauert.

Anschließend kann der Container auch schon gestartet werden:

Die Parameter haben dabei die folgende Bedeutung:

  • -p 8888:8888: Der Port 8888 (Standard-Port von searx) wird vom Host-System an den Docker-Conatiner weitergeleitet.
  • --restart=always: Der Container soll bei jedem Systemstart automatisch gestartet werden.
  • --log-driver none: Sorgt dafür, dass keine Logs geschrieben werden. Ohne diesem Parameter könnten die Logs später mit dem Befehl docker logs searx abgerufen werden.
    Wichtig:
    Dieser Parameter sollte unbedingt gesetzt werden, wenn durch die searx-Instanz absolut keine Daten geloggt werden sollen.
  • -e IMAGE_PROXY=True: Aktiviert die Proxy-Funktion für Bilder, d.h. Bilder werden nicht direkt durch den Client-Browser abgerufen, sondern durch searx selbst.
  • -e BASE_URL=https://searx.meindomain.de: Hiermit wird die URL angegeben, unter der searx erreichbar sein soll. Hier muss auch das Protokoll (http/https) mit angegeben werden.

Der letzte Schritt ist nun das Hinzufügen eines virtuellen Hosts für nginx:

Beispielhaft kann die Konfiguration hier folgendermaßen aussehen:

Das Setzen der Settings für SSL und der Standard-Header des Webservers erfolgt hier über das Einbinden über includes. Interessant ist hier hauptsächlich der location-Block, mit dem die Anfrage an den Docker-Container von searx weitergeleitet wird. Diese Kommunikation erfolgt unverschlüsselt über HTTP, da diese nur Maschinen-intern stattfindet.

Wichtig: Damit absolut keine Daten gesammelt werden, sollten Access- und Error-Log für diesen virtuellen Host deaktiviert werden (access_log off bzw. error_log off). Wenn diese nicht deaktiviert werden, werden die IPs der Aufrufer automatisch über nginx geloggt!

Zu guter Letzt muss der Webserver noch neu gestartet werden:

Nun kann die Suchmaschine schon über den Browser aufgerufen werden: https://searx.meinedomain.de

searx in Firefox

searx in Firefox

Damit searx als Standard-Suchmaschine genutzt werden kann, muss diese Suchmaschine noch im Browser hinzugefügt werden. Bei Firefox kann dies über das Menü mit den drei Punkten in der Adress-Leiste erledigt werden.

searx als Suchmaschine in Firefox hinzufügen

searx als Suchmaschine in Firefox hinzufügen

Anschließend kann die Standard-Suchmaschine in den Einstellungen des Browsers gesetzt werden.

Die Nutzung von searx

Nachdem searx nun fertig installiert ist, können die Optionen der Suchmaschine über einen Klick auf Einstellungen (oben rechts) gesetzt werden (z.B. welche Suchmaschinen verwendet werden). Die wichtigste Einstellung ist hier vermutlich die Suchsprache, welche auf Deutsch – de gesetzt werden sollte, da ansonsten nur englische Suchergebnisse angezeigt werden:

Die Suchsprache in searx festlegen

Die Suchsprache in searx festlegen

Diese Einstellungen werden übrigens nicht bei searx gespeichert, sondern ausschließlich per Cookie auf dem Client.

Nun lohnt sich noch ein Blick auf die Such-Syntax. Hiermit können z.B. die Ergebnisse auf eine Suchmaschine begrenzt werden. Soll z.B. nur bei Wikipedia nach dem Suchbegriff „Nürnberg“ gesucht werden, sieht die Syntax folgendermaßen aus: !wp Nürnberg
Ebenso kann explizit nach Suchergebnissen einer bestimmten Sprache gesucht werden (z.B. Englisch): :en Nürnberg

searx updaten

Wenn eine neue Version von searx verfügbar ist, wird das alte Image entfernt und das GitHub-Repository einfach neu abgerufen, wie schon bei der initialen Installation:

searx-Instanz von decatec.de

Meine eigene Instanz ist übrigens unter searx.decatec.de zu erreichen. Diese wurde nach den Vorgaben dieses Artikels umgesetzt und es werden keine Daten gespeichert/gesammelt/ausgewertet.

Die Verbindung ist darüber hinaus dank HTTPS stets verschlüsselt, siehe Qualys SSL Labs und Mozilla Observatory.

Wenn ihr keine eigene searx-Instanz aufbauen wollt und einfach nur eine öffentliche Instanz sucht, dann lade ich euch ein, über searx.decatec.de zu suchen.

Fazit

Mittels Docker ist die eigene searx-Instanz schnell aufgesetzt. Durch das Hosten der Metasuchmaschine auf eigener Hardware und der Tatsache, dass keine IPs oder Suchanfragen geloggt werden, ist dies eine gute Lösung bzgl. Datenschutz und Privatsphäre.

Neben der Nutzung einer komplett eigenen Instanz kann auch eine öffentliche Instanz von searx genutzt werden. Eine Liste von öffentlichen Instanzen ist im Wiki des GitHub-Repositories zu finden: Searx instances

Bei der Verwendung einer öffentlichen Instanz muss man jedoch dem Administrator der Instanz vertraut werden (siehe Why use a private instance?). Von außen ist nämlich nicht ersichtlich, ob hier vielleicht doch Daten gesammelt/ausgewertet/weitergegeben werden. Absolut sicher gehen kann man hier nur durch eine eigene/persönliche Instanz von searx.

Welche Suchmaschine nutzt ihr? Ist euch hier Privatsphäre und Datenschutz wichtig, oder geht es euch mehr um den Komfort beim Suchen? Hinterlasst mir dazu doch einfach einen Kommentar.

Weiterführende Artikel

Links

, , , , , , , ,

Kommentare: 54

  • Bernd sagt:

    Whow super interessanter Artikel!
    Ich wusste gar nicht das es so etwas zum selbst hosten gibt!
    DANKE dafür!
    Kann man sowas auch auf der Nextcloud paralell installieren und nach draußen den Port 8888 frei geben?
    Oder sollte man das Ganze in Docker betreiben?

    Gruß Bernd

    • Jan sagt:

      Hallo Bernd,

      das Betreiben über Docker ist in meinen Augen die unkomplizierteste Lösung. Du kannst natürlich auch einen anderen Port nutzen. Diesen musst du dann nur über die Firewall freigeben. Dann ist nur zu beachten, dass es etwas umständlich ist, immer den Port mit angeben zu müssen.
      Eine andere Variante wäre es, searx über ein Unterverzeichnis einer bestehenden Domain zu hosten.

      Gruß,
      Jan

  • Tom sagt:

    Habe bisher auch startpage verwendet, bin jetzt aber (aus gleichen Gründen wie du) auf eine öffentliche searx-Instanz ausgewichen.

    Macht der Betrieb der searx auf einem Home-Server Sinn ?

    Google& Co kriegen die IP und die Anfragen vom Heim-Server (searx), das will man nicht mit evtl. privaten Anfragen aus dem Heimnetz verknüpfen wollen.
    (vor allem nicht wenn die searx überwiegend von mir verwendet wird und nicht auch noch durch andere, fremde Personen, genutzt wird)

    Genauso ist es wenn ich auf dem gleichen Server ein (privaten) VPN betreiben sollte.

    • Jan sagt:

      Hallo Tom,

      klar, je mehr User eine searx-Instanz nutzen, desto weniger kann Google & Co. ein Profil aus den Suchanfragen ableiten.
      Aber auch, wenn eine Instanz nur von einem einzelnen Benutzer genutzt wird, bietet searx Vorteile (z.B. können die Suchmaschinen keinen Benutzer eindeutig durch eine Browser-Kennung identifizieren, da solche Daten durch searx „gefiltert“ werden). Mehr dazu hier. Darüber hinaus ändert sich ja im Normalfall alle 24 Stunden die IP – zumindest bei Internet-Anschlüssen ohne feste IP.

      Also meiner Meinung nach macht der Betrieb auf einem Home-Server schon Sinn. Um so besser ist es allerdings, wenn mehrere Nutzer eine searx-Instanz nutzen. Aus diesem Grund habe ich ja auch einen Link auf meine Instanz hinzugefügt – vielleicht wird diese dann auch durch weitere Leute genutzt.

      Gruß,
      Jan

  • jochen sagt:

    Warum nicht das offizielle Image vom Dockerhub nutzen? Wie begründet sich deine Empfehlung das Image selbst aus den Quellen zu schreiben?
    Ansonsten dank für den Artikel. Ein Homeserver ist mein Herbst/Winter Projekt, da kommt dann auch searx drauf.

    • Jan sagt:

      Hallo Jochen,

      klar, du kannst auch ein vorgefertigtes Image verwenden. Welches würdest du denn als „offizielles“ Image bezeichnen (searx/searx ist ein Image, welches auf searx basiert, aber mit einigen zusätzlichen Dingen daher kommt, die man u.U. gar nicht braucht).
      Ein Vorteil, wenn man sich das Image selbst baut: Man kann die Standard-Einstellungen seiner eigenen Suche beliebig anpassen.

      Gruß,
      Jan

  • Saber sagt:

    Hallo Jan,

    klasse das du hier Searx bekannt machst und zeigst wie man es einrichtet.
    Ich würde gerne meine SearX Instanz, die als vHost in einem Subdirectory liegt, ausschließlich über IPv4 betreiben.
    Kannst du mir einen Tipp geben, wie ich den vHost dementsprechend einstellen muss oder funktioniert?

    PS Ich habe mal deine Instanz ausprobiert und festgestellt das Google nicht funktioniert. Mir haben die beiden Fixes geholfen:

    https://github.com/asciimoo/searx/pull/1597/commits/5c80eb8460b9fc516de5b73277d298c617d5c6aa

    und

    https://github.com/asciimoo/searx/pull/1628/commits/19f6fcc8869e2c4b066d34bbe293ec14e6d77e53.

    Kann auch sein, dass es schon nach dem ersten Fix funktioniert.

    Beste Grüße

    • Jan sagt:

      Hi,

      wenn nur IPv4 benötigt wird, dann lass einfach folgende Zeile im vHost von nginx Weg: listen [::]:443 ssl http2;

      Ja, Google hat wohl vor Kurzem an der Ergebnis-Seite der Suche etwas verändert. Darauf hin kann searx diese nicht mehr Parsen. Ich denke, dass da bald schon ein Update nachgereicht wird.
      Auf jeden Fall danke für dein Feedback!

      Gruß,
      Jan

      • Saber sagt:

        Hi Jan,

        danke für die Antwort.
        „listen [::]:443 ssl http2;“ ist doch im GatewayHost eingetragen.
        Würde ich dies im GatewayHost austragen, würde ich ja global für alle vHosts ipv6 deaktivieren.
        Ich will jedoch nur für einen einzelnen vHost IPv6 deaktivieren.

        • Jan sagt:

          Hi,

          dann geht bei dir ja alles über den Gateway-Host. Hier sind dann alle Applikationen per IPv6 erreichbar oder eben nicht.
          Warum willst du denn nur für eine Applikation den Zugriff über IPv6 unterbinden?

          Gruß,
          Jan

          • Saber sagt:

            Der Postfix meiner IPv6 Adresse ist statisch. Daher würde ich gerne zur besseren Verschleierung IPv4 nehmen, bei dem sich die Adresse bei mir alle 24h komplett ändert.

          • Jan sagt:

            Hi,

            OK, dann könnte die Lösung so aussehen, dass du die Domain, die nicht per IPv6 erreichbar sein soll, aus dem server_name des Gateway-Hosts heraus nimmst. Dafür erstellst du einen zweiten Gateway-Host, der nur auf die entsprechende Domain hört. Hier dann nur IPv4 aktivieren.

            Gruß,
            Jan

  • Norry sagt:

    An dieser Stelle möchte ich mich mal gaaaanz dolle bedanken. Ich habe einiges hier schon als Anregung mitgenommen und so auch jetzt wieder. Manchmal ist es schwierig, da ich mich für Apache entschieden habe und es für mich daher an bestimmten Stellen ein Umdenken erfordert.
    Der Artikel hat mich veranlasst eine eingene Instanz aufzubauen, ohne Docker und mit Apache aber die Anregung kam hier her.
    Ich freue mich schon auf die nächsten Artikel.
    Gruß Norry

  • Hallo Zusammen,
    ich habe mir auch mal eine kleine Suchmaschine genau nach dieser Anleitung eingerichtet. Dass ganze hat auch alles super funktioniert, wenn ich jetzt einen Suchbegriff eingebe kommt jedoch folgende Fehlermeldung:

    Fehler! Suchmaschinen können die Ergebnisse nicht empfangen.
    bing (Zeitüberschreitung), wikidata (Zeitüberschreitung), google (Zeitüberschreitung), wikipedia (Zeitüberschreitung)

    Hat jemand einen Tipp woran dass liegt?

    • Jan sagt:

      Hi,

      das ist mir auch schon aufgefallen, jedoch nur sporadisch. Bei der nächsten Suchanfragen kommen diese Fehler dann nicht mehr. Sind diese Fehler bei dir dauerhaft zu sehen?

      Zu Google: v0.15 von searx kann aktuell keine Ergebnisse von Google empfangen, da Google hier anscheinend etwas am Design der Results-Pages geändert hat. Das wird vermutlich erst in einer zukünftigen Version von searx behoben werden.

      Gruß,
      Jan

  • Martin sagt:

    Sollte man hier zusätzlich die ufw installieren und konfigurieren?

    https://wiki.ubuntuusers.de/ufw/

    • Jan sagt:

      Hi Martin,

      kann man natürlich machen. Da ich allerdings nicht wissen kann, was sonst noch so auf dem System läuft, wollte ich diesen Tipp nicht explizit mit aufnehmen. Das Aktivieren von ufw kann schnell mal dazu führen, dass irgendwelche Dienste scheinbar plötzlich nicht mehr funktionieren.

      Gruß,
      Jan

  • Bastian sagt:

    Moin, gerade die searx erfolgreich installiert.

    Was ich aber zusätzlich machen musste, ist in der „searx.meinedomain.de.conf“
    den Pfad
    # Include headers
    include /etc/nginx/snippets/headers.conf;

    musste ich auskommentieren – da sich sonst der nginix nicht starten ließ.

    Was sollte denn in der headers.conf hinterlegt sein?

    • Jan sagt:

      Hi Bastian,

      hier sind generelle Header-Infos hinterlegt (z.B. zu HSTS). Diese einfach gar nicht mehr setzen zu lassen würde ich nicht unbedingt empfehlen. Wenn nginx nicht mehr startet, dann geb mal „nginx -t“ ein. Dann listet er dir die Sachen auf, die ihm am Starten hindern. Das sollte dann den entscheidenden Hinweis bringen.

      Gruß,
      Jan

      • Bastian sagt:

        Er gibt genau die Zeile als Fehler aus. Habe die Datei von Hand erstellt – jetzt lässt sich nginix normal starten. Aber ist das so richtig ?

        • Jan sagt:

          Hi Bastian,

          die Frage ist, wie der Fehler genau lautet (Datei nicht gefunden, etc.). Das wäre schon wichtig zu wissen.

          Gruß,
          Jan

          • Bastian sagt:

            Moin, das ist die Ausgabe wenn die Datei nicht existiert

            nginx: [emerg] open() „/etc/nginx/snippets/headers.conf“ failed (2: No such file or directory) in /etc/nginx/conf.d/searx.meinedomain.de.conf:10
            nginx: configuration file /etc/nginx/nginx.conf test failed

          • Jan sagt:

            Hi Bastian,

            ok, dann war die Datei einfach nicht da. Daher einfach anlegen – der Inhalt sieht beispielsweise folgendermaßen aus:
            add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload;" always;
            add_header X-Content-Type-Options "nosniff" always;
            add_header X-XSS-Protection "1; mode=block" always;
            add_header X-Robots-Tag none always;
            add_header X-Download-Options noopen always;
            add_header X-Permitted-Cross-Domain-Policies none always;
            add_header Referrer-Policy no-referrer always;
            add_header X-Frame-Options "SAMEORIGIN" always;

            Danach nochmal nginx neu starten und es sollte keine Probleme mehr geben.

            Gruß,
            Jan

  • Bernd sagt:

    Hallo Jan,

    ich habe das Tutorial nachgebaut, das funktioniert auch SUPER!!! Vielen Dank dafür!
    Jetzt habe ich auch die Nextcloud nach deiner Anleitung am laufen, kann ich dort die SSL Verwaltung einfach übernehmen (also es läuft auf dem Nextcloud Server) eintragen? und einfach auf den Server mit der Searx Instanz verweisen? –> also auf eine Interne IPv4
    oder geht so etwas nicht?

    Vielen Dank

    Gruß Bernd

  • Bernd sagt:

    bzw. würde ich gerne die Instanz unter einem Subdir laufen lassen z.B. unter meinedomain.de/searx – da genau dieses System ja bereits bei dem Nextcloud Tutorial Anwendung findet.

    Danke Gruß Bernd

    • Jan sagt:

      Hallo Bernd,

      ja, das ist möglich. Du musst dazu nur den gateway-Host erweitern (weiteres Unterverzeichnis). Die Verwaltung der SSL-Zertifikate läuft dann analog. Als „Frontend“ für SSL dient einzig der Webserver (Gateway-Host). Was dann dahinter passiert, legst du mit dem proxy_pass fest. So kannst du die Kommunikation zur searx Instanz auch über HTTP oder über HTTPS (mit selbst signierten Zertifikaten) laufen lassen.

      Gruß,
      Jan

  • Bastian sagt:

    Moin,
    in der Datei nano /opt/searx/searx/settings.yml kann ich ja wie beschrieben verschiedende Einstellungen vornehmen.

    Werden diese Einstellungen bevorzugt behandelt ?

    Weil bei mir steht alles was die Sprache betrifft auf :
    language : „de-DE“
    und trotzdem benutzt er immer die Language „en-EN“ verwendet.

    Ich möchte die language : „de-DE“ grundsätzlich erstmal erzwingen

    Danke
    Bastian

    • Jan sagt:

      Hi Bastian,

      ja, das ist die Datei, mit der du die searx-Instanz genauer konfigurierst.
      Ich habe bei der Sprache hier folgendes stehen: language : "de"
      Dann steht die Sprache standardmäßig auf Deutsch.

      Edit: Die komplette Konfiguration meiner Instanz findest du übrigens hier.

      Gruß,
      Jan

      • Bastian sagt:

        Moin Jan,

        bei mir scheint er die Config Datei nicht zu beachten.

        • Jan sagt:

          Hi Bastian,

          das ist seltsam, bei mir gab es nie Probleme, dass er die Config ordentlich anzieht.
          Wie sieht der konkrete Befehl zum Starten des Docker-Containers aus?
          Ist in den Logfiles des Containers irgendwas zu finden? Ich vermute hier, dass irgendwo ein Fehler in der yml-Datei ist, der dann verhindert, dass die Config geladen wird.

          Gruß,
          Jan

          • Bastian sagt:

            Gestartet wird der Container, so wie du es beschrieben hast.

            docker run -d –name searx -p 8888:8888 –restart=always -e IMAGE_PROXY=True -e BASE_URL=https://searx.meindomain.de searx

            Mit dem Command :

            „sudo docker exec -it searx bash“
            kann ich mich aber nicht in den Container einloggen. Es kommt folgende Fehlermeldung:

            OCI runtime exec failed: exec failed: container_linux.go:346: starting container process caused „exec: \“bash\“: executable file not found in $PATH“: unknown

            Ich hab auch schon deine komplette settings ausprobiert, dieses aber auch ohne erfolg.

          • Jan sagt:

            Hi Bastian,

            hier brauchst du folgenden Befehl, um dich auf den Container zu verbinden („bash“ gibt es hier nicht): sudo docker exec -it searx sh

            Gruß,
            Jan

          • Bastian sagt:

            Hi Jan,
            danke für die Antwort.
            Im Container im Ordner /var/log/ befindet sich aber keine Log datei.

            Oder Liegt die hier woanders ?

          • Jan sagt:

            Hi,

            hm, komisch. Was ergibt folgender Befehl: docker logs searx

            Gruß,
            Jan

          • Bastian sagt:

            Es gibt eine ganze menge an Output. kann ich die den output in eine Datei umleiten ?

          • Jan sagt:

            Hallo Bastian,

            versuch es doch mal mit “ docker logs searx > datei.txt“.

            Gruß,
            Jan

          • Bastian sagt:

            Klappt alles nicht, ich glaube ich lösche den docker nochmal und mach es einfach neu.

            Löschen des dockers geht so wie bei dem Tut zum OnlyOffice beschrieben ?

          • Jan sagt:

            Hi Bastian,

            genau, Container stoppen (stop), entfernen (rm) und dann sicherheitshalber noch ein „docker system prune -a“ hinterher.

            Gruß,
            Jan

          • Bastian sagt:

            Hallo Jan,
            auch nach dem erneuten erstellen des Containers bleibt das problem vorhanden.

          • Jan sagt:

            Hi Bastian,

            mal ganz anderer Ansatz: Hast du auch auf einen Versions-Branch nach dem Clone gewechselt (git checkout tags/v0.15.0)? Mir ist nämlich aufgefallen, dass es z.T. Probleme gibt, wenn man einfach einen Container aus dem Master-Branch baut.

            Gruß,
            Jan

          • Bastian sagt:

            Ja genau so habe ich es gemacht

          • Jan sagt:

            Hi Bastian,

            das ist dann aber seltsam. Hast du nach dem Umstellen des Branches den Container mal gebaut/gestartet ohne die yml zu verändern?
            Ansonsten bin ich da momentan etwas überfragt.

            Gruß,
            Jan

          • Bastian sagt:

            Hallo Jan,

            ich muss mich glaube ich korrigieren, ich habe es exakt nach deiner Anleitung gemacht. Danach habe ich keine weiteren Änderungen vorgenommen.

            Und zu deiner neuen Frage, habe auch schon das Config File unberührt gelassen.

          • Jan sagt:

            Hi Bastian,

            im Moment kann ich dir dann leider nicht sagen, warum der das Config-File nicht anzieht. Erfasse dazu doch doch bitte mal einen Issue im entsprechenden GitHub-Repository, vielleicht kann dir da weiter geholfen werden.

            Gruß,
            Jan

          • Bastian sagt:

            Hallo Jan,

            sollte ich vileicht mal eine ältere version nehmen anstatt der neusten ?
            Mit welcher Version hast du deine Erstinstallation gemacht?

            Aber anscheinend bin ich hier der einzige der das problem hat.

          • Jan sagt:

            Hi Bastian,

            ja, das wundert mich ja auch. Diese Art des Fehlers konnte ich bisher noch nie beobachten.
            Ich verwende die letzte Release-Version (also 0.15).

            Auf was für einem System soll der Docker-Container gestartet werden? Ist hier irgend eine Virtualisierungs-Lösung (z.B. Proxmox) im Spiel?

            Gruß,
            Jan

        • Bastian sagt:

          Hi Jan,

          Es sind VMs die auf meinem Freenas laufen. Der Searx Container läuft nach deiner Anleitung neben einer Nextcloud (die selbe VM).

          • Jan sagt:

            Hi Bastian,

            gibt es vielleicht irgendeine Einstellung, die im Virtualisierungs-System aktiviert werden muss, damit Docker-Container ausgeführt werden können?
            Welches Virtualisierungs-System kommt zum Einsatz?

            Gruß,
            Jan

          • Bastian sagt:

            Hallo Jan,
            Ich kann dir leider nicht sagen wie das Virtualisierungssystem von FreeNas heißt.

  • Bernd sagt:

    Hallo Jan,

    ich habe es hinbekommen über die bestehende Nextcloud Instanz den 2. Ubuntu Container über ein Unterverzeichnis anzusprechen.
    Falls es jemanden interessiert ich habe einfach die Datei (/etc/nginx/conf.d/meinedomain.de.conf) modifiziert und am Ende vor der letzten geschweiften Klammer folgendes eingefügt:

    location /searx {
    proxy_pass http://IP-ADRESSE:8888;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Scheme $scheme;
    proxy_set_header X-Script-Name /searx;
    proxy_buffering off;
    }

    Jetzt ist der Server dort einfach unter der meinedomain.de/searx erreichbar und man muss sich um das Zertifikatshandling DYNDNS nur ein mal Gedanken machen.

    Zusätzlich habe ich noch die UFW auf dem Ubnuntu Container installiert mit folgenden Befehlen:

    apt install ufw -y
    ufw allow 8888/tcp
    ufw allow 443/tcp
    ufw allow 22/tcp
    ufw logging medium
    ufw default deny incoming
    ufw enable
    service ufw restart

    Alles klappt wie es soll :D

    Evtl interessiert es jemanden

    Gruß Bernd

    • Jan sagt:

      Hallo Bernd,

      ja, genau so kann man die Searx-Instanz auch mit einem Unterverzeichnis realisieren.
      Danke für deine Hinweise, ist sicherlich auch für andere interessant.
      Wenn du magst, kannst du deine Instanz ja auch hier hinzufügen.

      Gruß,
      Jan

  • Nico sagt:

    Hallo!
    Ich versuche seit einiger Zeit searx auf meinem VPS zu installieren. Dieser wird per Plesk verwaltet, searx soll auf einer Subdomain laufen.
    Die Installation funktioniert soweit. Wenn ich nun allerdings auf searx zugreifen will, lässt sich in den Logs von Plesk Docker Erweiterung folgender Fehlercode ablesen:

    „INFO:werkzeug:172.17.0.1 – – [12/Jan/2020 00:14:48] „üP7àñ]¥MAäÈÐ4EgQ [=ñ!ÂYÓôLD½0 ~’õsåmX ŸóÀ`•Lž×Lá»fãÇ_Ùuèd˜/¸“ººÀ+À/À,À0̨̩ÀÀœ/5“ HTTPStatus.BAD_REQUEST –
    ERROR:werkzeug:172.17.0.1 – – [12/Jan/2020 00:14:49] code 400, message Bad request syntax (‚\x16\x03\x01\x02\x00\x01\x00\x01ü\x03\x03\x8a§%\’\x0b¿g\x910wÔ\x05\x9f\x06\\\xa0\x8fðX\x06ù2\x80\x04\x91Á¼íæy´÷ µ\x1f\’\x1døpÏv\x9dËÎÊ\x9b\x7fNÿyk9%f\x02þr7Ãò\x00%\x1c\x80<\x00"ÊÊ\x13\x01\x13\x02\x13\x03À+À/À,À0̨̩À\x13À\x14\x00\x9c\x00\x9d\x00/\x005\x00')"

    Konnte nach einiger längerer Suche keine Lösung dafür finden.

    • Jan sagt:

      Hallo Nico,

      bis auf das „Bad Request“ ist die Sache ja ziemlich kryptisch. Daher kann ich dazu jetzt gar nicht mal viel dazu sagen.
      Zur Not einfach mal einen Issue im GitHub-Repository von searx aufmachen. Vielleicht sagt dem einen oder anderen dieser Fehler ja etwas.

      Gruß,
      Jan

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.