Searx (métamoteur de recherche libre)

searx

Searx est un métamoteur de recherche libre, disponible sous licence publique générale Affero version 3, ayant pour but de protéger la vie privée de ses utilisateurs3. Searx s’est inspiré du projet Seeks4. Contrairement à ce dernier cependant, il ne dispose pas5 de possibilité de retransmettre les meilleurs résultats en pair-à-pair. Searx peut être utilisé au travers d’une instance publique mais il peut aussi être installé pour disposer de sa propre instance.Info wikipédia

https://asciimoo.github.io/searx/

Searx Installation

Debian utilisation virtualenv*

sudo apt install git build-essential libxslt-dev python-dev python-virtualenv python-babel zlib1g-dev libffi-dev libssl-dev 
sudo apt install python virtualenv  # + debian stretch

Installer searx

cd /usr/local
sudo git clone https://github.com/asciimoo/searx.git
sudo useradd searx -d /usr/local/searx
sudo chown searx:searx -R /usr/local/searx

Installer les dépendances dans virtualenv

sudo -u searx -i
cd /usr/local/searx
virtualenv searx-ve
. ./searx-ve/bin/activate
./manage.sh update_packages

Configuration, modification phrase secrète du fichier

sed -i -e "s/ultrasecretkey/`openssl rand -hex 16`/g" searx/settings.yml

Editer searx/settings.yml si nécessaire.

Searx Vérification

Démarrer searx:

python searx/webapp.py

Ouvrir http://localhost:8888

Si tout fonctionne,désacriver l’option debug dans settings.yml:

sed -i -e "s/debug : True/debug : False/g" searx/settings.yml

Note , dans le cas d’un site distant , il faut rediriger l’accès http par un tunnel SSH vers l’ordinateur appelant

ssh -p 55027 -i ~/.ssh/kvm-vps526361 -L 8080:localhost:8888 adxo@cinay.pw -N  # avec clé

L’interface web peut alors être consultée via http://localhost:8080. CTRL+C annule la connexion.

A ce stade, searx n’est pas diabolisé (daemonized), uwsgi le permet.
Vous pouvez quitter le virtualenv et le searx user bash (entrez deux fois la commande de sortie exit).

uwsgi

Installation des paquets:

sudo apt-get install uwsgi uwsgi-plugin-python

Création du fichier de configuration /etc/uwsgi/apps-available/searx.ini avec le contenu suivant (en mode su)

[uwsgi]
# utilisateur qui fera tourner le code
uid = searx
gid = searx

# disable logging for privacy
disable-logging = true

# Nombre de workers (nombre de processeurs de la machine))
workers = 4

# les droits sur le socket créé
chmod-socket = 666

# Plugin à utiliser et configuration de l'interpréteur
single-interpreter = true
master = true
plugin = python
lazy-apps = true
enable-threads = true

# Module to import
module = searx.webapp

# Chemin du virtualenv et python
virtualenv = /usr/local/searx/searx-ve/
pythonpath = /usr/local/searx/
chdir = /usr/local/searx/searx/

Activer l’application uwsgi et redémarrer:

cd /etc/uwsgi/apps-enabled
ln -s ../apps-available/searx.ini
systemctl restart uwsgi.service

Searx serveur web

Le sous-domaine searx.cinay.pw (il n’est plus nécessaire de créer un certificat SSL si la wildcard est utilisée lors de la premiète création)
Il faut ajouter le sous-domaine aux DNS du “registar” OVH par un CNAME

searx                     3600 IN CNAME  cinay.pw.

Configuration nginx

Créer le fichier /etc/nginx/conf.d/searx.cinay.pw.conf

server {
    listen 80;
    listen [::]:80;
    server_name searx.cinay.pw;
    # enforce https
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name searx.cinay.pw;
    root /usr/local/searx;

    location / {
            include uwsgi_params;
            uwsgi_pass unix:/run/uwsgi/app/searx/socket;
            access_log /dev/null;
            error_log /dev/null;
    }
}

Activer base_url dans /usr/local/searx/searx/settings.yml

base_url : "https://searx.cinay.pw/"

Vérifier et redémarrer les services

nginx -t
systemctl restart nginx
systemctl restart uwsgi

Désactiver les journaux
Pour une meilleure confidentialité, vous pouvez désactiver les logs nginx sur searx.
Ajouter le contenu qui suit après la ligne uwsgi_pass dans /etc/nginx/conf.d/searx.cinay.pw.conf

            access_log /dev/null;
            error_log /dev/null;

Redémarrer le service nginx

systemctl restart nginx

Paramétrage et personnalisation

Paramétrage

Le fichier de paramétrage /usr/local/searx/searx/settings.yml
Ci dessous , les lignes modifiées

general:
    debug : False # Debug mode, only for development
    instance_name : "Cin Yan Searx" # displayed name

server:
    secret_key : "e554gd5er6rsdRgzjkll44556" # change this!
    base_url : "https://searx.cinay.pw/"

engines:

# Désactiver google (provoque des erreurs ,ne donne aucun résultat)
  - name : google
    engine : google
    shortcut : go
    disabled : True

# Activer StartPage (il utilise google dans son métamoteur)
  - name : startpage
    engine : startpage
    shortcut : sp
    timeout : 6.0
    disabled : False

# Désactiver ixquick (qui est redirigé sur StartPage depuis avril 2018)
  - name : ixquick
    engine : startpage
    base_url : 'https://www.ixquick.eu/'
    search_url : 'https://www.ixquick.eu/do/search'
    shortcut : iq
    timeout : 6.0
    disabled : True

Ouverture résultat (lien) sur un nouvel onglet du navigateur, modifier le plugin
Modifier le fichier /usr/local/searx/searx/plugins/open_results_on_new_tab.py ,default_on = False -> default_on = True

from flask_babel import gettext
name = gettext('Open result links on new browser tabs')
description = gettext('Results are opened in the same window by default. '
                      'This plugin overwrites the default behaviour to open links on new tabs/windows. '
                      '(JavaScript required)')
default_on = True

js_dependencies = ('plugins/js/open_results_on_new_tab.js',)

Relancer le service uwsgi pour une prise en charge des modifications

sudo systemctl restart uwsgi

Personnalisation

Si vous souhaitez modifier Searx, effectuez vos changements, puis placez-vous dans le virtualenv

sudo -u searx -i
cd /usr/local/searx
virtualenv searx-ve
. ./searx-ve/bin/activate

Relancez l’installation pour que vos modifications soient prises en compte :

python setup.py install

Si vous avez ajouté des fichiers statiques ou des templates, il est possible que cette étape échoue. Ouvrez setup.py et regardez la section package_data. Il faut absolument que seuls des fichiers correspondent aux chemins de cette section.
Par exemple, static/default/css ne contient que des fichiers. Si vous avez ajouté un dossier dans static/default/css, le chemin static/default/css/* correspondra aux fichiers ET à votre dossier, ce qui bloquera l’installation. Il faudra remplacer

'static/default/css/*'

par

'static/default/css/votre_dossier/*',t
'static/default/css/*.css'

Si vous n’avez modifié que des fichiers statiques, ou des templates, inutile de relancer le service uwsgi.

Si vous avez modifié du code python ou le fichier de paramétrage settings.yml, il faudra relancer le service uwsgi pour que les modifications soient prises en compte

sudo systemctl restart uwsgi

Searx : Comment effectuer les mises à jour?

sudo chown searx.searx -R /usr/local/searx/.git/ # les droits sur le dossier
cd /usr/local/searx
sudo -u searx -i
. ./searx-ve/bin/activate
git stash

En cas d’erreur du type

*** Veuillez me dire qui vous êtes.

Lancez

  git config --global user.email "Vous@exemple.com"
  git config --global user.name "Votre Nom"

Exécuter

git config --global user.email "searx@cinay.pw"
git config --global user.name "searx"

Puis relancer git stash et poursuivre

git pull origin master
git stash apply
./manage.sh update_packages
exit

Relancer le service

sudo systemctl restart uwsgi