| 
									
										
										
										
											2020-03-07 20:24:08 +01:00
										 |  |  | # -*- 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 | 
					
						
							|  |  |  | # ---------------------------------------------------------------------------- | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-04 12:40:14 +02:00
										 |  |  | # shellcheck disable=SC2034 | 
					
						
							|  |  |  | LXC_SUITE_NAME="searx" | 
					
						
							| 
									
										
										
										
											2020-03-07 20:24:08 +01:00
										 |  |  | lxc_set_suite_env() { | 
					
						
							|  |  |  |     # name of https://images.linuxcontainers.org | 
					
						
							|  |  |  |     export LINUXCONTAINERS_ORG_NAME="${LINUXCONTAINERS_ORG_NAME:-images}" | 
					
						
							| 
									
										
										
										
											2020-04-04 12:40:14 +02:00
										 |  |  |     export LXC_HOST_PREFIX="${LXC_SUITE_NAME:-searx}" | 
					
						
							| 
									
										
										
										
											2020-03-07 20:24:08 +01:00
										 |  |  |     export LXC_SUITE=( | 
					
						
							| 
									
										
										
										
											2020-04-03 17:08:42 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         # to disable containers, comment out lines .. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-03-07 20:24:08 +01:00
										 |  |  |         # end of standard support see https://wiki.ubuntu.com/Releases | 
					
						
							|  |  |  |         "$LINUXCONTAINERS_ORG_NAME:ubuntu/16.04"  "ubu1604" # April 2021 | 
					
						
							|  |  |  |         "$LINUXCONTAINERS_ORG_NAME:ubuntu/18.04"  "ubu1804" # April 2023 | 
					
						
							|  |  |  |         "$LINUXCONTAINERS_ORG_NAME:ubuntu/19.10"  "ubu1910" # July 2020 | 
					
						
							|  |  |  |         "$LINUXCONTAINERS_ORG_NAME:ubuntu/20.04"  "ubu2004" # future (EOL 2030) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # EOL see https://fedoraproject.org/wiki/Releases | 
					
						
							|  |  |  |         "$LINUXCONTAINERS_ORG_NAME:fedora/31"     "fedora31" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # rolling releases see https://www.archlinux.org/releng/releases/ | 
					
						
							|  |  |  |         "$LINUXCONTAINERS_ORG_NAME:archlinux"     "archlinux" | 
					
						
							|  |  |  |     ) | 
					
						
							| 
									
										
										
										
											2020-04-13 11:34:28 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     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 | 
					
						
							| 
									
										
										
										
											2020-03-07 20:24:08 +01:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-13 11:34:28 +02:00
										 |  |  | 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 | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-03-07 20:24:08 +01:00
										 |  |  | lxc_suite_install() { | 
					
						
							|  |  |  |     ( | 
					
						
							|  |  |  |         lxc_set_suite_env | 
					
						
							| 
									
										
										
										
											2020-03-30 11:03:46 +02:00
										 |  |  |         FORCE_TIMEOUT=0 | 
					
						
							|  |  |  |         export FORCE_TIMEOUT | 
					
						
							| 
									
										
										
										
											2020-03-07 20:24:08 +01:00
										 |  |  |         "${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 | 
					
						
							| 
									
										
										
										
											2020-03-29 16:46:07 +02:00
										 |  |  |                 info_msg "(${ip%|*}) IPv6:       http://[${ip#*|}]" | 
					
						
							| 
									
										
										
										
											2020-03-07 20:24:08 +01:00
										 |  |  |             else | 
					
						
							|  |  |  |                 # IPv4: | 
					
						
							| 
									
										
										
										
											2020-04-13 11:34:28 +02:00
										 |  |  |                 # shellcheck disable=SC2034,SC2031 | 
					
						
							|  |  |  |                 info_msg "(${ip%|*}) filtron:    http://${ip#*|}:4004/ $PUBLIC_URL" | 
					
						
							|  |  |  |                 info_msg "(${ip%|*}) morty:      http://${ip#*|}:3000/ $PUBLIC_URL_MORTY" | 
					
						
							| 
									
										
										
										
											2020-03-29 16:46:07 +02:00
										 |  |  |                 info_msg "(${ip%|*}) docs-live:  http://${ip#*|}:8080/" | 
					
						
							| 
									
										
										
										
											2020-03-07 20:24:08 +01:00
										 |  |  |             fi | 
					
						
							|  |  |  |         done | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  | } |