mirror of
https://github.com/searxng/searxng.git
synced 2025-11-19 21:13:08 -05:00
Since #5280 has been merged, msgspec, like yaml, is a fixed part of the SearXNG *settings framework* and therefore, like yaml, must be installed in the virtual environment before installing SearXNG (``searx``). The actual reason is that in SearXNG we store settings in the configuration that are required for the installation of the ``searx`` package. This means that these settings (from settings.yml) are read in during the installation, and all the necessary tools for this (pyyaml, msgspec, setuptools, etc.) must be installed beforehand (chicken or the egg dilemma). Related: - https://github.com/searxng/searxng/pull/5346 - https://github.com/searxng/searxng/pull/5280 - https://github.com/searxng/searxng/pull/5254 Closes: https://github.com/searxng/searxng/issues/5352
205 lines
4.3 KiB
ReStructuredText
205 lines
4.3 KiB
ReStructuredText
.. template evaluated by: ./utils/searxng.sh searxng.doc.rst
|
|
.. hint: all dollar-names are variables, dollar sign itself is quoted by: \\$
|
|
|
|
.. START distro-packages
|
|
|
|
.. tabs::
|
|
|
|
.. group-tab:: Ubuntu / debian
|
|
|
|
.. code-block:: sh
|
|
|
|
$ sudo -H apt-get install -y \\
|
|
${debian}
|
|
|
|
.. group-tab:: Arch Linux
|
|
|
|
.. code-block:: sh
|
|
|
|
$ sudo -H pacman -S --noconfirm \\
|
|
${arch}
|
|
|
|
.. group-tab:: Fedora / RHEL
|
|
|
|
.. code-block:: sh
|
|
|
|
$ sudo -H dnf install -y \\
|
|
${fedora}
|
|
|
|
.. END distro-packages
|
|
|
|
.. START build-packages
|
|
|
|
.. tabs::
|
|
|
|
.. group-tab:: Ubuntu / debian
|
|
|
|
.. code-block:: sh
|
|
|
|
$ sudo -H apt-get install -y \\
|
|
${debian_build}
|
|
|
|
.. group-tab:: Arch Linux
|
|
|
|
.. code-block:: sh
|
|
|
|
$ sudo -H pacman -S --noconfirm \\
|
|
${arch_build}
|
|
|
|
.. group-tab:: Fedora / RHEL
|
|
|
|
.. code-block:: sh
|
|
|
|
$ sudo -H dnf install -y \\
|
|
${fedora_build}
|
|
|
|
.. END build-packages
|
|
|
|
.. START create user
|
|
|
|
.. tabs::
|
|
|
|
.. group-tab:: bash
|
|
|
|
.. code-block:: sh
|
|
|
|
$ sudo -H useradd --shell /bin/bash --system \\
|
|
--home-dir \"$SERVICE_HOME\" \\
|
|
--comment 'Privacy-respecting metasearch engine' \\
|
|
$SERVICE_USER
|
|
|
|
$ sudo -H mkdir \"$SERVICE_HOME\"
|
|
$ sudo -H chown -R \"$SERVICE_GROUP:$SERVICE_GROUP\" \"$SERVICE_HOME\"
|
|
|
|
.. END create user
|
|
|
|
.. START clone searxng
|
|
|
|
.. tabs::
|
|
|
|
.. group-tab:: bash
|
|
|
|
.. code-block:: sh
|
|
|
|
$ sudo -H -u ${SERVICE_USER} -i
|
|
(${SERVICE_USER})$ git clone \"$GIT_URL\" \\
|
|
\"$SEARXNG_SRC\"
|
|
|
|
.. END clone searxng
|
|
|
|
.. START create virtualenv
|
|
|
|
.. tabs::
|
|
|
|
.. group-tab:: bash
|
|
|
|
.. code-block:: sh
|
|
|
|
(${SERVICE_USER})$ python3 -m venv \"${SEARXNG_PYENV}\"
|
|
(${SERVICE_USER})$ echo \". ${SEARXNG_PYENV}/bin/activate\" \\
|
|
>> \"$SERVICE_HOME/.profile\"
|
|
|
|
.. END create virtualenv
|
|
|
|
.. START manage.sh update_packages
|
|
|
|
.. tabs::
|
|
|
|
.. group-tab:: bash
|
|
|
|
.. code-block:: sh
|
|
|
|
$ sudo -H -u ${SERVICE_USER} -i
|
|
|
|
(${SERVICE_USER})$ command -v python && python --version
|
|
$SEARXNG_PYENV/bin/python
|
|
Python 3.11.10
|
|
|
|
# update pip's boilerplate ..
|
|
pip install -U pip
|
|
pip install -U setuptools
|
|
pip install -U wheel
|
|
pip install -U pyyaml
|
|
pip install -U msgspec
|
|
|
|
# jump to SearXNG's working tree and install SearXNG into virtualenv
|
|
(${SERVICE_USER})$ cd \"$SEARXNG_SRC\"
|
|
(${SERVICE_USER})$ pip install --use-pep517 --no-build-isolation -e .
|
|
|
|
|
|
.. END manage.sh update_packages
|
|
|
|
.. START searxng config
|
|
|
|
.. tabs::
|
|
|
|
.. group-tab:: Use default settings
|
|
|
|
.. code-block:: sh
|
|
|
|
$ sudo -H mkdir -p \"$(dirname ${SEARXNG_SETTINGS_PATH})\"
|
|
$ sudo -H cp \"$SEARXNG_SRC/utils/templates/etc/searxng/settings.yml\" \\
|
|
\"${SEARXNG_SETTINGS_PATH}\"
|
|
|
|
.. group-tab:: minimal setup
|
|
|
|
.. code-block:: sh
|
|
|
|
$ sudo -H sed -i -e \"s/ultrasecretkey/\$(openssl rand -hex 16)/g\" \\
|
|
\"$SEARXNG_SETTINGS_PATH\"
|
|
|
|
.. END searxng config
|
|
|
|
.. START check searxng installation
|
|
|
|
.. tabs::
|
|
|
|
.. group-tab:: bash
|
|
|
|
.. code-block:: sh
|
|
|
|
# enable debug ..
|
|
$ sudo -H sed -i -e \"s/debug : False/debug : True/g\" \"$SEARXNG_SETTINGS_PATH\"
|
|
|
|
# start webapp
|
|
$ sudo -H -u ${SERVICE_USER} -i
|
|
(${SERVICE_USER})$ cd ${SEARXNG_SRC}
|
|
(${SERVICE_USER})$ export SEARXNG_SETTINGS_PATH=\"${SEARXNG_SETTINGS_PATH}\"
|
|
(${SERVICE_USER})$ python searx/webapp.py
|
|
|
|
# disable debug
|
|
$ sudo -H sed -i -e \"s/debug : True/debug : False/g\" \"$SEARXNG_SETTINGS_PATH\"
|
|
|
|
Open WEB browser and visit http://$SEARXNG_INTERNAL_HTTP . If you are inside a
|
|
container or in a script, test with curl:
|
|
|
|
.. tabs::
|
|
|
|
.. group-tab:: WEB browser
|
|
|
|
.. code-block:: sh
|
|
|
|
$ xdg-open http://$SEARXNG_INTERNAL_HTTP
|
|
|
|
.. group-tab:: curl
|
|
|
|
.. code-block:: none
|
|
|
|
$ curl --location --verbose --head --insecure $SEARXNG_INTERNAL_HTTP
|
|
|
|
* Trying 127.0.0.1:8888...
|
|
* TCP_NODELAY set
|
|
* Connected to 127.0.0.1 (127.0.0.1) port 8888 (#0)
|
|
> HEAD / HTTP/1.1
|
|
> Host: 127.0.0.1:8888
|
|
> User-Agent: curl/7.68.0
|
|
> Accept: */*
|
|
>
|
|
* Mark bundle as not supporting multiuse
|
|
* HTTP 1.0, assume close after body
|
|
< HTTP/1.0 200 OK
|
|
HTTP/1.0 200 OK
|
|
...
|
|
|
|
.. END check searxng installation
|