summaryrefslogtreecommitdiff
path: root/utils/searx.sh
diff options
context:
space:
mode:
authorMarkus Heiser <markus.heiser@darmarIT.de>2021-10-30 16:12:57 +0000
committerGitHub <noreply@github.com>2021-10-30 16:12:57 +0000
commit8f18c69f7ab387de18679b46c3d29365310b44d4 (patch)
treec2fcc45ca5a7ff37b52f94eecedcff0968355c86 /utils/searx.sh
parent46fde2e98e0fd55e947c3d9c1663f22e3d34bf1e (diff)
parentdb6a4d13e7ebe08a5df4fe6f99b0ef87aac94cc8 (diff)
Merge pull request #446 from return42/searxng-brand
[brand] SearXNG environment variables & /utils scripts
Diffstat (limited to 'utils/searx.sh')
-rwxr-xr-xutils/searx.sh166
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"
)