TODO wrote:- Reconstruction du tutoriel !
- Configuration poussée.
- Allègement de l'instance.
searx (des instances publiques sont disponibles ici) est ce qu'on appelle un méta-moteur de recherche. Un méta-moteur de recherche n'est pas un moteur de recherche, mais il utilise des moteurs de recherche généralistes. Ceux-là indexent du contenu, contrairement à votre instance du méta-moteur qui va seulement puiser et corréler les résultats trouvés sur divers moteurs de recherche. L'intérêt n'est donc pas seulement de se passer de Google (et donc de participer à la décentralisation des services sur Internet), qui est sans aucun doute le moteur de recherche le plus pertinent, mais aussi d'optimiser ses recherches, même s'il faut du temps avant de trouver le couple idéal de moteurs. Le méta-moteur permet également d'anonymiser vos recherches puisque les moteurs ne verront logiquement pas l'IP d'origine, celle de votre ordinateur, mais uniquement celle du serveur. Voici un schéma de fonctionnement d'un méta-moteur de recherche :
searx permet non seulement d'effectuer des recherches classiques, mais aussi des recherches d'images, et d'autre contenu (vidéo, actualité, torrents...). Vous pouvez activer et désactiver les moteurs que vous souhaitez.
L'instance est personnalisable, mais searx fournit des paramètres plutôt poussés dans son interface, en plus du contrôle fin des moteurs à utiliser. De plus, searx est fournit avec plusieurs thèmes. Il y en aura forcément un qui vous conviendra.
Alors si vous êtes convaincus, on se lance, et c'est plutôt simple, voire à la portée de tous !

On commence par une bête mise à jour des paquets du système.
apt-get update && apt-get upgrade
On installe les pré-requis à l'installation et au bon fonctionnement de searx.
apt-get install git build-essential libxslt-dev python-dev python-virtualenv python-pybabel python-pip zlib1g-dev libffi-dev libssl-dev
On crée un dossier dans lequel on fera nos bidouilles, avec un user adéquat.
mkdir /var/www/searx
useradd -d /var/www/searx searx
chown -R searx:searx /var/www/searx
En règle générale, il vaut mieux sécuriser les comptes présents sur son système si possible. Choisissez donc un mot de passe pour sécuriser l'utilisateur searx, utilisateur qui fera tourner l'instance (en effet, utiliser root serait dangereux en plus d'être inutile) :
passwd searx
Enfin, on se connecte sur cet utilisateur :
su - searx
On clone les dépôts de searx :
git clone https://github.com/asciimoo/searx.git && cd searx
On va procéder à la configuration de searx. Pour commencer, on génère une clé solide, jugée nécessaire à la sécurité de l'installation :
sed -i -e "s/ultrasecretkey/`openssl rand -hex 16`/g" searx/settings.yml
Vous aurez remarqué que searx/settings.yml est le fichier principal de configuration. C'est le cas, et nous allons y faire un tour.
# nano searx/settings.yml

...

server:
    port : 8929 # Un port au hasard, par exemple 8929 (à changer)

...

settings.yml est assez bien commenté, vous pouvez personnaliser votre instance si vous le souhaitez (paramètres par défaut, moteurs disponibles...). On appelle maintenant la commande make (vérifiez que vous êtes bien dans le dossier searx qui contient un Makefile) pour créer un environnement de production. Normalement, on aurait dû créer un environnement de test pour justement tester vite fait si ça marche ou pas, mais je suis sûr que tout va bien se passer pour vous.
make production
Comme l'indique la fin votre terminal, supervisor est utilisé pour maintenir le service en route, même quand le server reboot, même quand searx subit un crash. On va lancer immédiatement supervisor, ce qui aura pour effet de lancer notre instance.
bin/supervisord
On a terminé, on peut quitter notre session et revenir à l'user root.
exit
Vous en avez l'habitude : on crée un vhost du côté de nginx, qui nous servira ici de reverse proxy sécurisé. Je vous propose celui-ci :
# nano /etc/nginx/sites-available/searx.conf

server {
  listen 80;
  server_name searx.domaine.tld;
  return 301 https://$host$request_uri;
}

server {
  listen 443 ssl; # rajoutez http2 si vous avez nginx 1.9.5 ou supérieur
  server_name searx.domaine.tld;
  ssl_certificate /etc/nginx/startssl/searx.crt;
  ssl_certificate_key /etc/nginx/startssl/searx.key;
  include /etc/nginx/conf.d/ciphers.conf; # ce fichier devrait contenir les directives TLS

  access_log /dev/null; # on désactive les logs par soucis de vie privée ; c'est juste une astuce, vous pouvez très bien rétablir les logs.
  error_log /dev/null; # cf commentaire ci-dessus

  add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
  add_header X-Content-Type-Options nosniff;
  add_header X-Robots-Tag "noindex, nofollow, nosnippet, noarchive";

    location / {
        proxy_pass http://127.0.0.1:PORT; # À CHANGER en accord avec le port défini dans /var/www/searx/searx/searx/settings.yml
        proxy_set_header        X-Real-IP       $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header        X-Forwarded-Proto $remote_addr;
        proxy_set_header        X-Forwarded-Protocol $scheme;
        proxy_redirect          off;

    }
}

Et quand tout est bon :
cp /etc/nginx/sites-available/searx.conf /etc/nginx/sites-enabled/ && service nginx reload
Vérifiez que https://searx.domaine.tld fonctionne correctement, et à la prochaine pour un nouveau tuto. :noel
Questions et aide sur ce topic.
Répondre…