searx Suchmaschine

searX ist eine kostenlose Internet-Metasuchmaschine, die Ergebnisse von mehr als 70 Suchdiensten zusammenfasst (siehe auch Interview: Searx, eine Suchmaschine mit Datenschutz bei NETZPOLITIK.ORG). Die Benutzer werden weder verfolgt noch wird ein Profil von ihnen erstellt. Es gibt Instanzen im internet (Public searX instances), Alternativ kann man sich auch eine eigene (self hosted) Instanz aufsetzen. Die hier gezeigte Installation erfolgt unter der URL:

https://<host>/searx

auf einem Apache Server und wird u.A. im Kaptitel ‚with apache‘ in der searX-Doku beschrieben. Zur Installation existiert das Skript searx.sh, das alle Setups vornimmt. Statt dem Original searX-git installiert es den konsolidierten Branch dm-cloud aus dem Fork return42/searx. Das Skript legt folgende Umgebungen fest:

SEARX_GIT_URL="https://github.com/return42/searx.git"
SEARX_GIT_BRANCH="dm-cloud"

SEARX_USER=searx
SEARX_HOME="/home/$SEARX_USER"
SEARX_VENV="${SEARX_HOME}/searx-venv"
SEARX_REPO_FOLDER="${SEARX_HOME}/searx-src"
SEARX_SETTINGS="${SEARX_REPO_FOLDER}/searx/settings.yml"

# Apache Settings
SEARX_APACHE_DOMAIN="$(uname -n)"
SEARX_APACHE_URL="/searx"
SEARX_APACHE_SITE=searx

# uWSGI Settings
SEARX_UWSGI_APP=searx.ini

Für eine Installation führt das Skript (in etwa) folgende Schritte aus:

  1. Es werden die erforderlichen Ubuntu/Debian Pakete für Apache und Python3 installiert. Das Paket libapache2-mod-uwsgi installiert uWSGI für Apache (s.a. uWSGI-github, uwsgi und uwsgi-plugin-python3):

    sudo -H apt install \
         libapache2-mod-uwsgi uwsgi uwsgi-plugin-python3 \
         git build-essential libxslt-dev python3-dev python3-babel zlib1g-dev \
         libffi-dev libssl-dev
    
  2. Es wird der Benutzer searx angelegt. Sein $HOME ist /home/searx und in diesen Ordner wird alles weitere installiert:

    sudo -H adduser \
         --disabled-password --gecos 'searX' \
         --home $SEARX_HOME $SEARX_USER
    
  3. Es wird ein Clone der Sourcen erstellt (Benutzer ist searx in /home/searx auf Host searx-server):

    sudo -u searx -i   # searx@searx-server
    $ cd ${SEARX_HOME}
    $ git clone https://github.com/asciimoo/searx.git searx-src
    
  4. Es wird eine virtuelle Python Umgebung eingerichtet:

    sudo -u searx -i   # searx@searx-server
    $ python3 -m venv ${SEARX_VENV}
    
  5. In der Umgebung werden die für searX erforderlichen Python Pakete installiert:

    sudo -u searx -i   # searx@searx-server
    $ source ${SEARX_VENV}/bin/activate
    (searx-venv) $ cd $HOME/searx-src
    (searx-venv) $ ./manage.sh update_packages
    
  6. searX Konfiguration:

    1. Es wird die searX Konfiguration /home/searx/searx-src/searx/settings.yml eingespielt.

    2. Anlegen eines Schlüssels. :

    (searx-venv) $ cd $HOME/searx-src
    (searx-venv) $ sed -i -e "s/ultrasecretkey/`openssl rand -hex 16`/g" searx/settings.yml
    
  7. Es wird ein rudimentärer Test der searX-Installation durchgeführt.:

    (searx-venv) $ timeout 300 python3 searx/webapp.py &
    (searx-venv) $ xgd-open http://127.0.0.1:8888/
    
  8. Es wird die uWSGI Konfiguration für die searx App installiert und aktiviert:

    cd /etc/uwsgi/apps-enabled
    sudo -H ln -s ../apps-available/searx.ini
    
  9. Es wird die Apache Site /etc/apache2/sites-available/searx.conf eingerichtet:

    sudo -H a2ensite -q searx
    sudo -H apachectl configtest
    sudo -H service apache2 force-reload
    
  10. Es wird die Verfügbarkeit über den Apache Server geprüft:

    curl --location --head --insecure https://${SEARX_APACHE_DOMAIN}${SEARX_APACHE_URL}