Améliorer fouiner.sans-nuage.fr

Description du projet

Le moteur de recherche fouiner.sans-nuage.fr a tendance à tomber en panne quand l’ensemble des moteurs sollicités nous blackliste.

Todo

  • Créer un doc pour les opérations d’entretien hebdomadaire:
    • Maintenance whatsapp
    • Mise à jour searxng
    • Répondre au captcha via les ips public.sans-nuage.fr
    • Remplacement des moteurs qui nous blacklistent
    • Vérifier que le proxy youtube est fonctionnel en allant sur une vidéo youtube
  • Ajouter une redirection vers cartes.app
echo "{% if 'map' in selected_categories %}<script type='text/javascript'>location.href = 'https://cartes.app/?q={{ q }}';</script>{% endif %}" >> /var/www/searxng/searxng-src/searx/templates/simple/categories.html
  • Creuser la question des proxy socks et des network pour contourner les blocages
  • Envisager d’utiliser tor pour ddg
  • Crawler avec yacy ?
  • Monitorer avec reaction et remplacer les moteurs auto magiquement par un autre du même index
  • Mettre en place une galaxie de searxng chatons

Changelog

Est-ce qu’on a Marginalia Search dans la liste des moteurs de recherches ?

D’ailleurs, sait-on pourquoi il se retrouve blacklisté ? :thinking:

parce-qu’on atteint un seuil de requêtes issue de notre instance. cf. les points de contournement listés par @ljf

Et aussi car il faut suivre le smises à jour au jour près ou quasiment…

Je viens de faire un script pour mettre à jour rapidement, on pourrait potentiellement lancer ça chaque demi journée:

pushd /var/www/searxng/searxng-src; 
sudo -u searxng git stash save; 
sudo -u searxng git pull; 
sudo -u searxng git stash apply; 
systemctl restart searxng; 
popd

Avec @dauphindart on a ajouté plusieurs IPs du range de la VM sur l’interface de façon temporaire, c’ets une expérimentation car on a activé l’option source_ips qui permet de load balancé avec plusieurs Ips sources les requêtes vers les différents moteurs de recherche. Mais ça ne marche pas avec tous les moteurs car certains comme startpage ou qwant ne sont pas dispo en IPv6.


    inet6 2a00:5881:8100:1007::42:fe/64 scope global 
       valid_lft forever preferred_lft forever
    inet6 2a00:5881:8100:1007::42:ca/64 scope global 
       valid_lft forever preferred_lft forever
    inet6 2a00:5881:8100:1007::36:fe/64 scope global 
       valid_lft forever preferred_lft forever
    inet6 2a00:5881:8100:1007::36:ca/64 scope global 
       valid_lft forever preferred_lft forever
    inet6 2a00:5881:8100:1007::ca:15/64 scope global 
       valid_lft forever preferred_lft forever
    inet6 2a00:5881:8100:1007::ca:42/64 scope global 
       valid_lft forever preferred_lft forever
    inet6 2a00:5881:8100:1007::ca:fe/64 scope global 
       valid_lft forever preferred_lft forever
    inet6 2a00:5881:8100:1007::36:15/64 scope global 
       valid_lft forever preferred_lft forever
    inet6 2a00:5881:8100:1007::42:42/64 scope global 
       valid_lft forever preferred_lft forever
    inet6 2a00:5881:8100:1007::1/64 scope global nodad 
       valid_lft forever preferred_lft forever

On a aussi conclu que la base redis n’est pas forcément fonctionnelle, car normalement c’est valkey qui la remplace. Là on fait croire à searxng que redis est une base valkey, à voir si ça créé des soucis.

TODO:

  • Mettre en place un timer systemd pour mettre à jour les sources
  • Mettre une vraie conf dans le paquet searxng_ynh
  • Mettre en place un mécanisme de mise à jour automatisé des sources dans searxng_ynh (le latest commit n’est pris actuellement en considération qu’une fois par semaine)
  • Passer le paquet yunohost à valkey (ou carrément supporter nativement valkey dans uyunohost ?)
  • (plus long terme) utiliser tor pour startpage et ddg (car leur endpoint tor ne demande pas de captcha)
  • (plus long terme) développer un engine searxng pour open web index

Au sujet du script de mise à jour…

J’ai finalement opté pour un simple yunohost app upgrade searxng lancé une fois par semaine par le service/timer parce que manifestement le projet yunohost est régulièrement mis à jour et donc il n’y a pas vraiment de raison de contourner. Profitons-en tant qu’il y a quelqu’un qui s’en occupe. Concernant le problème relatif au cache et le limiteur c’est une autre paire de manches car c’est relatif à redis/valkey et mettre à jour le paquet (plus régulièrement) ne changera rien.

Dans mes recherches du jour, je suis tombé sur cette page : https://www.abyssproject.net/2026/06/integrer-la-recherche-web-en-temps-reel-a-open-webui-avec-searxng/

Il propose un fichier de paramètre spécifiquement pour Google et éviter le blacklistage avec certains paramètres qui pourraient être utiles chez nous : https://gist.githubusercontent.com/stylersnico/675c0db88927e7fc4968af7ccb71f49e/raw/5ad8d9e7cca09296a1acf16b461e12cef7a52627/settings.yml

search:
  # minimun characters to type before autocompleter starts
  autocomplete_min: 4
  # ban time in seconds after engine errors
  ban_time_on_fail: 5
  # max ban time in seconds after engine errors
  max_ban_time_on_fail: 120
  suspended_times:
    # Engine suspension time after error (in seconds; set to 0 to disable)
    # For error "Access denied" and "HTTP error [402, 403]"
    SearxEngineAccessDenied: 180
    # For error "CAPTCHA"
    SearxEngineCaptcha: 3600
    # For error "Too many request" and "HTTP error 429"
    SearxEngineTooManyRequests: 180
    # Cloudflare CAPTCHA
    cf_SearxEngineCaptcha: 1296000
    cf_SearxEngineAccessDenied: 86400
    # ReCAPTCHA
    recaptcha_SearxEngineCaptcha: 604800

outgoing:
  # default timeout in seconds, can be override by engine
  request_timeout: 3.0
  # the maximum timeout in seconds
  # max_request_timeout: 10.0
  # suffix of searxng_useragent, could contain information like an email address
  # to the administrator
  useragent_suffix: ""
  # The maximum number of concurrent connections that may be established.
  pool_connections: 100
  # Allow the connection pool to maintain keep-alive connections below this
  # point.
  pool_maxsize: 20