Pas Tout A Fait

Aller au contenu | Aller au menu | Aller à la recherche

Présentation de Seeks et installation sous Debian Lenny

Dernière mise à jour le 07 juin 2011

La recherche sur internet est l'affaire aujourd'hui de quelques grands groupes commerciaux, dominés par un géant bien connu. Cette situation n'est pourtant pas immuable, et quelques projets libres ambitionnent de rendre aux utilisateurs la maitrise de leurs recherches. L'un de ces projets est Seeks, et il arrive dans une version 0.2 utilisable et déjà riche en fonctions.

seeks_logo_shadowed_transparent.png


Présentation

Seeks est un projet de méta moteur de recherche libre (sous licence AGPL). Il prend la forme d'un proxy, utilisé soit directement par un navigateur, soit par un script placé sur un serveur web. Seeks est capable d'aller interroger les principaux moteurs commerciaux actuels, puis de regrouper les résultats par similarité. Ainsi, un site référencé chez Google, Bing et Exalead n'apparaîtra qu'une seul fois dans la page de résultat de Seeks. Il est également possible de classer les résultats par URLs, titres, et types (pdf, forums, wiki, etc). Le principe de fonctionnement est consultable sur cette page du site du projet.

Seeks aspire à fournir dans un premier temps un méta moteur facile à déployer, aussi bien sur un serveur que sur une machine personnelle. L'étape suivante serait d'offrir la possibilité de référencer son site via l'association de mots-clés à l'URL du site. Une fois cette association réalisée, il sera envisageable d'avoir des résultats sans passer par les moteurs de recherche commerciaux. Enfin, la finalité consiste à développer des extensions pour les serveurs web les plus employés sur internet, pour qu'ils puissent réaliser une auto-indexation des pages et un partage des ces pages entre les serveurs du réseau Seeks.

Il s'agit donc bien de créer un indexateur décentralisé, plutôt qu'un réel moteur de recherche comme pour le projet Yaci.

Vous pouvez tester Seeks en utilisant l'un des quelques serveurs publics disponibles, une liste de ces serveurs est consultable sur le site du projet.


Installation

Mise à jour du 31/03/10 : La version 0.2.1 de Seeks est disponible sur le site du projet. De plus, un dépôt de paquets pour Ubuntu a vu le jour. Voir la page LaunchPad de ce dépôt pour l'ajouter à votre liste.

Seeks n'est pas encore disponible en paquets .deb, il faut donc récupérer les sources et les compiler. La page SourceForge du projet héberge les archives à télécharger, vous pouvez directement télécharger les sources de la version 0.2.1 ici.

La procédure suivante a été réalisée sur une Debian Lenny, des adaptations seront nécessaires sur d'autres distributions. Adaptations probablement mineures sur les distributions basées sur Debian, comme Ubuntu.

Le proxy

Avant tout, installons les paquets nécessaire à la compilation :

aptitude install autoconf automake libtool libcurl4-gnutls-dev libpcre3-dev build-essential libxml2-dev

Voici la marche à suivre ensuite pour télécharger et compiler les sources. D'abord se rendre dans le répertoire où déposer les sources (/usr/src sera le répertoire utilisé dans cette exemple) :

cd /usr/src

Deux solutions ensuite, télécharger l'archives des sources et la décompresser :

wget http://downloads.sourceforge.net/project/seeks/solo/seeks_solo_stable-0.2src.tar.gz
tar -xzvf seeks_solo_stable-0.2src.tar.gz

Ou utiliser Git (à installer si besoin) pour rapatrier le dépôt sur votre machine :

aptitude install git-core
git clone git://seeks.git.sourceforge.net/gitroot/seeks/seeks

seeks-git.png

Une fois les sources en place sur votre machine, on lance la compilation :

cd seeks
./autogen.sh

À la fin de la génération des fichiers par autogen, le retour doit ressembler à la capture ci dessous.

seeks-autogen.png

On passe maintenant à la configuration :

./configure

seeks-configure.png

Puis on compile :

make

seeks-make.png

Et voilà !

Vous pouvez configurer le proxy (qui est basé sur Privoxy) grâce au fichier nommé "/usr/src/seeks/src/config". Ce fichier de configuration est similaire à celui de Privoxy.

Il est également possible de paramétrer le comportement du proxy concernant les recherches, par exemple en choisissant les moteurs à interroger, l'affichage d'une vignette représentant chaque résultat et le nombre de résultats par page, etc. Pour cela il faut éditer le fichier "/usr/src/seeks/src/plugins/websearch/websearch-config".

Maintenant que Seeks est compilé et configuré, il ne reste plus qu'à le lancer :

cd src/
./seeks

seeks-start.png

Le proxy est maintenant en fonctionnement, il est alors possible de l'interroger de deux manières. Directement en configurant votre navigateur pour passer par le proxy, ou en installant sur un serveur web un script qui transmettra les requêtes au proxy.


Utilisation

Via une connexion directe

Il suffit d'indiquer dans la configuration de votre navigateur l'adresse d'écoute de votre proxy, par défaut il s'agit de l'IP 127.0.0.1 et du port 8118.

seeks-firefox-proxy1.png

seeks-firefox-proxy2.png

FireFox est pénible quand il s'agit de changer rapidement de proxy, il est donc recommandé d'utiliser une extension dédiée à cette usage, comme MultiProxy Switch ou QuickProxy.

En configurant Firefox pour passer par le proxy, toutes les requêtes envoyées vers Google, Bing et Cuil seront interceptées par le proxy et traitées par Seeks. Il est possible de régler ce comportement dans le fichier "seeks/src/plugins/websearch/patterns/qi_patterns" en commentant les lignes des moteurs. Par exemple pour ne pas intercepter les requêtes vers Google, il faut modifier le fichier ainsi :

#.google.*/search?
#.google.*/custom?
.bing.*/search?
.cuil.com/search?

Faire passer votre navigateur par le proxy est la solution recommandée par le projet Seeks dans le cadre d'une utilisation sur une machine personnelle.

Via un serveur web

Il n'est pas question ici de passer en revue la configuration d'un serveur web, voici donc la procédure sans entrer dans le détail, avec Lighttpd :

aptitude install lighttpd php5-cgi php5-curl
lighty-enable-mod fastcgi
/etc/init.d/lighttpd force-reload

Le serveur Apache est bien sûr utilisable à la place de Lighttpd, mais ce dernier a l'avantage d'être moins gourmand en ressources et plus simple à configurer.

Vous voilà avec un serveur web qui écoute sur le port 80 de toutes les interfaces disponibles et dont les fichiers doivent être placés dans le répertoire "/var/www".

Le script PHP

Reste à mettre en place un script PHP (il est aussi possible d'utiliser Django, un framework web en Python) qui servira d'interface entre le serveur web et le proxy. Des explications sont disponibles sur cette page du site du projet.

Nous allons utiliser le script suivant :

<?

/* Copyright Camille Harang

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License
along with this program. If not, see http://www.fsf.org/licensing/licenses/agpl-3.0.html. */

if (array_key_exists('HTTPS', $_SERVER) && $_SERVER['HTTPS']) $scheme = 'https://';
else $scheme= 'http://';

$seeks_uri = 'http://s.s';
$proxy = 'localhost:8118';
$base_script = $_SERVER['SCRIPT_NAME'];
$base_url = $scheme.$_SERVER['HTTP_HOST'].$base_script;

if ($_SERVER['REQUEST_URI'] == '/') { header('Location: '.$base_url.'/websearch-hp'); }
else $url = $seeks_uri.str_replace($base_script, '', $_SERVER['REQUEST_URI']);

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_PROXY, $proxy);
curl_setopt ($curl, CURLOPT_RETURNTRANSFER, 1) ;
$header = array("Seeks-Remote-Location: ".$base_url);
if (array_key_exists('HTTP_ACCEPT_LANGUAGE', $_SERVER)) $header[] = "Accept-Language: ".$_SERVER['HTTP_ACCEPT_LANGUAGE'];
curl_setopt ($curl, CURLOPT_HTTPHEADER, $header);
$result = curl_exec($curl);
$result_info = curl_getinfo($curl);
if(curl_errno($curl)) echo 'CURL ERROR: '.curl_error($curl);
curl_close($curl);

header('Content-Type: '.$result_info['content_type']);

echo $result;
?>

Ce script doit être copié dans un fichier nommé, par exemple, "search.php" à placer dans le "Document-Root" de votre serveur web, par défaut le répertoire "/var/www".

Il est utilisable immédiatement si vous n'avez pas modifié la configuration de votre proxy.

Si vous avez réalisé des modifications pour, par exemple, changer le port du proxy parce que celui de votre serveur est déjà utilisé par votre privoxy pour Tor, il suffit de modifier la variable $proxy = 'localhost:8118'; et d'y indiquer le nouveau port.


Les recherches

Le script est maintenant disponible à l'adresse http://localhost/search.php/websearch-hp, et peut recevoir les mots-clés pour commencer une recherche.

seeks-running.png

seeks-search.png

Libre à vous maintenant d'ouvrir ou pas l'accès à ce serveur web.


Pour aller plus loin

Ne pas conserver les logs de recherche

Plusieurs solutions pour cela. La première et la plus simple consiste à classiquement rediriger les sorties de stderr vers /dev/null lors du lancement du proxy :

./seeks 2> /dev/null

Mais il est également possible d'indiquer au serveur web de ne pas conserver les requêtes en utilisant les lignes suivantes :


$HTTP["host"] =~ "^your_node_address$" 
{
accesslog.filename = "/dev/null"
server.errorlog = "/dev/null"
}
Relancer le proxy en cas de crash

Seeks est un jeune projet, encore instable. Il est donc intéressant de le relancer automatiquement en cas de crash. Pour faire ça en vitesse, il est possible de le lancer dans une boucle :

while true ; 
do ./seeks ; 
done

C'est un peu bourrin mais ça marche. :-)

Sinon, ami-e-s de la finesse, on peut utiliser Cron et lancer Seeks en tant que daemon. Il faut pour cela mettre la ligne suivant dans la crontab :

*/5 * * * * root [ ! -f /var/run/seeks.pid -o -z "$(cat /var/run/seeks.pid 2>/dev/null )" -o ! -d "/proc/$(cat /var/run/seeks.pid 2>/dev/null)" ]  && cd /chemin/vers/seeks/ && ./seeks --daemon

Et lancer Seeks en précisant le fichier .pid à utiliser et qu'il faut lancer le programme en tant que daemon :

./seeks --daemon --pidfile /var/run/seeks.pid

Et hop !

Pour autant, je n'ai pas à déplorer de crash fréquent du proxy avec cette version 0.2.

Ajouter Seeks dans la barre de recherche de FireFox

Seeks est respectueux des spécifications OpenSearch. Normalement il est donc possible d'ajouter le moteur dans la barre de recherche des navigateurs automatiquement, simplement en cliquant sur "Ajouter « Seeks Search »" dans la barre des moteurs. Chez moi ça ne fonctionne pas encore correctement.

seeks-firefoxsearch.png

Mais il est possible d'ajouter un petit fichier XML (Merci au forum Ubuntu-fr pour cette astuce), contenant les informations pour interroger votre proxy via le script, directement dans le répertoire de FireFox. Ce fichier nommé "seeks-search.xml" doit être placé dans le répertoire "/home/utilisateur/.mozilla/firefox/xxxxxxxx.default/searchplugins/". Si le répertoire "searchplugins" n'existe pas, il suffit de le créer. Ce fichier doit contenir les lignes suivantes :

<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/" xmlns:os="http://a9.com/-/spec/opensearch/1.1/">
<os:ShortName>Seeks Search</os:ShortName>
<os:Description>Real-time p2p pattern matching network for social websearch.</os:Description>
<os:InputEncoding>UTF-8</os:InputEncoding>
<os:Image width="16" height="16">data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAAC2AAAAtgByfICtgAAAAd0SU1FB9oCHA0aLJVTK8UAAAKbSURBVDjLdVNtSFNhGD2vu7t3dx9u1xRaEWbtWszKNMgwM6sfBqb4IyUhjLBdC6QkECxBow+QrCT7ACcJBllJhKgVRj9aURiSgllCs1DSlD62YTTUzT39aM4p8/n1wPue85z3nPdhCKvSm0VoLLuPYw2FCSul1Xf0oj5D4DQBlYrrSUvcWZS2IWNCtklwNrlDGDbfFNZmo62yGyXXD1pjDLEfRV4HxtArqDU+o86U/vBVCwZHB82uB5gMH8ottAQAUHP8uwARxn6P5jSfevQ0eCiutxm9K6Klfhfc5nAVLJxt79lkybLK6hJ5ESKvhaAWfnX3dVb1XP1slxWpnED1AMRhu2d6HhMVTmDQSusCAT+8M94rs76Zhu+ub7ET7rFGWZEIQPH/aWxNOGaRAgA4Up9PvIrvbzrZlgoAiaUxqUR0CaD9AIPT7l6ECSnIv7gHADDrm7kBxlJO3D78PKHEQET0kghHnXYPA+gAAMiKhIhVda8cAFB8Lb+jsDabAMBiM2lkxfRj/s5S8CIPBr68BwDcPd2e55ub9RgKsJYxZgZYnKyYWiMNDRHsq0pFZ/Vr5F3ILDAf4qI2xm+JjzNGvwDgANBOYEUWm1TntLshK6blTcw9v4tEXgTPCQ6jPqbm1vEWR1D6GwKlD9s9bNkUMiuTknRC9KCg1nzSClqrKGghcAK6eh/X8RzvZQw1RMw63OQeiujBn79TI3MBP/wBf3NrxRPm8/vKBkb6vvKcuoIxVgMwMEajERPYXbk5+BtTfuacS6fs6h2GMOc3yYpEsmIaX5pEaBcctR8AANP+6a2cihvTawxTFpvpGQA/gNzgi7cvmwIAZJ1JxtvLQ+Nz/oBh0jPRRaBtjLEsAB0g0jnt7nFZkeC0L6zzPyt16RABuJRgAAAAAElFTkSuQmCC</os:Image>
<os:Url type="text/html" method="GET" template="http://votreserveur.tld/search.php/search.php?q={searchTerms}&amp;expansion=1&amp;action=expand">
</os:Url>
</SearchPlugin>

Penser à adapter l'URL de la ligne qui commence par "<os:Url" pour correspondre à celle de votre serveur. Vous pouvez trouver cette URL en faisant une recherche sur votre serveur, elle sera visible dans la barre d'adresse du navigateur, il suffira de remplacer le ou les mots clés par {searchTerms}.

Matthieu Patout

Auteur: Matthieu Patout

Restez au courant de l'actualité et abonnez-vous au Flux RSS

manu manu ·  16 août 2010, 14:40

installation sous debian, merci

Wii U Wii U ·  23 septembre 2011, 16:08

Pas mal pas mal, je vais lire les autres, je te dirais ce que j'en pense !

aucune annexe



Voir Aussi

git-logo.png

Installation, configuration et administration d'un dépôt Git avec Gitolite

Gitolite est une solution permettant de gérer des dépôts Git distants. Il s'agit d'une ré-écriture...

Lire la suite

fail2ban_logo.png

Activer Fail2ban sur une adresse IPv6

Alors que les blocs libres d'adresses IPv4 se font rares, le lancement de la version 6 du protocole...

Lire la suite