Installation de Searx

Classé dans : Cultiver son jardin | 15
image_pdfimage_print

Framabee est le méta-moteur de recherche proposé par Framasoft basé sur le logiciel searx.

Voici un tutoriel pour vous aider à l’installer sur votre serveur. Il est conçu pour une installation pas à pas pour une Debian (testée) ou une Ubuntu (non testée) avec virtualenv. Il s’appuie sur les explications fournies sur le site du logiciel

N’hésitez pas à poser des questions dans les commentaires. Si vous êtes parvenu à l’installer, donnez-nous le lien vers votre instance et dites-nous dans quelle mesure ce tutoriel vous aura été utile 🙂

Installation

1 – Préparer la terre

Pour Ubuntu, assurez-vous d’avoir activé les dépôts universe (voir http://doc.ubuntu-fr.org/depots#depots_officiels).

2 – Semer

Pour une installation basique

Installation des dépendances systèmes nécessaires

sudo apt-get install git build-essential libxslt-dev python-dev \
python-virtualenv python-pybabel zlib1g-dev \
libffi-dev libssl-dev

Installation de 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

Installation des dépendances python dans virtualenv

sudo -u searx -i
cd /usr/local/searx
virtualenv searx-ve
. ./searx-ve/bin/activate
pip install -r requirements.txt
python setup.py install

3 – Arroser

Configuration

Modifiez la phrase secrète du fichier searx/settings.yml (ceci est une étape nécessaire pour la sécurité de votre application)

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

Ouvrez searx/settings.yml et baladez-vous dans les différentes options de configuration. Modifiez-les selon vos besoins et vos envies.

Vérification

Il est ici nécessaire d’être dans le virtualenv. Si vous n’y êtes plus :

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

Lancez searx :

python searx/webapp.py

Vérifiez le fonctionnement de searx en vous rendant à l’adresse http://localhost:8888.

Si tout fonctionne correctement, coupez le serveur de test (Ctrl+C) et désactivez l’option de debug dans settings.yml :

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

Searx n’est pas dæmonisé (il ne tourne pas en arrière-plan). Cette dæmonisation est le rôle d’uwsgi.

Vous pouvez maintenant sortir du virtualenv (il suffit d’utiliser la commande deactivate) et de l’utilisateur searx. Exécutez la commande exit pour cela.

uwsgi

Installation des paquets :

sudo apt-get install uwsgi uwsgi-plugin-python

Créez le fichier de configuration /etc/uwsgi/apps-available/searx.ini avec ce contenu :

[uwsgi]
# Quel est l'utilisateur qui fera tourner le code
uid = searx
gid = searx

# Nombre de workers (habituellement, on met le nombre de processeurs de la machine)
workers = 4

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

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

# Module à importer
module = searx.webapp

# Chemin du virtualenv
virtualenv = /usr/local/searx/searx-ve/

Activez la configuration de l’application et relancez uwsgi

cd /etc/uwsgi/apps-enabled
sudo ln -s ../apps-available/searx.ini
sudo /etc/init.d/uwsgi restart

Serveur web

Nginx

Si nginx n’est pas installé (uwsgi ne fonctionnera pas avec le paquet nginx-light) :

sudo apt-get install nginx

Créez le fichier de configuration /etc/nginx/sites-available/searx avec ce contenu :

Hébergé à la racine (/)
server {
    listen 80;
    server_name searx.example.com;
    root /usr/local/searx;

    location / {
        include uwsgi_params;
        uwsgi_pass unix:/run/uwsgi/app/searx/socket;
    }
}

Activez la configuration dans nginx :

sudo ln -s /etc/nginx/sites-available/searx /etc/nginx/sites-enabled/

Vérifiez la configuration de nginx :

sudo nginx -t

Relancez nginx et uwsgi :

sudo service nginx restart
sudo service uwsgi restart
Hébergé dans un sous-répertoire de l’URL (/searx)
location = /searx { rewrite ^ /searx/; }
location /searx {
    try_files $uri @searx;
}
location @searx {
    uwsgi_param SCRIPT_NAME /searx;
    include uwsgi_params;
    uwsgi_modifier1 30;
    uwsgi_pass unix:/run/uwsgi/app/searx/socket;
}

Activez l’option base_url dans searx/settings.yml :

base_url : http://your.domain.tld/searx/

Relancez nginx et uwsgi :

sudo service nginx restart
sudo service uwsgi restart
Apache (non testé)

Ajoutez le module uwsgi :

sudo apt-get install libapache2-mod-uwsgi
sudo a2enmod uwsgi

Ajoutez cette configuration :

Options FollowSymLinks Indexes
SetHandler uwsgi-handler
uWSGISocket /run/uwsgi/app/searx/socket

Relancez Apache :

sudo /etc/init.d/apache2 restart

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, cela suffit.
Si vous avez modifié du code python, il faudra relancer uwsgi pour que les modifications soient prises en compte :

sudo service uwsgi restart

N’oubliez pas de partager vos modifications avec la communauté !

15 Réponses

  1. Salut,

    Merci pour ce tuto.
    Je suppose que vous connaissez aussi le soft que j’ai codé de mes mains « MySearch » qui fait à peu près la même chose que searx: https://search.jesuislibre.net/
    Sinon, dans une perspective d’anonymat, j’activerai le proxy d’images par défaut. Car sinon, l’internaute laisse son IP à Google, Bing, etc… à chaque recherche d’image. (Voir, il devrait être possible de retrouver la requête à partir des résultats)
    Vous n’avez jamais eu de problème si quelqu’un lance trop de requêtes? Google peut alors demander de remplir un captcha pour toute requête supplémentaire.

  2. Impossible de changer la phrase secrete. On me demande un mot de passe searx (?) et la phrase secrete de searx/settings.yml ne fi

  3. Impossible de changer la phrase secrete de searx/settings.yml. D’où sort le mot de passe searx demandé?

  4. Merci pour ce tuto. Configuration plus complète pour Apache 2.4 (ne marchait pas pour moi sans le « Require all granted » notamment) :

    ServerName searx.example.org
    DocumentRoot /usr/local/searx

    Options FollowSymLinks Indexes
    SetHandler uwsgi-handler
    uWSGISocket /run/uwsgi/app/searx/socket
    Require all granted

  5. Ça ne fonctionne pas chez moi et je ne comprends pas pourquoi.
    J’ai bien suivi le tuto, j’ai bien installé une instance de searx sur mon serveur local, le test effectué via « python searx/webapp.py » fonctionne nickel.

    Là ou ça cloche, c’est dans l’accès à l’instance depuis un autre ordi du réseau local.

    Normalement, en lançant l’instance dans le répertoire racine, celle-ci est accessible directement depuis l’adresse locale du serveur, non ?
    Pour moi, j’ai simplement la page d’accueil d’Nginx (« Welcome to nginx on Debian! »).

    Je ne comprends pas.

  6. Bonjour à tous,
    pour le site de Tuxicoman, j’obtiens le message d’erreur suivant :
    Impossible d’achever la transaction sécurisée

    Connexion sécurisée : erreur fatale (40) du serveur.

    https://search.jesuislibre.net/

    Impossible de se connecter au serveur.Les méthodes de chiffrement acceptées par le serveur ne sont peut être pas activées dans les préférences de sécurité.

    Veuillez noter que certaines méthodes ne sont plus supportées, et que l’accès ne sera plus possible tant que le site web n’aura pas été mis à jour avec un chiffrement performant.

    Firefox ne fait pas d’objection

  7. Salut la communauté!

    Même problème avec le MdP Searx… qqunE aurait une solution? Je tourne sous Ubuntu 14.04
    Perso je suis pas assez au taquet avec ubuntu pour comprendre le message d’Adrien.

    Merci d’avance!

  8. Salut,

    tout d’abord un grand bravo pour votre travail et un merci tout spécial à pyg et pouhiou pour leurs interventions brestoises ;). le tuto est très bien fait même si il a fallu l’adapter à la marge à ma distro (Gentoo) ainsi qu’à mon archi (frontal nginx + backend apache 2.4).
    Bref mon instance tourne nickel à l’adresse suivante https://searx.drakonix.net 🙂

  9. Bonjour à tous,
    manifestement il manque quelque chose dans ce tuto (pourtant facile à suivre).

    Une fois ressorti du virtualenv Python, évidemment l’adresse localhost:8888 est inaccessible. UWSGI n’y faisant rien, comment est-on censé accéder à son instance Searx une fois qu’on est ressorti du virtualenv ??
    J’ai beau chercher je ne trouve pas.

    Merci d’avance

    • Logique : Uwgi ne lance pas le serveur sur une socket réseau, mais sur une socket Unix qui se trouve (normalement) dans /var/run/uwsgi/app/searx.

      Une fois sorti du virtualenv, on accède à son instance Searx via le serveur web (Nginx ou Apache) qui va utiliser la socket Unix pour transférer les requètes à Searx.

      • Bonjour,
        merci d’avoir répondu. J’avoue que je n’ai rien compris par contre 🙂

        Bref, chez moi l’install se déroule sans problème, mais au final, impossible d’accéder à mon instance Searx, ni en local, ni depuis l’extérieur, à partir du moment où webapp.py est arrêté.
        J’ai bien ajouté ce qu’il faut dans apache2.conf, relancé Apache, j’ai bien créé le searx.ini, lancé le service uwsgi… rien à faire, ça veut pas.

      • Faudrait demander aux gars de Searx (https://twitter.com/Searx_engine).

        Je vois dans la doc d’install avec Apache « uWSGISocket /run/uwsgi/app/searx/socket ». Est-ce que ton uwsgi met bien la socket à cet endroit ?

  10. Super ce tutoriel !
    Je dispose maintenant d’une instance fonctionnelle de Searx accessible par toutes mes machines.

    Néanmoins, alors que les recherches fonctionnent parfaitement avec Firefox Mobile (Android), Firefox Search (https://support.mozilla.org/fr/kb/recherche-firefox-instantanement-sur-votre-ecran-d) ne renvoie aucun résultat avec Searx par défaut !

    Je me demande si Searx supporte les requêtes faites avec cette interface…

Laissez un commentaire