filtron.sh & morty.sh: improve usage message (if used in containers)

BTW: normalize soma variable names

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
This commit is contained in:
Markus Heiser 2020-04-05 17:40:37 +02:00
parent c2caf9569c
commit c81849cb5a
5 changed files with 72 additions and 49 deletions

View File

@ -97,15 +97,24 @@ apache (${PUBLIC_URL})
filtron rules: ${FILTRON_RULES} filtron rules: ${FILTRON_RULES}
If needed, set PUBLIC_URL of your WEB service in the '${DOT_CONFIG#"$REPO_ROOT/"}' file:: If needed, set PUBLIC_URL of your WEB service in the '${DOT_CONFIG#"$REPO_ROOT/"}' file::
PUBLIC_URL : ${PUBLIC_URL} PUBLIC_URL : ${PUBLIC_URL}
PUBLIC_HOST : ${PUBLIC_HOST} PUBLIC_HOST : ${PUBLIC_HOST}
SERVICE_USER : ${SERVICE_USER} SERVICE_USER : ${SERVICE_USER}
FILTRON_TARGET : ${FILTRON_TARGET}
FILTRON_API : ${FILTRON_API} FILTRON_API : ${FILTRON_API}
FILTRON_LISTEN : ${FILTRON_LISTEN} FILTRON_LISTEN : ${FILTRON_LISTEN}
FILTRON_TARGET : ${FILTRON_TARGET}
EOF EOF
if in_container; then
# in containers the service is listening on 0.0.0.0 (see lxc-searx.env)
for ip in $(global_IPs) ; do
if [[ $ip =~ .*:.* ]]; then
echo " container URL (IPv6): http://[${ip#*|}]:4005/"
else
# IPv4:
echo " container URL (IPv4): http://${ip#*|}:4005/"
fi
done
fi
[[ -n ${1} ]] && err_msg "$1" [[ -n ${1} ]] && err_msg "$1"
} }

View File

@ -83,39 +83,37 @@ apache : ${PUBLIC_URL_MORTY}
:install: apache site with a reverse proxy (ProxyPass) :install: apache site with a reverse proxy (ProxyPass)
:remove: apache site ${APACHE_MORTY_SITE} :remove: apache site ${APACHE_MORTY_SITE}
If needed, set the environment variable MORTY_LISTEN in the If needed, set the environment variables in the '${DOT_CONFIG#"$REPO_ROOT/"}' file::
${DOT_CONFIG#"$REPO_ROOT/"} file:: PUBLIC_URL_MORTY: ${PUBLIC_URL_MORTY}
MORTY_LISTEN: ${MORTY_LISTEN}
MORTY_LISTEN : ${MORTY_LISTEN} SERVICE_USER: ${SERVICE_USER}
SERVICE_USER : ${SERVICE_USER}
EOF EOF
if in_container; then if in_container; then
lxc_suite_info # in containers the service is listening on 0.0.0.0 (see lxc-searx.env)
else for ip in $(global_IPs) ; do
info_msg "public URL --> ${PUBLIC_URL}" if [[ $ip =~ .*:.* ]]; then
info_msg "internal URL --> http://${SEARX_INTERNAL_URL}" echo " container URL (IPv6): http://[${ip#*|}]:3000/"
else
# IPv4:
echo " container URL (IPv4): http://${ip#*|}:3000/"
fi
done
fi fi
echo
info_searx info_searx
[[ -n ${1} ]] && err_msg "$1" [[ -n ${1} ]] && err_msg "$1"
} }
info_searx() { info_searx() {
# shellcheck disable=SC1117 # shellcheck disable=SC1117
cat <<EOF cat <<EOF
To activate result and image proxy in searx, edit settings.yml (read:
To activate morty in searx, add result_proxy to your settings.yml:: ${DOCS_URL}/admin/morty.html)::
result_proxy: result_proxy:
url : ${PUBLIC_URL_MORTY}/ url : ${PUBLIC_URL_MORTY}
server: server:
... image_proxy : True
image_proxy : True # Proxying image results through searx
...
further read: ${DOCS_URL}/admin/morty.html
EOF EOF
} }
@ -210,7 +208,6 @@ install_all() {
wait_key wait_key
systemd_install_service "${SERVICE_NAME}" "${SERVICE_SYSTEMD_UNIT}" systemd_install_service "${SERVICE_NAME}" "${SERVICE_SYSTEMD_UNIT}"
wait_key wait_key
info_searx
if ! service_is_available "http://${MORTY_LISTEN}" ; then if ! service_is_available "http://${MORTY_LISTEN}" ; then
err_msg "Morty does not listening on: http://${MORTY_LISTEN}" err_msg "Morty does not listening on: http://${MORTY_LISTEN}"
fi fi
@ -220,6 +217,12 @@ install_all() {
install_apache_site install_apache_site
fi fi
fi fi
info_searx
if ask_yn "Add image and result proxy to searx settings.yml?" Yn; then
"${REPO_ROOT}/utils/searx.sh" option result-proxy "${PUBLIC_URL_MORTY}"
"${REPO_ROOT}/utils/searx.sh" option image-proxy-on
fi
if ask_yn "Do you want to inspect the installation?" Ny; then if ask_yn "Do you want to inspect the installation?" Ny; then
inspect_service inspect_service
fi fi

View File

@ -17,7 +17,7 @@ in_container && lxc_set_suite_env
PUBLIC_URL="${PUBLIC_URL:-http://$(uname -n)/searx}" PUBLIC_URL="${PUBLIC_URL:-http://$(uname -n)/searx}"
SEARX_INTERNAL_URL="${SEARX_INTERNAL_URL:-127.0.0.1:8888}" SEARX_INTERNAL_HTTP="${SEARX_INTERNAL_HTTP:-127.0.0.1:8888}"
SEARX_URL_PATH="${SEARX_URL_PATH:-$(echo "${PUBLIC_URL}" \ SEARX_URL_PATH="${SEARX_URL_PATH:-$(echo "${PUBLIC_URL}" \
| sed -e 's,^.*://[^/]*\(/.*\),\1,g')}" | sed -e 's,^.*://[^/]*\(/.*\),\1,g')}"
@ -79,17 +79,17 @@ case $DIST_ID in
ubuntu|debian) ubuntu|debian)
SEARX_PACKAGES="${SEARX_PACKAGES_debian}" SEARX_PACKAGES="${SEARX_PACKAGES_debian}"
BUILD_PACKAGES="${BUILD_PACKAGES_debian}" BUILD_PACKAGES="${BUILD_PACKAGES_debian}"
APACHE_APT_PACKAGES="libapache2-mod-uwsgi" APACHE_PACKAGES="libapache2-mod-uwsgi"
;; ;;
arch) arch)
SEARX_PACKAGES="${SEARX_PACKAGES_arch}" SEARX_PACKAGES="${SEARX_PACKAGES_arch}"
BUILD_PACKAGES="${BUILD_PACKAGES_arch}" BUILD_PACKAGES="${BUILD_PACKAGES_arch}"
APACHE_APT_PACKAGES="uwsgi" APACHE_PACKAGES="uwsgi"
;; ;;
fedora) fedora)
SEARX_PACKAGES="${SEARX_PACKAGES_fedora}" SEARX_PACKAGES="${SEARX_PACKAGES_fedora}"
BUILD_PACKAGES="${BUILD_PACKAGES_fedora}" BUILD_PACKAGES="${BUILD_PACKAGES_fedora}"
APACHE_APT_PACKAGES="uwsgi" APACHE_PACKAGES="uwsgi"
;; ;;
esac esac
@ -116,13 +116,13 @@ usage() {
usage:: usage::
$(basename "$0") shell $(basename "$0") shell
$(basename "$0") install [all|user|searx-src|pyenv|uwsgi|apache|packages|buildhost] $(basename "$0") install [all|user|searx-src|pyenv|uwsgi|packages|buildhost]
$(basename "$0") update [searx] $(basename "$0") update [searx]
$(basename "$0") remove [all|user|pyenv|searx-src] $(basename "$0") remove [all|user|pyenv|searx-src]
$(basename "$0") activate [service] $(basename "$0") activate [service]
$(basename "$0") deactivate [service] $(basename "$0") deactivate [service]
$(basename "$0") inspect [service] $(basename "$0") inspect [service]
$(basename "$0") option [debug-on|debug-off] $(basename "$0") option [debug-[on|off]|image-proxy-[on|off]|result-proxy <url> <key>]
$(basename "$0") apache [install|remove] $(basename "$0") apache [install|remove]
shell shell
@ -153,12 +153,25 @@ apache
searx settings: ${SEARX_SETTINGS_PATH} searx settings: ${SEARX_SETTINGS_PATH}
If needed, set PUBLIC_URL of your WEB service in the '${DOT_CONFIG#"$REPO_ROOT/"}' file:: If needed, set PUBLIC_URL of your WEB service in the '${DOT_CONFIG#"$REPO_ROOT/"}' file::
PUBLIC_URL : ${PUBLIC_URL} PUBLIC_URL : ${PUBLIC_URL}
SEARX_INSTANCE_NAME : ${SEARX_INSTANCE_NAME} SEARX_INSTANCE_NAME : ${SEARX_INSTANCE_NAME}
SERVICE_USER : ${SERVICE_USER} SERVICE_USER : ${SERVICE_USER}
SEARX_INTERNAL_HTTP : http://${SEARX_INTERNAL_HTTP}
EOF EOF
if in_container; then
# searx is listening on 127.0.0.1 and not available from outside container
# in containers the service is listening on 0.0.0.0 (see lxc-searx.env)
echo -e "${_BBlack}HINT:${_creset} searx only listen on loopback device" \
"${_BBlack}inside${_creset} the container."
for ip in $(global_IPs) ; do
if [[ $ip =~ .*:.* ]]; then
echo " container (IPv6): [${ip#*|}]"
else
# IPv4:
echo " container (IPv4): ${ip#*|}"
fi
done
fi
[[ -n ${1} ]] && err_msg "$1" [[ -n ${1} ]] && err_msg "$1"
} }
@ -277,8 +290,8 @@ install_all() {
test_local_searx test_local_searx
wait_key wait_key
install_searx_uwsgi install_searx_uwsgi
if ! service_is_available "http://$SEARX_INTERNAL_URL"; then if ! service_is_available "http://${SEARX_INTERNAL_HTTP}"; then
err_msg "URL http://$SEARX_INTERNAL_URL not available, check searx & uwsgi setup!" err_msg "URL http://${SEARX_INTERNAL_HTTP} not available, check searx & uwsgi setup!"
fi fi
if ask_yn "Do you want to inspect the installation?" Ny; then if ask_yn "Do you want to inspect the installation?" Ny; then
inspect_service inspect_service
@ -481,8 +494,8 @@ test_local_searx() {
rst_title "Testing searx instance localy" section rst_title "Testing searx instance localy" section
echo echo
if service_is_available "http://$SEARX_INTERNAL_URL" &>/dev/null; then if service_is_available "http://${SEARX_INTERNAL_HTTP}" &>/dev/null; then
err_msg "URL/port http://$SEARX_INTERNAL_URL is already in use, you" err_msg "URL/port http://${SEARX_INTERNAL_HTTP} is already in use, you"
err_msg "should stop that service before starting local tests!" err_msg "should stop that service before starting local tests!"
if ! ask_yn "Continue with local tests?"; then if ! ask_yn "Continue with local tests?"; then
return return
@ -494,7 +507,7 @@ export SEARX_SETTINGS_PATH="${SEARX_SETTINGS_PATH}"
cd ${SEARX_SRC} cd ${SEARX_SRC}
timeout 10 python searx/webapp.py & timeout 10 python searx/webapp.py &
sleep 3 sleep 3
curl --location --verbose --head --insecure $SEARX_INTERNAL_URL curl --location --verbose --head --insecure $SEARX_INTERNAL_HTTP
EOF EOF
sed -i -e "s/debug : True/debug : False/g" "$SEARX_SETTINGS_PATH" sed -i -e "s/debug : True/debug : False/g" "$SEARX_SETTINGS_PATH"
} }
@ -624,12 +637,10 @@ sourced ${DOT_CONFIG#"$REPO_ROOT/"} :
PUBLIC_URL : ${PUBLIC_URL} PUBLIC_URL : ${PUBLIC_URL}
SEARX_URL_PATH : ${SEARX_URL_PATH} SEARX_URL_PATH : ${SEARX_URL_PATH}
SEARX_INSTANCE_NAME : ${SEARX_INSTANCE_NAME} SEARX_INSTANCE_NAME : ${SEARX_INSTANCE_NAME}
SEARX_INTERNAL_URL : ${SEARX_INTERNAL_URL} SEARX_INTERNAL_HTTP : ${SEARX_INTERNAL_HTTP}
EOF EOF
apache_is_installed && info_msg "Apache is installed."
if service_account_is_available "$SERVICE_USER"; then if service_account_is_available "$SERVICE_USER"; then
info_msg "Service account $SERVICE_USER exists." info_msg "Service account $SERVICE_USER exists."
else else
@ -661,11 +672,11 @@ EOF
lxc_suite_info lxc_suite_info
else else
info_msg "public URL --> ${PUBLIC_URL}" info_msg "public URL --> ${PUBLIC_URL}"
info_msg "internal URL --> http://${SEARX_INTERNAL_URL}" info_msg "internal URL --> http://${SEARX_INTERNAL_HTTP}"
fi fi
if ! service_is_available "http://${SEARX_INTERNAL_URL}"; then if ! service_is_available "http://${SEARX_INTERNAL_HTTP}"; then
err_msg "uWSGI app (service) at http://${SEARX_INTERNAL_URL} is not available!" err_msg "uWSGI app (service) at http://${SEARX_INTERNAL_HTTP} is not available!"
MSG="${_Green}[${_BCyan}CTRL-C${_Green}] to stop or [${_BCyan}KEY${_Green}] to continue"\ MSG="${_Green}[${_BCyan}CTRL-C${_Green}] to stop or [${_BCyan}KEY${_Green}] to continue"\
wait_key wait_key
fi fi
@ -720,8 +731,8 @@ install_apache_site() {
rst_title "Install Apache site $APACHE_SEARX_SITE" rst_title "Install Apache site $APACHE_SEARX_SITE"
rst_para "\ rst_para "\
This installs the searx uwsgi app as apache site. If your server ist public to This installs the searx uwsgi app as apache site. If your server is public to
the internet you should instead use a reverse proxy (filtron) to block the internet, you should instead use a reverse proxy (filtron) to block
excessively bot queries." excessively bot queries."
! apache_is_installed && err_msg "Apache is not installed." ! apache_is_installed && err_msg "Apache is not installed."
@ -730,7 +741,7 @@ excessively bot queries."
return return
fi fi
pkg_install "$APACHE_APT_PACKAGES" pkg_install "$APACHE_PACKAGES"
a2enmod uwsgi a2enmod uwsgi
echo echo

View File

@ -68,7 +68,7 @@ pythonpath = ${SEARX_SRC}
# https://uwsgi-docs.readthedocs.io/en/latest/Options.html#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 # Native HTTP support: https://uwsgi-docs.readthedocs.io/en/latest/HTTP.html
http = ${SEARX_INTERNAL_URL} http = ${SEARX_INTERNAL_HTTP}
# using unix-sockets: # using unix-sockets:
# #

View File

@ -67,7 +67,7 @@ pythonpath = ${SEARX_SRC}
# https://uwsgi-docs.readthedocs.io/en/latest/Options.html#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 # Native HTTP support: https://uwsgi-docs.readthedocs.io/en/latest/HTTP.html
http = ${SEARX_INTERNAL_URL} http = ${SEARX_INTERNAL_HTTP}
# using unix-sockets: # using unix-sockets:
# #