| 
							
							# -*- 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
 | 
						
						
						
						
							 | 
							
							    )
 | 
						
						
						
						
							 | 
							
							}
 |