123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237 |
- .. _installation:
- ============
- Installation
- ============
- .. sidebar:: Searx server setup
- - :ref:`installation nginx`
- - :ref:`installation apache`
- If you do not have any special preferences, it is recommend to use
- :ref:`searx.sh`.
- .. contents:: Contents
- :depth: 2
- :local:
- :backlinks: entry
- .. _installation basic:
- Basic installation
- ==================
- Step by step installation with virtualenv. For Ubuntu, be sure to have enable
- universe repository.
- Install packages:
- .. tabs::
- .. group-tab:: Ubuntu / debian
- .. code-block:: sh
- $ sudo -H apt-get install \
- git build-essential
- libxslt-dev python3-dev python3-babel \
- zlib1g-dev libffi-dev libssl-dev
- Install searx:
- .. code:: sh
- sudo -H useradd searx --system --disabled-password -d /usr/local/searx
- sudo -H usermod -a -G shadow $SERVICE_USER
- cd /usr/local/searx
- sudo -H git clone https://github.com/asciimoo/searx.git searx-src
- sudo -H chown searx:searx -R /usr/local/searx
- Install virtualenv:
- .. code:: sh
- sudo -H -u searx -i
- (searx)$ python3 -m venv searx-pyenv
- (searx)$ echo 'source ~/searx-pyenv/bin/activate' > ~/.profile
- Exit the searx bash and restart a new to install the searx dependencies:
- .. code:: sh
- sudo -H -u searx -i
- (searx)$ cd searx-src
- (searx)$ ./manage.sh update_packages
- Configuration
- ==============
- .. code:: sh
- sudo -H -u searx -i
- (searx)$ cd searx-src
- (searx)$ sed -i -e "s/ultrasecretkey/`openssl rand -hex 16`/g" searx/settings.yml
- Edit searx/settings.yml if necessary.
- Check
- =====
- Start searx:
- .. code:: sh
- sudo -H -u searx -i
- (searx)$ cd searx-src
- (searx)$ python3 searx/webapp.py
- Go to http://localhost:8888
- If everything works fine, disable the debug option in settings.yml:
- .. code:: sh
- sed -i -e "s/debug : True/debug : False/g" searx/settings.yml
- At this point searx is not demonized ; uwsgi allows this. You can exit the
- virtualenv and the searx user bash (enter exit command twice).
- uwsgi
- =====
- Install packages:
- .. tabs::
- .. group-tab:: Ubuntu / debian
- .. code-block:: bash
- sudo -H apt-get install uwsgi uwsgi-plugin-python3
- Create the configuration file ``/etc/uwsgi/apps-available/searx.ini`` with this
- content:
- .. code:: ini
- [uwsgi]
- # uWSGI core
- # ----------
- #
- # https://uwsgi-docs.readthedocs.io/en/latest/Options.html#uwsgi-core
- # Who will run the code
- uid = searx
- gid = searx
- # chdir to specified directory before apps loading
- chdir = /usr/local/searx/searx-src/searx
- # disable logging for privacy
- disable-logging = true
- # The right granted on the created socket
- chmod-socket = 666
- # Plugin to use and interpretor config
- single-interpreter = true
- # enable master process
- master = true
- # load apps in each worker instead of the master
- lazy-apps = true
- # load uWSGI plugins
- plugin = python3,http
- # By default the Python plugin does not initialize the GIL. This means your
- # app-generated threads will not run. If you need threads, remember to enable
- # them with enable-threads. Running uWSGI in multithreading mode (with the
- # threads options) will automatically enable threading support. This *strange*
- # default behaviour is for performance reasons.
- enable-threads = true
- # plugin: python
- # --------------
- #
- # https://uwsgi-docs.readthedocs.io/en/latest/Options.html#plugin-python
- # load a WSGI module
- module = searx.webapp
- # set PYTHONHOME/virtualenv
- virtualenv = /usr/local/searx/searx-pyenv
- # add directory (or glob) to pythonpath
- pythonpath = /usr/local/searx/searx-src
- # plugin http
- # -----------
- #
- # https://uwsgi-docs.readthedocs.io/en/latest/Options.html#plugin-http
- # Native HTTP support: https://uwsgi-docs.readthedocs.io/en/latest/HTTP.html
- http = 127.0.0.1:8888
- Activate the uwsgi application and restart:
- .. code:: sh
- cd /etc/uwsgi/apps-enabled
- ln -s ../apps-available/searx.ini
- /etc/init.d/uwsgi restart
- How to update
- =============
- .. code:: sh
- sudo -H -u searx -i
- (searx)$ git stash
- (searx)$ git pull origin master
- (searx)$ git stash apply
- (searx)$ ./manage.sh update_packages
- Restart uwsgi:
- .. tabs::
- .. group-tab:: Ubuntu / debian
- .. code:: sh
- sudo -H systemctl restart uwsgi
- Docker
- ======
- Make sure you have installed Docker. For instance, you can deploy searx like this:
- .. code:: sh
- docker pull wonderfall/searx
- docker run -d --name searx -p $PORT:8888 wonderfall/searx
- Go to ``http://localhost:$PORT``.
- See https://hub.docker.com/r/wonderfall/searx/ for more informations. It's also
- possible to build searx from the embedded Dockerfile.
- .. code:: sh
- git clone https://github.com/asciimoo/searx.git
- cd searx
- docker build -t whatever/searx .
- References
- ==========
- * https://about.okhin.fr/posts/Searx/ with some additions
- * How to: `Setup searx in a couple of hours with a free SSL certificate
- <https://www.reddit.com/r/privacytoolsIO/comments/366kvn/how_to_setup_your_own_privacy_respecting_search/>`__
|