[doc] add some documentation about the limiter plugin (and redis)

Requested-by: https://github.com/searxng/searxng/discussions/993#discussioncomment-2396914
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
This commit is contained in:
Markus Heiser 2022-03-25 10:23:15 +01:00
parent 16aa731053
commit 37493b0a1e
4 changed files with 36 additions and 11 deletions

View File

@ -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:``

View File

@ -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

View File

@ -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:

View File

@ -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``