123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- # -*- 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/16.04" "ubu1604" # April 2021
- "$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/31" "fedora31"
- # 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
- )
- }
|