Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
serveur_hebergement:installer_une_instance_searx [2022/10/02 18:25] – fate | serveur_hebergement:installer_une_instance_searx [2025/01/25 17:19] (Version actuelle) – [Redis] fate | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== | + | ====== |
- | ===== Présentation de Searx ===== | + | ===== Présentation de Searxng |
+ | |||
+ | [[https:// | ||
===== Préparation ===== | ===== Préparation ===== | ||
- | Installez les dépendances : <code bash> | + | Installez les dépendances : <code bash> |
- | Créez un utilisateur | + | Créez un utilisateur |
- | <code bash> | + | <code bash> |
- | Créez le répertoire home : | + | Créez le répertoire home ainsi que le sous répertoire pour le socket uWSGI : |
- | <code bash> | + | <code bash> |
Modifiez le propriétaire du répertoire home : | Modifiez le propriétaire du répertoire home : | ||
- | <code bash> | + | <code bash> |
- | ===== Installation de Searx ===== | + | ===== Installation de Searxng |
- | Connectez-vous avec l' | + | Connectez-vous avec l' |
- | <code bash> | + | <code bash> |
- | Récupérez les sources de Searx : | + | Récupérez les sources de Searxng |
- | <code bash>git clone " | + | <code bash>git clone " |
Créez l' | Créez l' | ||
- | <code bash> | + | <code bash> |
Activez-le à chaque connexion : | Activez-le à chaque connexion : | ||
- | <code bash> | + | <code bash> |
- | Déconnectez vous avec la commande <code bash> | + | Déconnectez-vous avec la commande <code bash> |
- | Connectez-vous de nouveau avec l' | + | Connectez-vous de nouveau avec l' |
- | <code bash> | + | <code bash> |
Mettre à jour les modules nécessaires : | Mettre à jour les modules nécessaires : | ||
Ligne 44: | Ligne 46: | ||
Lancez l' | Lancez l' | ||
<code bash> | <code bash> | ||
- | cd "/ | + | cd "/ |
pip install -e . | pip install -e . | ||
</ | </ | ||
Ligne 50: | Ligne 52: | ||
===== Configuration ===== | ===== Configuration ===== | ||
- | Dans un autre terminal, | + | Dans un autre terminal, |
<code bash> | <code bash> | ||
- | sudo mkdir -p "/etc/searx" | + | sudo mkdir -p "/etc/searxng" |
- | sudo | + | sudo |
</ | </ | ||
- | Ouvrez le fichier / | + | Copiez-y les lignes suivantes (modifiez |
+ | < | ||
+ | # SearXNG settings | ||
- | Pour vérifiez que Searx se lance sans problème, activez le debug : | + | use_default_settings: true |
- | <code bash> | + | |
- | Connectez-vous de nouveau | + | general: |
- | <code bash> | + | debug: false |
+ | instance_name: | ||
+ | contact_url: | ||
+ | |||
+ | search: | ||
+ | safe_search: | ||
+ | autocomplete: | ||
+ | formats: | ||
+ | | ||
+ | |||
+ | server: | ||
+ | secret_key: " | ||
+ | limiter: true | ||
+ | image_proxy: | ||
+ | |||
+ | redis: | ||
+ | url: unix:/// | ||
+ | |||
+ | ui: | ||
+ | # Custom static path - leave it blank if you didn't change | ||
+ | static_path: "" | ||
+ | | ||
+ | # Custom templates path - leave it blank if you didn't change | ||
+ | templates_path: | ||
+ | # query_in_title: | ||
+ | # it decreases the privacy, since the browser can records the page titles. | ||
+ | query_in_title: | ||
+ | # infinite_scroll: | ||
+ | infinite_scroll: | ||
+ | # ui theme | ||
+ | default_theme: | ||
+ | # center the results ? | ||
+ | center_alignment: | ||
+ | # URL prefix of the internet archive, don't forgett trailing slash (if needed). | ||
+ | # cache_url: " | ||
+ | # Default interface locale | ||
+ | # use codes from the ' | ||
+ | default_locale: | ||
+ | # Open result links in a new tab by default | ||
+ | results_on_new_tab: | ||
+ | theme_args: | ||
+ | # style of simple theme: auto, light, dark | ||
+ | simple_style: | ||
+ | |||
+ | # preferences: | ||
+ | # | ||
+ | # - autocomplete | ||
+ | # - method | ||
+ | |||
+ | enabled_plugins: | ||
+ | - 'Hash plugin' | ||
+ | - ' | ||
+ | - 'Self Informations' | ||
+ | - ' | ||
+ | - 'Ahmia blacklist' | ||
+ | # - ' | ||
+ | # - ' | ||
+ | # - 'Open Access DOI rewrite' | ||
+ | # - ' | ||
+ | |||
+ | # plugins: | ||
+ | # - only_show_green_results | ||
+ | |||
+ | engines: | ||
+ | - name: google | ||
+ | engine: google | ||
+ | shortcut: go | ||
+ | # see https:// | ||
+ | use_mobile_ui: | ||
+ | # additional_tests: | ||
+ | # | ||
- | Puis lancez searx : | ||
- | <code bash> | ||
- | cd / | ||
- | export SEARX_SETTINGS_PATH="/ | ||
- | python searx/ | ||
</ | </ | ||
- | Désactivez | + | Voici les principales options par défaut activées dans ce fichier configuration : |
- | <code bash> | + | * safe_search: |
+ | * autocomplete: | ||
+ | * formats: - html -> seule l' | ||
+ | * limiter: true -> active le filtre anti-bot | ||
+ | * results_on_new_tab: | ||
+ | * use_mobile_ui: | ||
+ | |||
+ | ===== Redis ===== | ||
+ | |||
+ | Redis va stocker la base de donnée du plugin " | ||
+ | |||
+ | On va utiliser le script d' | ||
+ | <code bash> | ||
+ | sudo -s | ||
+ | sudo /usr/local/searxng/searxng-src/utils/searxng.sh install redis | ||
+ | </ | ||
+ | Choisissez les réponses par défaut à chaque question. | ||
===== uWSGI ===== | ===== uWSGI ===== | ||
Ligne 79: | Ligne 163: | ||
Créez le fichier de configuration pour uWSGI : | Créez le fichier de configuration pour uWSGI : | ||
- | <code bash> | + | <code bash> |
Collez-y les lignes suivantes : | Collez-y les lignes suivantes : | ||
<code bash> | <code bash> | ||
+ | # -*- mode: conf; coding: utf-8 -*- | ||
[uwsgi] | [uwsgi] | ||
Ligne 90: | Ligne 175: | ||
# https:// | # https:// | ||
- | # Who will run the code | + | # Who will run the code / Hint: in emperor-tyrant mode uid & gid setting will be |
- | uid = searx | + | # ignored [1]. Mode emperor-tyrant is the default on fedora (/ |
- | gid = searx | + | # |
+ | # [1] https:// | ||
+ | # | ||
+ | uid = searxng | ||
+ | gid = searxng | ||
# set (python) default encoding UTF-8 | # set (python) default encoding UTF-8 | ||
Ligne 100: | Ligne 189: | ||
# chdir to specified directory before apps loading | # chdir to specified directory before apps loading | ||
- | chdir = /usr/local/searx/searx-src/searx | + | chdir = /usr/local/searxng/searxng-src/searx |
- | # searx configuration (settings.yml) | + | # SearXNG |
- | env = SEARX_SETTINGS_PATH=/etc/searx/ | + | env = SEARXNG_SETTINGS_PATH=/etc/searxng/ |
# disable logging for privacy | # disable logging for privacy | ||
Ligne 140: | Ligne 229: | ||
# set PYTHONHOME/ | # set PYTHONHOME/ | ||
- | virtualenv = /usr/local/searx/ | + | virtualenv = /usr/local/searxng/ |
# add directory (or glob) to pythonpath | # add directory (or glob) to pythonpath | ||
- | pythonpath = /usr/local/searx/searx-src | + | pythonpath = /usr/local/searxng/searxng-src |
# speak to upstream | # speak to upstream | ||
# ----------------- | # ----------------- | ||
- | # | ||
- | # Activate the ' | ||
- | # configuration if you setup your HTTP server to use uWSGI protocol via sockets. | ||
- | # using IP: | + | socket = /usr/local/searxng/run/socket |
- | # | + | buffer-size = 8192 |
- | # https://uwsgi-docs.readthedocs.io/en/latest/Options.html# | + | |
- | # Native HTTP support: https:// | + | |
- | http = 127.0.0.1: | + | # uWSGI serves |
- | + | ||
- | # using unix-sockets: | + | |
- | # | + | |
- | # On some distributions you need to create | + | |
# | # | ||
- | # mkdir -p / | + | # ui: |
- | # chown -R searx:searx / | + | # static_use_hash: true |
# | # | ||
- | # socket | + | static-map |
+ | # expires set to one year since there are hashes | ||
+ | static-expires = /* 31557600 | ||
+ | static-gzip-all = True | ||
+ | offload-threads = %k | ||
# Cache | # Cache | ||
- | cache2 = name=searxcache, | + | cache2 = name=searxngcache, |
</ | </ | ||
Activez le lancement au démarrage de Searx : | Activez le lancement au démarrage de Searx : | ||
- | <code bash> | + | <code bash> |
Démarrez Searx : | Démarrez Searx : | ||
- | <code bash> | + | <code bash> |
===== Configuration d' | ===== Configuration d' | ||
- | On va configurer Apache2 pour pour voir accéder à notre instance Searx via un sous domaine style searx.domaine.fr (je ne traiterai pas la gestion du nom de domaine) | + | On va configurer Apache2 pour pouvoir |
Activez les modules Apache2 nécessaires : | Activez les modules Apache2 nécessaires : | ||
- | <code bash> | + | <code bash> |
Créez le fichier de config Apache2 : | Créez le fichier de config Apache2 : | ||
<code bash> | <code bash> | ||
- | Copiez-y les lignes suivantes (remplacez le noom de domaine par le votre ainsi que l' | + | Copiez-y les lignes suivantes (remplacez le noom de domaine par le vôtre |
<code apache> | <code apache> | ||
< | < | ||
ServerName searx.nomdedomaine.fr | ServerName searx.nomdedomaine.fr | ||
- | ServerAdmin fate@nomdedomaine.fr | ||
Redirect / https:// | Redirect / https:// | ||
</ | </ | ||
+ | |||
+ | < | ||
+ | ServerName searx.rasp.fr | ||
LogLevel warn | LogLevel warn | ||
- | | + | ErrorLog ${APACHE_LOG_DIR}/ |
- | | + | |
- | < | ||
- | SSLEngine on | ||
- | SSLProxyEngine On | ||
- | ProxyRequests Off | ||
- | ProxyPreserveHost On | ||
- | SSLCertificateFile / | ||
- | SSLCertificateKeyFile / | ||
- | AddDefaultCharset utf-8 | ||
- | HostnameLookups off | ||
- | UseCanonicalName off | ||
- | ProxyBadHeader Ignore | ||
- | KeepAlive off | ||
- | Header set Content-Security-Policy " | ||
- | </ | ||
- | # < | + | SSLEngine on |
- | # | + | SSLProxyEngine On |
- | # </FilesMatch> | + | ProxyRequests Off |
+ | ProxyPreserveHost On | ||
+ | SSLCertificateFile / | ||
+ | | ||
+ | AddDefaultCharset utf-8 | ||
+ | | ||
+ | UseCanonicalName off | ||
+ | ProxyBadHeader Ignore | ||
+ | KeepAlive off | ||
+ | Header set Content-Security-Policy " | ||
+ | |||
+ | ProxyPreserveHost On | ||
+ | ProxyPass / unix:/ | ||
- | | + | |
- | | + | |
- | | + | |
- | ProxyPass / http:// | ||
- | # | ||
- | |||
- | < | ||
- | SSLOptions +StdEnvVars | ||
- | </ | ||
- | |||
- | BrowserMatch "MSIE [2-6]" \ | ||
- | nokeepalive ssl-unclean-shutdown \ | ||
- | downgrade-1.0 force-response-1.0 | ||
- | BrowserMatch "MSIE [17-9]" | ||
</ | </ | ||
- | # modern configuration, | ||
- | SSLProtocol | ||
- | SSLCipherSuite | ||
- | SSLHonorCipherOrder | ||
- | SSLCompression | ||
- | SSLSessionTickets | ||
- | |||
- | # OCSP Stapling, only in httpd 2.3.3 and later | ||
- | SSLUseStapling | ||
- | SSLStaplingResponderTimeout 5 | ||
- | SSLStaplingReturnResponderErrors off | ||
- | SSLStaplingCache | ||
</ | </ | ||
Ligne 257: | Ligne 317: | ||
<code bash> | <code bash> | ||
- | ===== Filtron ===== | + | Votre instance SearXNG est maintenant accessible à l' |
- | + | ||
- | Filtron va permettre de filtrer les requêtes. Indispensable si vous ne voulez pas voir votre serveur se faire spammer de requêtes. | + | |
- | + | ||
- | Installer Golang : | + | |
- | <code bash> | + | |
- | + | ||
- | Créez le répertoire / | + | |
- | <code bash> | + | |
- | + | ||
- | Récupérez le fichier rules.json : | + | |
- | <code bash> | + | |
- | cd / | + | |
- | sudo wget https:// | + | |
- | </ | + | |
- | + | ||
- | Créez un utilisateur filtron : | + | |
- | <code bash> | + | |
- | + | ||
- | Créez le répertoire home : | + | |
- | <code bash> | + | |
- | + | ||
- | Modifiez le propriétaire du répertoire home : | + | |
- | <code bash> | + | |
- | + | ||
- | Installez filtron : | + | |
- | <code bash> | + | |
- | sudo -u filtron -i | + | |
- | go install github.com/ | + | |
- | </ | + | |
- | + | ||
- | Créez le fichier systemd : | + | |
- | <code bash> | + | |
- | + | ||
- | Collez-y les lignes suivantes : | + | |
- | <code bash> | + | |
- | [Unit] | + | |
- | + | ||
- | Description=filtron | + | |
- | After=syslog.target | + | |
- | After=network.target | + | |
- | + | ||
- | [Service] | + | |
- | + | ||
- | Type=simple | + | |
- | User=filtron | + | |
- | Group=filtron | + | |
- | WorkingDirectory=/ | + | |
- | ExecStart=/ | + | |
- | + | ||
- | Restart=always | + | |
- | Environment=USER=filtron HOME=/ | + | |
- | + | ||
- | # Some distributions may not support these hardening directives. | + | |
- | # start the service due to an unknown option, comment out the ones not supported | + | |
- | # by your version of systemd. | + | |
- | + | ||
- | ProtectSystem=full | + | |
- | PrivateDevices=yes | + | |
- | PrivateTmp=yes | + | |
- | NoNewPrivileges=true | + | |
- | + | ||
- | [Install] | + | |
- | + | ||
- | WantedBy=multi-user.target | + | |
- | </ | + | |
- | + | ||
- | Mettez à jour configuration de Systemd : | + | |
- | <code bash> | + | |
- | + | ||
- | Activez Filtron au démarrage : | + | |
- | <code bash> | + | |
- | + | ||
- | Démarrez Filtron : | + | |
- | <code bash> | + | |
- | Votre instance Searx est maintenant accessible | + | ===== Mise à jour de SearXNG ===== |
+ | Pour mettre à jour votre instance, il vous suffit de lancer la commande suivante : | ||
+ | <code bash> | ||