forked from zaclys/searxng
		
	Merge pull request #994 from return42/add-limiter-redis-doc
[doc] add some documentation about the limiter plugin (and redis)
This commit is contained in:
		
						commit
						ef8af285a2
					
				
					 4 changed files with 36 additions and 11 deletions
				
			
		| 
						 | 
					@ -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:``
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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,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:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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``
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue