Browse Source

Merge pull request #994 from return42/add-limiter-redis-doc

[doc] add some documentation about the limiter plugin (and redis)
Markus Heiser 3 years ago
parent
commit
ef8af285a2

+ 20 - 5
docs/admin/engines/settings.rst

@@ -226,6 +226,17 @@ Global Settings
 
 
 .. _Redis.from_url(url): https://redis-py.readthedocs.io/en/stable/connections.html#redis.client.Redis.from_url
 .. _Redis.from_url(url): https://redis-py.readthedocs.io/en/stable/connections.html#redis.client.Redis.from_url
 
 
+A redis DB can be connected by an URL, in :py:obj:`searx.shared.redisdb` you
+will find a description to test your redis connection in SerXNG.  When using
+sockets, don't forget to check the access rights on the socket::
+
+  ls -la /usr/local/searxng-redis/run/redis.sock
+  srwxrwx--- 1 searxng-redis searxng-redis ... /usr/local/searxng-redis/run/redis.sock
+
+In this example read/write access is given to the *searxng-redis* group.  To get
+access rights to redis instance (the socket), your SearXNG (or even your
+developer) account needs to be added to the *searxng-redis* group.
+
 ``url``
 ``url``
   URL to connect redis database, see `Redis.from_url(url)`_ & :ref:`redis db`::
   URL to connect redis database, see `Redis.from_url(url)`_ & :ref:`redis db`::
 
 
@@ -235,17 +246,21 @@ Global Settings
 
 
 .. admonition:: Tip for developers
 .. admonition:: Tip for developers
 
 
-   To set up a redis instance simply use::
+   To set up a local redis instance using sockets simply use::
 
 
      $ ./manage redis.build
      $ ./manage redis.build
      $ sudo -H ./manage redis.install
      $ sudo -H ./manage redis.install
-
-   To get access rights to this instance, your developer account needs to be
-   added to the *searxng-redis* group::
-
      $ sudo -H ./manage redis.addgrp "${USER}"
      $ sudo -H ./manage redis.addgrp "${USER}"
      # don't forget to logout & login to get member of group
      # don't forget to logout & login to get member of group
 
 
+   The YAML setting for such a redis instance is:
+
+   .. code:: yaml
+
+      redis:
+        url: unix:///usr/local/searxng-redis/run/redis.sock?db=0
+
+
 .. _settings outgoing:
 .. _settings outgoing:
 
 
 ``outgoing:``
 ``outgoing:``

+ 8 - 6
docs/admin/filtron.rst

@@ -5,17 +5,19 @@
 How to protect an instance
 How to protect an instance
 ==========================
 ==========================
 
 
+.. tip::
+
+   To protect your instance a installation of filtron (as described here) is no
+   longer needed, alternatively activate the :ref:`limiter plugin` in your
+   ``settings.yml``. Note that the :ref:`limiter plugin` requires a :ref:`Redis
+   <settings redis>` database.
+
+
 .. sidebar:: further reading
 .. sidebar:: further reading
 
 
    - :ref:`filtron.sh`
    - :ref:`filtron.sh`
    - :ref:`nginx searxng site`
    - :ref:`nginx searxng site`
 
 
-
-.. contents:: Contents
-   :depth: 2
-   :local:
-   :backlinks: entry
-
 .. _filtron: https://github.com/searxng/filtron
 .. _filtron: https://github.com/searxng/filtron
 
 
 SearXNG depends on external search services.  To avoid the abuse of these services
 SearXNG depends on external search services.  To avoid the abuse of these services

+ 4 - 0
docs/src/searx.plugins.limiter.rst

@@ -4,6 +4,10 @@
 Limiter Plugin
 Limiter Plugin
 ==============
 ==============
 
 
+.. sidebar:: info
+
+   The :ref:`limiter plugin` requires a :ref:`Redis <settings redis>` database.
+
 .. automodule:: searx.plugins.limiter
 .. automodule:: searx.plugins.limiter
   :members:
   :members:
 
 

+ 4 - 0
searx/plugins/limiter.py

@@ -3,6 +3,10 @@
 # pyright: basic
 # pyright: basic
 """Some bot protection / rate limitation
 """Some bot protection / rate limitation
 
 
+To monitore rate limits and protect privacy the IP addresses are getting stored
+with a hash so the limiter plugin knows who to block.  A redis database is
+needed to store the hash values.
+
 Enable the plugin in ``settings.yml``:
 Enable the plugin in ``settings.yml``:
 
 
 - ``server.limiter: true``
 - ``server.limiter: true``