Die Open Source Metasuchmaschine, die Dennis in kürzlich auf diesem Blog vorgestellt hat, basiert auf Python und kann auch auf einem eigenen Server installiert werden. So erlangt man noch mehr Kontrolle und kann sich absolut sicher sein, dass keine Nutzungsstatistiken erhoben werden.
In diesem Beitrag werde ich die Installation und Einrichtung auf einem Ubuntu 12.04 Server mit Apache Webserver erklären. Dabei orientiere ich mich an der offiziellen, englischsprachigen Anleitung auf GitHub. Die Anleitung sollte aber auch für die meisten anderen Linux-basierten Server gelten (evtl. heißen die zu installierenden Pakete anders).
Searx Basis installieren
Zuerst müssen alle nötigen Python Pakete sowie Git und Kompilierungsbibliotheken auf dem System installiert werden:
sudo apt-get install git build-essential libxslt-dev python-dev python-virtualenv python-pybabel zlib1g-dev
Ein neuer Nutzer „searx“ wird angelegt:
sudo adduser searx --disabled-password --disabled-login
… und zu diesem Benutzer gewechselt:
sudo -i -u searx
Dann wird der Searx Code von GitHub heruntergeladen und im Verzeichnis /home/searx/ abgelegt:
sudo git clone https://github.com/asciimoo/searx.git
Nun wird in den searx-Unterordner gewechselt:
cd searx
… und eine virtuelle Pythonumgebung „searx-ve“ generiert und dann aktiviert.
virtualenv searx-ve . ./searx-ve/bin/activate
Weitere Pythonbibliotheken, die von Searx benötigt werden, werden nun nachinstalliert:
pip install -r requirements.txt
Die Datei settings.yml soll einen zufälligen Schlüssel beinhalten, der durch folgendes Kommando generiert und an die entsprechende Stelle der Konfigurationsdatei geschrieben wird:
sed -i -e "s/ultrasecretkey/`openssl rand -hex 16`/g" searx/settings.yml
In der Konfiguration settings.yml lassen sich noch weitere Einstellungen festlegen, wie z.B. der Port, auf den die Suchmaschine lauschen soll. Standardmäßig ist das der Port 8888.
Außerdem können in der Datei Suchmaschinen definiert werden, die nach Ergebnisse abgefragt werden sollen. Auf diese Weise lassen sich z.B. Ergebnisse von Flickr und Bing ausschließen.
Die virtuelle Pythonumgebung und der Benutzer „searx“ werden nun durch Eingabe von „exit“ verlassen und wir kümmern und um den automatischen Start von Searx.
Automatischer Start mit uWSGI
uWSGI erlaubt es uns, die Suchmaschine beim Systemstart automatisch starten zu lassen und sorgt dafür, dass Searx im Hintergrund als Daemon läuft. Dazu wird uwsgi für Python installiert:
sudo -s apt-get install uwsgi uwsgi-plugin-python
Mit root-Rechten wird eine Konfigurationsdatei für den neuen uwsgi Service erstellt:
nano /etc/uwsgi/apps-available/searx.ini
… und mit folgendem Inhalt gefüllt:
[uwsgi] # Who will run the code uid = searx gid = searx # Number of workers workers = 4 # The right granted on the created socket chmod-socket = 666 # Plugin to use and interpretor config single-interpreter = true master = true plugin = python # Application base folder base = /home/searx/searx # Module to import module = searx.webapp # Virtualenv and python path virtualenv = /home/searx/searx/searx-ve/ pythonpath = /home/searx/searx/ chdir = /home/searx/searx/searx/ # The variable holding flask application callable = app
Die Konfiguration wird im uwsgi Apps Verzeichnis registriert (verlinkt) und gestartet:
cd /etc/uwsgi/apps-enabled ln -s ../apps-available/searx.ini service uwsgi restart
Searx mit Apache Webserver verbinden
Searx wird soll durch den Apache Webserver aufgerufen werden. Sobald eine bestimmte Domain oder ein durch „<location>“ definierter Pfad aufgerufen wird z.B. suche.domain.tld, soll Searx aktiv werden. Ich gehe von einem fertig installierten und konfigurierten Webserver aus. Für die uwsgi-Funktionalität muss ein Apache Modul nachinstalliert werden:
apt-get install libapache2-mod-uwsgi a2enmod uwsgi
In eine beliebige Apache Virtual Host Konfiguration können nun folgende Zeilen eingefügt werden:
Options FollowSymLinks Indexes SetHandler uwsgi-handler uWSGISocket /run/uwsgi/app/searx/socket
Sie sorgen dafür, dass Anfragen an das Searx Python Programm weitergeleitet werden. Zum Schluss wird der Webserver neu gestartet damit die Änderungen an der Konfiguration übernommen werden und das uwsgi Modul aktiv wird:
service apache2 restart
Searx aktualisieren
Wie ihr Searx updaten könnt, erfahrt ihr in diesem Beitrag: Searx aktualisieren
Danke für die Anleitung, hat alles geklappt
https://www.foss-it.de
Ich werde das Ganze dann mal versuchen auf Nginx zu buttern oder euch sogar bitten, hierfür noch ein paar Zeilen zu ergänzen.
Sonst einmal vielen Dank =)
https://legacy.thomas-leister.de
Soweit ich mich erinnern kann gibt es in der verlinkten original Anleitung ein Config-Snippet für Nginx (ganz unten). Kenne mich mit Nginx leider selbst nicht aus, aber vielleicht hilft dir das weiter.
LG Thomas
http://www.suufi.de/
Moinsen,
vielen Dank für die Anleitung.
Beim Kompilieren gab es einen Fehler „cannot find -lz“, weil zwischenzeitlich weitere Pakete notwendig geworden sind, und zwar zusätzlich python-pybabel und zlib1g-dev. Siehe Hier.
Es wäre daher sinnvoll, wenn Du die Zeile bei änderst nach:
sudo apt-get install git build-essential libxslt-dev python-dev python-virtualenv python-pybabel zlib1g-dev
Schönen Tag noch
henning
https://legacy.thomas-leister.de
Danke für den Hinweis, hab die Anleitung aktualisiert.
LG Thomas
Hi,
ich bekomm es leider nicht hin, es startet nicht :/
Bekomme leider auch nur ein „Adresse kann nicht gefunden werden“. Bin zu doof dazu^^
Hallo,
der erste Link im Beitrag (thomas-leister.de/internet/searx-metasuchmaschine-mit-potential/) funktioniert nicht mehr.
Hi,
wie sieht es damit aus, wenn ich Searx auf meinem Server installiere? Kommen die Anfragen an google und co. von meiner Server-IP oder werden sie über eine Art Proxy (Searx-Server?) weitergeleitet?
Da ich meine eigene Domain über den Server laufen lasse, ist anhand vom Reverse-Lookup sofort eine Personalisierung möglich.
Gruß Marco
https://legacy.thomas-leister.de/ueber-mich-und-blog/
Hi,
für die Suchmaschinen (z.b. Google) sieht es so aus, als würde dein Server die Suchanfragen stellen. Für sie ist nur die Searx-Server-IP sichtbar. Aus diesem Grund sollte man einen Searx Server niemals alleine nutzen, da – wie du schon sagst – sonst sogar noch ein besseres Profiling möglich wird. Die Server-IP ist ja idR. statisch.
Eine Searx-Instanz sollte immer von so vielen Usern wie möglich genutzt werden, um kein exaktes Profiling zuzulassen, sondern die Nutzerprofile verschwimmen zu lassen.
LG Thomas
https://social.mxchange.org/roland
Leider startet searx nicht. Wenn ich meine Sub-Domain aufrufe, bekomme ich einen Download mit MIME application/octet-stream und die Datei ist binär.
https://social.mxchange.org/roland
Hier ist eine komplettere searx.ini (und ein fehlender „install“ schritt): http://freedif.org/searx-meta-search-engine-respecting-privacy-for-your-server/
https://social.mxchange.org/roland
Noch etwas mehr Privatsphäre gibt man seinen Nutzern, indem das Logfile von uwscgi auf /dev/null umgeleitet wird:
root@hostname:/var/log/uwsgi/app# ln -s /dev/null searx.log
http://yacy.1a-referenzen.de
Na ja, über die Funktionalität kann ich nichts sagen, da bei „ubuntu-16.04.1-server-amd64“ die Zeile „sudo adduser searx –disabled-password –disabled-login“ wörtlich genommen wird und damit ein Zugriff als „searx“ verweigert wird. Somit wird auch das Aufspielen vom Githup torpediert. Da ich eine fertige Installationsanleitung suche (aus Zeitmangel wegen eigener Projekte), muss ich mich wohl noch etwas gedulden. Aber wirklich schön und ausführlich beschrieben – die Seite merk‘ ich mir. Yacy läuft bei mir auch schon seit mehreren monaten stabil, da wäre searx eine wundervolle Ergänzung.
Grüße von der Insel, Fred
http://reuthernet.at
Hallo, ich habe alles nach Wiki und den u.a. Anweisungen auf meinem RPi installiert. Bevor ich uwsgi installiert hatte, konnte ich per links2 searx im terminal aufrufen. Nach der installation startet zwar die searx im Terminal, aber dort wo vorher die Eingabezeile für den Suchtext war, steht nun Page not found. Wenn meinen Server über den Browser aufrufe started searx auch aber es steh auch dort nur in der Mitte Seite nicht gefunden.
Ich gehe davon aus, dass er die webapp.py nicht startet, bzw. findet. Sie ist im Verzeichnis /usr/local/searx/searx/ so wie auch in der searx.ini angegeben.
Woran kann es nun liegen ??
Danke schon mal
Sehr gute Anleitung – hat auch mit Ubuntu 16.04 wunderbar geklappt! :-)
Danke!