diff options
| author | Markus Heiser <markus.heiser@darmarIT.de> | 2021-10-30 16:12:57 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-10-30 16:12:57 +0000 |
| commit | 8f18c69f7ab387de18679b46c3d29365310b44d4 (patch) | |
| tree | c2fcc45ca5a7ff37b52f94eecedcff0968355c86 /utils/searx.sh | |
| parent | 46fde2e98e0fd55e947c3d9c1663f22e3d34bf1e (diff) | |
| parent | db6a4d13e7ebe08a5df4fe6f99b0ef87aac94cc8 (diff) | |
Merge pull request #446 from return42/searxng-brand
[brand] SearXNG environment variables & /utils scripts
Diffstat (limited to 'utils/searx.sh')
| -rwxr-xr-x | utils/searx.sh | 166 |
1 files changed, 95 insertions, 71 deletions
diff --git a/utils/searx.sh b/utils/searx.sh index e3393835c..79cd2f26d 100755 --- a/utils/searx.sh +++ b/utils/searx.sh @@ -14,9 +14,9 @@ source "${REPO_ROOT}/utils/lib_install.sh" SEARX_INTERNAL_HTTP="${SEARXNG_BIND_ADDRESS}:${SEARXNG_PORT}" -SEARX_URL_PATH="${SEARX_URL_PATH:-$(echo "${PUBLIC_URL}" \ +SEARXNG_URL_PATH="${SEARXNG_URL_PATH:-$(echo "${PUBLIC_URL}" \ | sed -e 's,^.*://[^/]*\(/.*\),\1,g')}" -[[ "${SEARX_URL_PATH}" == "${PUBLIC_URL}" ]] && SEARX_URL_PATH=/ +[[ "${SEARXNG_URL_PATH}" == "${PUBLIC_URL}" ]] && SEARXNG_URL_PATH=/ SERVICE_NAME="searx" SERVICE_USER="${SERVICE_USER:-${SERVICE_NAME}}" @@ -29,7 +29,7 @@ GIT_BRANCH="${GIT_BRANCH:-master}" SEARX_PYENV="${SERVICE_HOME}/searx-pyenv" SEARX_SRC="${SERVICE_HOME}/searx-src" SEARXNG_SETTINGS_PATH="/etc/searxng/settings.yml" -SEARX_UWSGI_APP="searx.ini" +SEARXNG_UWSGI_APP="searxng.ini" # shellcheck disable=SC2034 SEARX_UWSGI_SOCKET="/run/uwsgi/app/searx/socket" @@ -125,7 +125,7 @@ APACHE_SEARX_SITE="searx.conf" # shellcheck disable=SC2034 CONFIG_FILES=( - "${uWSGI_APPS_AVAILABLE}/${SEARX_UWSGI_APP}" + "${uWSGI_APPS_AVAILABLE}/${SEARXNG_UWSGI_APP}" ) # shellcheck disable=SC2034 @@ -141,7 +141,8 @@ usage() { cat <<EOF usage:: $(basename "$0") shell - $(basename "$0") install [all|init-src|dot-config|user|searx-src|pyenv|uwsgi|packages|settings|buildhost] + $(basename "$0") install [all|check|init-src|dot-config|user|searx-src|pyenv|uwsgi|packages|settings|buildhost] + $(basename "$0") reinstall all $(basename "$0") update [searx] $(basename "$0") remove [all|user|pyenv|searx-src] $(basename "$0") activate [service] @@ -154,7 +155,6 @@ shell start interactive shell from user ${SERVICE_USER} install / remove :all: complete (de-) installation of searx service - :check: check the SearXNG installation :user: add/remove service user '$SERVICE_USER' ($SERVICE_HOME) :dot-config: copy ./config.sh to ${SEARX_SRC} :searx-src: clone $GIT_URL @@ -164,6 +164,10 @@ install / remove :settings: reinstall settings from ${SEARXNG_SETTINGS_PATH} :packages: install needed packages from OS package manager :buildhost: install packages from OS package manager needed by buildhosts +install + :check: check the SearXNG installation +reinstall: + :all: runs 'install/remove all' update searx Update SearXNG installation ($SERVICE_HOME) activate service @@ -213,18 +217,28 @@ main() { ;; *) usage "$_usage"; exit 42;; esac ;; - install) + reinstall) + rst_title "re-install $SERVICE_NAME" part sudo_or_exit case $2 in - check) - rst_title "SearXNG (check installation)" part - verify_continue_install - sudo -H -u "${SERVICE_USER}" "${SEARX_PYENV}/bin/python" "utils/searxng_check.py" + all) + remove_all + install_all ;; + *) usage "$_usage"; exit 42;; + esac ;; + install) + sudo_or_exit + case $2 in all) rst_title "SearXNG (install)" part install_all ;; + check) + rst_title "SearXNG (check installation)" part + verify_continue_install + install_check + ;; user) rst_title "SearXNG (install user)" verify_continue_install @@ -352,6 +366,42 @@ install_all() { fi } +install_check() { + if service_account_is_available "$SERVICE_USER"; then + info_msg "Service account $SERVICE_USER exists." + else + err_msg "Service account $SERVICE_USER does not exists!" + fi + + if pyenv_is_available; then + info_msg "~$SERVICE_USER: python environment is available." + else + err_msg "~$SERVICE_USER: python environment is not available!" + fi + + if clone_is_available; then + info_msg "~$SERVICE_USER: SearXNG software is installed." + else + err_msg "~$SERVICE_USER: Missing SearXNG software!" + fi + + if uWSGI_app_enabled "$SEARXNG_UWSGI_APP"; then + info_msg "uWSGI app $SEARXNG_UWSGI_APP is enabled." + else + err_msg "uWSGI app $SEARXNG_UWSGI_APP not enabled!" + fi + + uWSGI_app_available "$SEARXNG_UWSGI_APP" \ + || err_msg "uWSGI app $SEARXNG_UWSGI_APP not available!" + + sudo -H -u "${SERVICE_USER}" "${SEARX_PYENV}/bin/python" "utils/searxng_check.py" + + if uWSGI_app_available 'searx.ini'; then + warn_msg "old searx.ini uWSGI app exists" + warn_msg "you need to reinstall $SERVICE_USER --> $0 reinstall all" + fi +} + update_searx() { rst_title "Update SearXNG instance" @@ -367,7 +417,7 @@ pip install -U pyyaml pip install -U -e . EOF install_settings - uWSGI_restart "$SEARX_UWSGI_APP" + uWSGI_restart "$SEARXNG_UWSGI_APP" } remove_all() { @@ -729,30 +779,30 @@ EOF } install_searx_uwsgi() { - rst_title "Install SearXNG's uWSGI app (searx.ini)" section + rst_title "Install SearXNG's uWSGI app (searxng.ini)" section echo install_uwsgi - uWSGI_install_app "$SEARX_UWSGI_APP" + uWSGI_install_app "$SEARXNG_UWSGI_APP" } remove_searx_uwsgi() { - rst_title "Remove SearXNG's uWSGI app (searx.ini)" section + rst_title "Remove SearXNG's uWSGI app (searxng.ini)" section echo - uWSGI_remove_app "$SEARX_UWSGI_APP" + uWSGI_remove_app "$SEARXNG_UWSGI_APP" } activate_service() { rst_title "Activate SearXNG (service)" section echo - uWSGI_enable_app "$SEARX_UWSGI_APP" - uWSGI_restart "$SEARX_UWSGI_APP" + uWSGI_enable_app "$SEARXNG_UWSGI_APP" + uWSGI_restart "$SEARXNG_UWSGI_APP" } deactivate_service() { rst_title "De-Activate SearXNG (service)" section echo - uWSGI_disable_app "$SEARX_UWSGI_APP" - uWSGI_restart "$SEARX_UWSGI_APP" + uWSGI_disable_app "$SEARXNG_UWSGI_APP" + uWSGI_restart "$SEARXNG_UWSGI_APP" } enable_image_proxy() { @@ -761,7 +811,7 @@ enable_image_proxy() { cd ${SEARX_SRC} sed -i -e "s/image_proxy: false/image_proxy: true/g" "$SEARXNG_SETTINGS_PATH" EOF - uWSGI_restart "$SEARX_UWSGI_APP" + uWSGI_restart "$SEARXNG_UWSGI_APP" } disable_image_proxy() { @@ -770,7 +820,7 @@ disable_image_proxy() { cd ${SEARX_SRC} sed -i -e "s/image_proxy: true/image_proxy: false/g" "$SEARXNG_SETTINGS_PATH" EOF - uWSGI_restart "$SEARX_UWSGI_APP" + uWSGI_restart "$SEARXNG_UWSGI_APP" } enable_debug() { @@ -780,7 +830,7 @@ enable_debug() { cd ${SEARX_SRC} sed -i -e "s/debug: false/debug: true/g" "$SEARXNG_SETTINGS_PATH" EOF - uWSGI_restart "$SEARX_UWSGI_APP" + uWSGI_restart "$SEARXNG_UWSGI_APP" } disable_debug() { @@ -789,7 +839,7 @@ disable_debug() { cd ${SEARX_SRC} sed -i -e "s/debug: true/debug: false/g" "$SEARXNG_SETTINGS_PATH" EOF - uWSGI_restart "$SEARX_UWSGI_APP" + uWSGI_restart "$SEARXNG_UWSGI_APP" } set_result_proxy() { @@ -851,33 +901,7 @@ sourced ${DOT_CONFIG} : EOF install_log_searx_instance - if service_account_is_available "$SERVICE_USER"; then - info_msg "Service account $SERVICE_USER exists." - else - err_msg "Service account $SERVICE_USER does not exists!" - fi - - if pyenv_is_available; then - info_msg "~$SERVICE_USER: python environment is available." - else - err_msg "~$SERVICE_USER: python environment is not available!" - fi - - if clone_is_available; then - info_msg "~$SERVICE_USER: SearXNG software is installed." - else - err_msg "~$SERVICE_USER: Missing SearXNG software!" - fi - - if uWSGI_app_enabled "$SEARX_UWSGI_APP"; then - info_msg "uWSGI app $SEARX_UWSGI_APP is enabled." - else - err_msg "uWSGI app $SEARX_UWSGI_APP not enabled!" - fi - - uWSGI_app_available "$SEARX_UWSGI_APP" \ - || err_msg "uWSGI app $SEARX_UWSGI_APP not available!" - + install_check if in_container; then lxc_suite_info else @@ -955,9 +979,9 @@ excessively bot queries." apache_install_site --variant=uwsgi "${APACHE_SEARX_SITE}" - rst_title "Install SearXNG's uWSGI app (searx.ini)" section + rst_title "Install SearXNG's uWSGI app (searxng.ini)" section echo - uWSGI_install_app --variant=socket "$SEARX_UWSGI_APP" + uWSGI_install_app --variant=socket "$SEARXNG_UWSGI_APP" if ! service_is_available "${PUBLIC_URL}"; then err_msg "Public service at ${PUBLIC_URL} is not available!" @@ -979,9 +1003,9 @@ This removes apache site ${APACHE_SEARX_SITE}." apache_remove_site "${APACHE_SEARX_SITE}" - rst_title "Remove SearXNG's uWSGI app (searx.ini)" section + rst_title "Remove SearXNG's uWSGI app (searxng.ini)" section echo - uWSGI_remove_app "$SEARX_UWSGI_APP" + uWSGI_remove_app "$SEARXNG_UWSGI_APP" } rst-doc() { @@ -1025,12 +1049,12 @@ rst-doc() { # For uWSGI debian uses the LSB init process, this might be changed # one day, see https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=833067 - create ${uWSGI_APPS_AVAILABLE}/${SEARX_UWSGI_APP} - enable: sudo -H ln -s ${uWSGI_APPS_AVAILABLE}/${SEARX_UWSGI_APP} ${uWSGI_APPS_ENABLED}/ - start: sudo -H service uwsgi start ${SEARX_UWSGI_APP%.*} - restart: sudo -H service uwsgi restart ${SEARX_UWSGI_APP%.*} - stop: sudo -H service uwsgi stop ${SEARX_UWSGI_APP%.*} - disable: sudo -H rm ${uWSGI_APPS_ENABLED}/${SEARX_UWSGI_APP} + create ${uWSGI_APPS_AVAILABLE}/${SEARXNG_UWSGI_APP} + enable: sudo -H ln -s ${uWSGI_APPS_AVAILABLE}/${SEARXNG_UWSGI_APP} ${uWSGI_APPS_ENABLED}/ + start: sudo -H service uwsgi start ${SEARXNG_UWSGI_APP%.*} + restart: sudo -H service uwsgi restart ${SEARXNG_UWSGI_APP%.*} + stop: sudo -H service uwsgi stop ${SEARXNG_UWSGI_APP%.*} + disable: sudo -H rm ${uWSGI_APPS_ENABLED}/${SEARXNG_UWSGI_APP} EOF ;; @@ -1043,12 +1067,12 @@ EOF # - http://0pointer.de/blog/projects/instances.html # - https://uwsgi-docs.readthedocs.io/en/latest/Systemd.html#one-service-per-app-in-systemd - create: ${uWSGI_APPS_ENABLED}/${SEARX_UWSGI_APP} - enable: sudo -H systemctl enable uwsgi@${SEARX_UWSGI_APP%.*} - start: sudo -H systemctl start uwsgi@${SEARX_UWSGI_APP%.*} - restart: sudo -H systemctl restart uwsgi@${SEARX_UWSGI_APP%.*} - stop: sudo -H systemctl stop uwsgi@${SEARX_UWSGI_APP%.*} - disable: sudo -H systemctl disable uwsgi@${SEARX_UWSGI_APP%.*} + create: ${uWSGI_APPS_ENABLED}/${SEARXNG_UWSGI_APP} + enable: sudo -H systemctl enable uwsgi@${SEARXNG_UWSGI_APP%.*} + start: sudo -H systemctl start uwsgi@${SEARXNG_UWSGI_APP%.*} + restart: sudo -H systemctl restart uwsgi@${SEARXNG_UWSGI_APP%.*} + stop: sudo -H systemctl stop uwsgi@${SEARXNG_UWSGI_APP%.*} + disable: sudo -H systemctl disable uwsgi@${SEARXNG_UWSGI_APP%.*} EOF ;; @@ -1060,9 +1084,9 @@ EOF # The unit file starts uWSGI in emperor mode (/etc/uwsgi.ini), see # - https://uwsgi-docs.readthedocs.io/en/latest/Emperor.html - create: ${uWSGI_APPS_ENABLED}/${SEARX_UWSGI_APP} - restart: sudo -H touch ${uWSGI_APPS_ENABLED}/${SEARX_UWSGI_APP} - disable: sudo -H rm ${uWSGI_APPS_ENABLED}/${SEARX_UWSGI_APP} + create: ${uWSGI_APPS_ENABLED}/${SEARXNG_UWSGI_APP} + restart: sudo -H touch ${uWSGI_APPS_ENABLED}/${SEARXNG_UWSGI_APP} + disable: sudo -H rm ${uWSGI_APPS_ENABLED}/${SEARXNG_UWSGI_APP} EOF ;; @@ -1072,7 +1096,7 @@ EOF echo -e "\n.. START searx uwsgi-appini $DIST_NAME" echo ".. code:: bash" echo - eval "echo \"$(< "${TEMPLATES}/${uWSGI_APPS_AVAILABLE}/${SEARX_UWSGI_APP}")\"" | prefix_stdout " " + eval "echo \"$(< "${TEMPLATES}/${uWSGI_APPS_AVAILABLE}/${SEARXNG_UWSGI_APP}")\"" | prefix_stdout " " echo -e "\n.. END searx uwsgi-appini $DIST_NAME" ) |