summaryrefslogtreecommitdiff
path: root/utils/lxc-searx.env
diff options
context:
space:
mode:
Diffstat (limited to 'utils/lxc-searx.env')
-rw-r--r--utils/lxc-searx.env97
1 files changed, 97 insertions, 0 deletions
diff --git a/utils/lxc-searx.env b/utils/lxc-searx.env
new file mode 100644
index 0000000..6d9a48a
--- /dev/null
+++ b/utils/lxc-searx.env
@@ -0,0 +1,97 @@
+# -*- coding: utf-8; mode: sh indent-tabs-mode: nil -*-
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# shellcheck shell=bash
+
+# This file is a setup of a LXC suite. It is sourced from different context, do
+# not manipulate the environment directly, implement functions and manipulate
+# environment only is subshells!
+
+# ----------------------------------------------------------------------------
+# config
+# ----------------------------------------------------------------------------
+
+# shellcheck disable=SC2034
+LXC_SUITE_NAME="searx"
+lxc_set_suite_env() {
+ # name of https://images.linuxcontainers.org
+ export LINUXCONTAINERS_ORG_NAME="${LINUXCONTAINERS_ORG_NAME:-images}"
+ export LXC_HOST_PREFIX="${LXC_SUITE_NAME:-searx}"
+ export LXC_SUITE=(
+
+ # to disable containers, comment out lines ..
+
+ # end of standard support see https://wiki.ubuntu.com/Releases
+ "$LINUXCONTAINERS_ORG_NAME:ubuntu/18.04" "ubu1804" # April 2023
+ "$LINUXCONTAINERS_ORG_NAME:ubuntu/20.04" "ubu2004" # April 2025
+ "$LINUXCONTAINERS_ORG_NAME:ubuntu/20.10" "ubu2010" # July 2021
+
+ # EOL see https://fedoraproject.org/wiki/Releases
+ "$LINUXCONTAINERS_ORG_NAME:fedora/33" "fedora33"
+
+ # rolling releases see https://www.archlinux.org/releng/releases/
+ "$LINUXCONTAINERS_ORG_NAME:archlinux" "archlinux"
+
+ # EOL 30 June 2024
+ "$LINUXCONTAINERS_ORG_NAME:centos/7" "centos7"
+ )
+
+ PUBLIC_URL="${PUBLIC_URL:-http://$(uname -n)/searx}"
+ if in_container; then
+ # container hostnames do not have a DNS entry: use primary IP!
+ PUBLIC_URL="http://$(primary_ip)/searx"
+
+ # make GUEST's services public to the HOST
+ FILTRON_API="0.0.0.0:4005"
+ FILTRON_LISTEN="0.0.0.0:4004"
+ MORTY_LISTEN="0.0.0.0:3000"
+
+ # export LXC specific environment
+ export PUBLIC_URL FILTRON_API FILTRON_LISTEN MORTY_LISTEN
+ fi
+}
+
+lxc_suite_install_info() {
+ (
+ lxc_set_suite_env
+ cat <<EOF
+LXC suite: ${LXC_SUITE_NAME} --> ${PUBLIC_URL}
+ suite includes searx, morty & filtron
+suite images:
+$(echo " ${LOCAL_IMAGES[*]}" | $FMT)
+suite containers:
+$(echo " ${CONTAINERS[*]}" | $FMT)
+EOF
+ )
+ }
+
+lxc_suite_install() {
+ (
+ lxc_set_suite_env
+ FORCE_TIMEOUT=0
+ export FORCE_TIMEOUT
+ "${LXC_REPO_ROOT}/utils/searx.sh" install all
+ "${LXC_REPO_ROOT}/utils/morty.sh" install all
+ "${LXC_REPO_ROOT}/utils/filtron.sh" install all
+
+ rst_title "suite installation finished ($(hostname))" part
+ lxc_suite_info
+ echo
+ )
+}
+
+lxc_suite_info() {
+ (
+ lxc_set_suite_env
+ for ip in $(global_IPs) ; do
+ if [[ $ip =~ .*:.* ]]; then
+ info_msg "(${ip%|*}) IPv6: http://[${ip#*|}]"
+ else
+ # IPv4:
+ # shellcheck disable=SC2034,SC2031
+ info_msg "(${ip%|*}) filtron: http://${ip#*|}:4004/ $PUBLIC_URL"
+ info_msg "(${ip%|*}) morty: http://${ip#*|}:3000/ $PUBLIC_URL_MORTY"
+ info_msg "(${ip%|*}) docs-live: http://${ip#*|}:8080/"
+ fi
+ done
+ )
+}