2020-06-19 11:15:15 +02:00
<!DOCTYPE html>
< html >
< head >
< meta charset = "utf-8" / >
2020-09-30 10:35:05 +02:00
< meta name = "viewport" content = "width=device-width, initial-scale=1.0" / >
2020-06-19 11:15:15 +02:00
< meta name = "viewport" content = "width=device-width, initial-scale=1" >
2020-07-25 18:33:36 +02:00
< title > utils/lxc.sh — Searx Documentation (Searx-0.17.0.tex)< / title >
2020-06-19 11:15:15 +02:00
< link rel = "stylesheet" href = "../_static/searx.css" type = "text/css" / >
< link rel = "stylesheet" href = "../_static/pygments.css" type = "text/css" / >
2020-09-30 10:35:05 +02:00
< link rel = "stylesheet" type = "text/css" href = "../_static/sphinx_tabs/semantic-ui-2.4.1/segment.min.css" / >
< link rel = "stylesheet" type = "text/css" href = "../_static/sphinx_tabs/semantic-ui-2.4.1/menu.min.css" / >
< link rel = "stylesheet" type = "text/css" href = "../_static/sphinx_tabs/semantic-ui-2.4.1/tab.min.css" / >
< link rel = "stylesheet" type = "text/css" href = "../_static/sphinx_tabs/tabs.css" / >
2020-06-19 11:15:15 +02:00
< script id = "documentation_options" data-url_root = "../" src = "../_static/documentation_options.js" > < / script >
< script src = "../_static/jquery.js" > < / script >
< script src = "../_static/underscore.js" > < / script >
< script src = "../_static/doctools.js" > < / script >
< script src = "../_static/language_data.js" > < / script >
< link rel = "index" title = "Index" href = "../genindex.html" / >
< link rel = "search" title = "Search" href = "../search.html" / >
< link rel = "next" title = "Blog" href = "../blog/index.html" / >
< link rel = "prev" title = "utils/morty.sh" href = "morty.sh.html" / >
< script > DOCUMENTATION _OPTIONS . URL _ROOT = '../' ; < / script >
< / head > < body >
< div class = "related" role = "navigation" aria-label = "related navigation" >
< h3 > Navigation< / h3 >
< ul >
< li class = "right" style = "margin-right: 10px" >
< a href = "../genindex.html" title = "General Index"
accesskey="I">index< / a > < / li >
< li class = "right" >
< a href = "../blog/index.html" title = "Blog"
accesskey="N">next< / a > |< / li >
< li class = "right" >
< a href = "morty.sh.html" title = "utils/morty.sh"
accesskey="P">previous< / a > |< / li >
2020-07-25 18:33:36 +02:00
< li class = "nav-item nav-item-0" > < a href = "../index.html" > Searx Documentation (Searx-0.17.0.tex)< / a > » < / li >
2020-09-30 10:35:05 +02:00
< li class = "nav-item nav-item-1" > < a href = "index.html" accesskey = "U" > Tooling box < code class = "docutils literal notranslate" > < span class = "pre" > utils/*< / span > < / code > < / a > » < / li >
< li class = "nav-item nav-item-this" > < a href = "" > < code class = "docutils literal notranslate" > < span class = "pre" > utils/lxc.sh< / span > < / code > < / a > < / li >
2020-06-19 11:15:15 +02:00
< / ul >
< / div >
< div class = "document" >
< div class = "documentwrapper" >
< div class = "bodywrapper" >
< div class = "body" role = "main" >
< div class = "section" id = "utils-lxc-sh" >
< span id = "lxc-sh" > < / span > < h1 > < code class = "docutils literal notranslate" > < span class = "pre" > utils/lxc.sh< / span > < / code > < a class = "headerlink" href = "#utils-lxc-sh" title = "Permalink to this headline" > ¶< / a > < / h1 >
< div class = "sidebar" >
< p class = "sidebar-title" > further reading< / p >
< ul class = "simple" >
< li > < p > < a class = "reference external" href = "https://snapcraft.io" > snap< / a > , < a class = "reference external" href = "https://snapcraft.io/lxd" > snapcraft LXD< / a > < / p > < / li >
< li > < p > < a class = "reference external" href = "https://linuxcontainers.org/lxc/introduction/" > LXC< / a > , < a class = "reference external" href = "https://linuxcontainers.org/lxd/introduction/" > LXD< / a > < / p > < / li >
< li > < p > < a class = "reference external" href = "https://uk.images.linuxcontainers.org/" > LXC/LXD Image Server< / a > < / p > < / li >
< li > < p > < a class = "reference external" href = "https://github.com/lxc/lxd" > LXD@ github< / a > < / p > < / li >
< / ul >
< / div >
< p > With the use of < em > Linux Containers< / em > (< a class = "reference external" href = "https://linuxcontainers.org/lxc/introduction/" > LXC< / a > ) we can scale our tasks over a stack of
containers, what we call the: < em > lxc suite< / em > . The < em > searx suite< / em >
2020-09-30 10:35:05 +02:00
(< a class = "reference external" href = "https://github.com/searx/searx/blob/master/utils/lxc-searx.env" > lxc-searx.env< / a > ) is loaded by default, every time
2020-06-19 11:15:15 +02:00
you start the < code class = "docutils literal notranslate" > < span class = "pre" > lxc.sh< / span > < / code > script (< em > you do not need to care about< / em > ).< / p >
< p > Before you can start with containers, you need to install and initiate < a class = "reference external" href = "https://linuxcontainers.org/lxd/introduction/" > LXD< / a >
once:< / p >
< div class = "highlight-none notranslate" > < div class = "highlight" > < pre > < span > < / span > $ snap install lxd
$ lxd init --auto
< / pre > < / div >
< / div >
< p > To make use of the containers from the < em > searx suite< / em > , you have to build the
< a class = "reference internal" href = "#lxc-sh-help" > < span class = "std std-ref" > LXC suite containers< / span > < / a > initial. But be warned, < strong > this might
take some time< / strong > :< / p >
< div class = "highlight-none notranslate" > < div class = "highlight" > < pre > < span > < / span > $ sudo -H ./utils/lxc.sh build
< / pre > < / div >
< / div >
< p > A cup of coffee later, your LXC suite is build up and you can run whatever task
you want / in a selected or even in all < a class = "reference internal" href = "#lxc-sh-help" > < span class = "std std-ref" > LXC suite containers< / span > < / a > . If you do not want to build all containers, < strong > you can build just
one< / strong > :< / p >
< div class = "highlight-none notranslate" > < div class = "highlight" > < pre > < span > < / span > $ sudo -H ./utils/lxc.sh build searx-ubu1804
< / pre > < / div >
< / div >
< p > < em > Good to know …< / em > < / p >
2020-06-29 08:26:27 +02:00
< p > Each container shares the root folder of the repository and the command
< code class = "docutils literal notranslate" > < span class = "pre" > utils/lxc.sh< / span > < span class = "pre" > cmd< / span > < / code > < strong > handles relative path names transparent< / strong > , compare output
of:< / p >
2020-06-19 11:15:15 +02:00
< div class = "highlight-none notranslate" > < div class = "highlight" > < pre > < span > < / span > $ sudo -H ./utils/lxc.sh cmd -- ls -la Makefile
...
< / pre > < / div >
< / div >
< p > In the containers, you can run what ever you want, e.g. to start a bash use:< / p >
< div class = "highlight-none notranslate" > < div class = "highlight" > < pre > < span > < / span > $ sudo -H ./utils/lxc.sh cmd searx-ubu1804 bash
INFO: [searx-ubu1804] bash
root@searx-ubu1804:/share/searx#
< / pre > < / div >
< / div >
< p > If there comes the time you want to < strong > get rid off all< / strong > the containers and
< strong > clean up local images< / strong > just type:< / p >
< div class = "highlight-none notranslate" > < div class = "highlight" > < pre > < span > < / span > $ sudo -H ./utils/lxc.sh remove
$ sudo -H ./utils/lxc.sh remove images
< / pre > < / div >
< / div >
< div class = "section" id = "install-suite" >
2020-06-29 08:26:27 +02:00
< span id = "lxc-sh-install-suite" > < / span > < h2 > Install suite< a class = "headerlink" href = "#install-suite" title = "Permalink to this headline" > ¶< / a > < / h2 >
2020-06-19 11:15:15 +02:00
< p > To install the complete < a class = "reference internal" href = "#lxc-searx-env" > < span class = "std std-ref" > searx suite (includes searx, morty & filtron)< / span > < / a > into all < a class = "reference external" href = "https://linuxcontainers.org/lxc/introduction/" > LXC< / a > use:< / p >
< div class = "highlight-none notranslate" > < div class = "highlight" > < pre > < span > < / span > $ sudo -H ./utils/lxc.sh install suite
< / pre > < / div >
< / div >
< p > The command above installs a searx suite (see < a class = "reference internal" href = "../admin/installation.html#installation-scripts" > < span class = "std std-ref" > Installation scripts< / span > < / a > ). To
get the IP (URL) of the filtron service in the containers use < code class = "docutils literal notranslate" > < span class = "pre" > show< / span > < span class = "pre" > suite< / span > < / code >
command. To test instances from containers just open the URLs in your
WEB-Browser:< / p >
< div class = "highlight-none notranslate" > < div class = "highlight" > < pre > < span > < / span > $ sudo ./utils/lxc.sh show suite | grep filtron
[searx-ubu1604] INFO: (eth0) filtron: http://n.n.n.246:4004/ http://n.n.n.246/searx
[searx-ubu1804] INFO: (eth0) filtron: http://n.n.n.147:4004/ http://n.n.n.147/searx
[searx-ubu1910] INFO: (eth0) filtron: http://n.n.n.140:4004/ http://n.n.n.140/searx
[searx-ubu2004] INFO: (eth0) filtron: http://n.n.n.18:4004/ http://n.n.n.18/searx
[searx-fedora31] INFO: (eth0) filtron: http://n.n.n.46:4004/ http://n.n.n.46/searx
[searx-archlinux] INFO: (eth0) filtron: http://n.n.n.32:4004/ http://n.n.n.32/searx
< / pre > < / div >
< / div >
< p > To < a class = "reference internal" href = "../admin/installation-nginx.html#installation-nginx" > < span class = "std std-ref" > install a nginx< / span > < / a > reverse proxy for filtron and
morty use (or alternatively use < a class = "reference internal" href = "../admin/installation-apache.html#installation-apache" > < span class = "std std-ref" > apache< / span > < / a > ):< / p >
< div class = "highlight-none notranslate" > < div class = "highlight" > < pre > < span > < / span > sudo -H ./utils/lxc.sh cmd -- FORCE_TIMEOUT=0 ./utils/filtron.sh nginx install
sudo -H ./utils/lxc.sh cmd -- FORCE_TIMEOUT=0 ./utils/morty.sh nginx install
< / pre > < / div >
< / div >
< / div >
< div class = "section" id = "running-commands" >
< h2 > Running commands< a class = "headerlink" href = "#running-commands" title = "Permalink to this headline" > ¶< / a > < / h2 >
< p > < strong > Inside containers, you can use make or run scripts< / strong > from the
< a class = "reference internal" href = "index.html#toolboxing" > < span class = "std std-ref" > Tooling box utils/*< / span > < / a > . By example: to setup a < a class = "reference internal" href = "../admin/buildhosts.html#buildhosts" > < span class = "std std-ref" > Buildhosts< / span > < / a > and run the
Makefile target < code class = "docutils literal notranslate" > < span class = "pre" > test< / span > < / code > in the < a class = "reference external" href = "https://www.archlinux.org/" > archlinux< / a > container:< / p >
< div class = "highlight-none notranslate" > < div class = "highlight" > < pre > < span > < / span > sudo -H ./utils/lxc.sh cmd searx-archlinux ./utils/searx.sh install buildhost
sudo -H ./utils/lxc.sh cmd searx-archlinux make test
< / pre > < / div >
< / div >
< / div >
< div class = "section" id = "setup-searx-buildhost" >
< h2 > Setup searx buildhost< a class = "headerlink" href = "#setup-searx-buildhost" title = "Permalink to this headline" > ¶< / a > < / h2 >
< p > You can < strong > install the searx buildhost environment< / strong > into one or all containers.
The installation procedure to set up a < a class = "reference internal" href = "../admin/buildhosts.html#buildhosts" > < span class = "std std-ref" > build host< / span > < / a > takes its
time. Installation in all containers will take more time (time for another cup
of coffee).:< / p >
< div class = "highlight-none notranslate" > < div class = "highlight" > < pre > < span > < / span > sudo -H ./utils/lxc.sh cmd -- ./utils/searx.sh install buildhost
< / pre > < / div >
< / div >
< p > To build (live) documentation inside a < a class = "reference external" href = "https://www.archlinux.org/" > archlinux< / a > container:< / p >
< div class = "highlight-none notranslate" > < div class = "highlight" > < pre > < span > < / span > sudo -H ./utils/lxc.sh cmd searx-archlinux make docs-clean docs-live
...
[I 200331 15:00:42 server:296] Serving on http://0.0.0.0:8080
< / pre > < / div >
< / div >
< p > To get IP of the container and the port number < em > live docs< / em > is listening:< / p >
< div class = "highlight-none notranslate" > < div class = "highlight" > < pre > < span > < / span > $ sudo ./utils/lxc.sh show suite | grep docs-live
...
[searx-archlinux] INFO: (eth0) docs-live: http://n.n.n.12:8080/
< / pre > < / div >
< / div >
< / div >
< div class = "section" id = "overview" >
< span id = "lxc-sh-help" > < / span > < h2 > Overview< a class = "headerlink" href = "#overview" title = "Permalink to this headline" > ¶< / a > < / h2 >
< p > The < code class = "docutils literal notranslate" > < span class = "pre" > --help< / span > < / code > output of the script is largely self-explanatory:< / p >
2020-10-16 19:44:45 +02:00
< div class = "highlight-text notranslate" > < div class = "highlight" > < pre > < span > < / span > usage::
lxc.sh build [containers|< name> ]
lxc.sh copy [images]
lxc.sh remove [containers|< name> |images]
lxc.sh [start|stop] [containers|< name> ]
lxc.sh show [images|suite|info|config [< name> ]]
lxc.sh cmd [--|< name> ] ' ...'
lxc.sh install [suite|base [< name> ]]
2020-06-19 11:15:15 +02:00
2020-10-16 19:44:45 +02:00
build
:containers: build, launch all containers and ' install base' packages
:< name> : build, launch container < name> and ' install base' packages
copy:
:images: copy remote images of the suite into local storage
remove
:containers: delete all ' containers' or only < container-name>
:images: delete local images of the suite
start/stop
:containers: start/stop all ' containers' from the suite
:< name> : start/stop container < name> from suite
show
:info: show info of all (or < name> ) containers from LXC suite
:config: show config of all (or < name> ) containers from the LXC suite
:suite: show services of all (or < name> ) containers from the LXC suite
:images: show information of local images
cmd
use single qoutes to evaluate in container' s bash, e.g.: ' echo $(hostname)'
-- run command ' ...' in all containers of the LXC suite
:< name> : run command ' ...' in container < name>
install
:base: prepare LXC; install basic packages
:suite: install LXC searx suite into all (or < name> ) containers
2020-06-19 11:15:15 +02:00
2020-10-31 17:29:18 +01:00
LXC suite: searx --> http://10.20.0.154/searx
2020-10-16 19:44:45 +02:00
suite includes searx, morty & filtron
suite images:
ubu1604 ubu1804 ubu1910 ubu2004 fedora31 archlinux centos7
suite containers:
searx-ubu1604 searx-ubu1804 searx-ubu1910 searx-ubu2004 searx-fedora31
searx-archlinux searx-centos7
2020-06-19 11:15:15 +02:00
< / pre > < / div >
< / div >
< / div >
< div class = "section" id = "searx-suite" >
< span id = "lxc-searx-env" > < / span > < h2 > searx suite< a class = "headerlink" href = "#searx-suite" title = "Permalink to this headline" > ¶< / a > < / h2 >
< div class = "highlight-bash notranslate" > < div class = "highlight" > < pre > < span > < / span > < span class = "c1" > # -*- coding: utf-8; mode: sh indent-tabs-mode: nil -*-< / span >
< span class = "c1" > # SPDX-License-Identifier: AGPL-3.0-or-later< / span >
< span class = "c1" > # shellcheck shell=bash< / span >
< span class = "c1" > # This file is a setup of a LXC suite. It is sourced from different context, do< / span >
< span class = "c1" > # not manipulate the environment directly, implement functions and manipulate< / span >
< span class = "c1" > # environment only is subshells!< / span >
< span class = "c1" > # ----------------------------------------------------------------------------< / span >
< span class = "c1" > # config< / span >
< span class = "c1" > # ----------------------------------------------------------------------------< / span >
< span class = "c1" > # shellcheck disable=SC2034< / span >
< span class = "nv" > LXC_SUITE_NAME< / span > < span class = "o" > =< / span > < span class = "s2" > " searx" < / span >
lxc_set_suite_env< span class = "o" > ()< / span > < span class = "o" > {< / span >
< span class = "c1" > # name of https://images.linuxcontainers.org< / span >
< span class = "nb" > export< / span > < span class = "nv" > LINUXCONTAINERS_ORG_NAME< / span > < span class = "o" > =< / span > < span class = "s2" > " < / span > < span class = "si" > ${< / span > < span class = "nv" > LINUXCONTAINERS_ORG_NAME< / span > < span class = "k" > :-< / span > < span class = "nv" > images< / span > < span class = "si" > }< / span > < span class = "s2" > " < / span >
< span class = "nb" > export< / span > < span class = "nv" > LXC_HOST_PREFIX< / span > < span class = "o" > =< / span > < span class = "s2" > " < / span > < span class = "si" > ${< / span > < span class = "nv" > LXC_SUITE_NAME< / span > < span class = "k" > :-< / span > < span class = "nv" > searx< / span > < span class = "si" > }< / span > < span class = "s2" > " < / span >
< span class = "nb" > export< / span > < span class = "nv" > LXC_SUITE< / span > < span class = "o" > =(< / span >
< span class = "c1" > # to disable containers, comment out lines ..< / span >
< span class = "c1" > # end of standard support see https://wiki.ubuntu.com/Releases< / span >
< span class = "s2" > " < / span > < span class = "nv" > $LINUXCONTAINERS_ORG_NAME< / span > < span class = "s2" > :ubuntu/16.04" < / span > < span class = "s2" > " ubu1604" < / span > < span class = "c1" > # April 2021< / span >
< span class = "s2" > " < / span > < span class = "nv" > $LINUXCONTAINERS_ORG_NAME< / span > < span class = "s2" > :ubuntu/18.04" < / span > < span class = "s2" > " ubu1804" < / span > < span class = "c1" > # April 2023< / span >
< span class = "s2" > " < / span > < span class = "nv" > $LINUXCONTAINERS_ORG_NAME< / span > < span class = "s2" > :ubuntu/19.10" < / span > < span class = "s2" > " ubu1910" < / span > < span class = "c1" > # July 2020< / span >
< span class = "s2" > " < / span > < span class = "nv" > $LINUXCONTAINERS_ORG_NAME< / span > < span class = "s2" > :ubuntu/20.04" < / span > < span class = "s2" > " ubu2004" < / span > < span class = "c1" > # future (EOL 2030)< / span >
< span class = "c1" > # EOL see https://fedoraproject.org/wiki/Releases< / span >
< span class = "s2" > " < / span > < span class = "nv" > $LINUXCONTAINERS_ORG_NAME< / span > < span class = "s2" > :fedora/31" < / span > < span class = "s2" > " fedora31" < / span >
< span class = "c1" > # rolling releases see https://www.archlinux.org/releng/releases/< / span >
< span class = "s2" > " < / span > < span class = "nv" > $LINUXCONTAINERS_ORG_NAME< / span > < span class = "s2" > :archlinux" < / span > < span class = "s2" > " archlinux" < / span >
2020-09-02 00:33:07 +02:00
< span class = "c1" > # EOL 30 June 2024< / span >
< span class = "s2" > " < / span > < span class = "nv" > $LINUXCONTAINERS_ORG_NAME< / span > < span class = "s2" > :centos/7" < / span > < span class = "s2" > " centos7" < / span >
2020-06-19 11:15:15 +02:00
< span class = "o" > )< / span >
< span class = "nv" > PUBLIC_URL< / span > < span class = "o" > =< / span > < span class = "s2" > " < / span > < span class = "si" > ${< / span > < span class = "nv" > PUBLIC_URL< / span > < span class = "k" > :-< / span > < span class = "nv" > http< / span > < span class = "p" > ://< / span > < span class = "k" > $(< / span > uname -n< span class = "k" > )< / span > < span class = "p" > /searx< / span > < span class = "si" > }< / span > < span class = "s2" > " < / span >
< span class = "k" > if< / span > in_container< span class = "p" > ;< / span > < span class = "k" > then< / span >
< span class = "c1" > # container hostnames do not have a DNS entry: use primary IP!< / span >
< span class = "nv" > PUBLIC_URL< / span > < span class = "o" > =< / span > < span class = "s2" > " http://< / span > < span class = "k" > $(< / span > primary_ip< span class = "k" > )< / span > < span class = "s2" > /searx" < / span >
< span class = "c1" > # make GUEST' s services public to the HOST< / span >
< span class = "nv" > FILTRON_API< / span > < span class = "o" > =< / span > < span class = "s2" > " 0.0.0.0:4005" < / span >
< span class = "nv" > FILTRON_LISTEN< / span > < span class = "o" > =< / span > < span class = "s2" > " 0.0.0.0:4004" < / span >
< span class = "nv" > MORTY_LISTEN< / span > < span class = "o" > =< / span > < span class = "s2" > " 0.0.0.0:3000" < / span >
< span class = "c1" > # export LXC specific environment< / span >
< span class = "nb" > export< / span > PUBLIC_URL FILTRON_API FILTRON_LISTEN MORTY_LISTEN
< span class = "k" > fi< / span >
< span class = "o" > }< / span >
lxc_suite_install_info< span class = "o" > ()< / span > < span class = "o" > {< / span >
< span class = "o" > (< / span >
lxc_set_suite_env
cat < span class = "s" > < < EOF< / span >
< span class = "s" > LXC suite: ${LXC_SUITE_NAME} --> ${PUBLIC_URL}< / span >
< span class = "s" > suite includes searx, morty & filtron< / span >
< span class = "s" > suite images:< / span >
< span class = "s" > $(echo " ${LOCAL_IMAGES[*]}" | $FMT)< / span >
< span class = "s" > suite containers:< / span >
< span class = "s" > $(echo " ${CONTAINERS[*]}" | $FMT)< / span >
< span class = "s" > EOF< / span >
< span class = "o" > )< / span >
< span class = "o" > }< / span >
lxc_suite_install< span class = "o" > ()< / span > < span class = "o" > {< / span >
< span class = "o" > (< / span >
lxc_set_suite_env
< span class = "nv" > FORCE_TIMEOUT< / span > < span class = "o" > =< / span > 0
< span class = "nb" > export< / span > FORCE_TIMEOUT
< span class = "s2" > " < / span > < span class = "si" > ${< / span > < span class = "nv" > LXC_REPO_ROOT< / span > < span class = "si" > }< / span > < span class = "s2" > /utils/searx.sh" < / span > install all
< span class = "s2" > " < / span > < span class = "si" > ${< / span > < span class = "nv" > LXC_REPO_ROOT< / span > < span class = "si" > }< / span > < span class = "s2" > /utils/morty.sh" < / span > install all
< span class = "s2" > " < / span > < span class = "si" > ${< / span > < span class = "nv" > LXC_REPO_ROOT< / span > < span class = "si" > }< / span > < span class = "s2" > /utils/filtron.sh" < / span > install all
rst_title < span class = "s2" > " suite installation finished (< / span > < span class = "k" > $(< / span > hostname< span class = "k" > )< / span > < span class = "s2" > )" < / span > part
lxc_suite_info
< span class = "nb" > echo< / span >
< span class = "o" > )< / span >
< span class = "o" > }< / span >
lxc_suite_info< span class = "o" > ()< / span > < span class = "o" > {< / span >
< span class = "o" > (< / span >
lxc_set_suite_env
< span class = "k" > for< / span > ip in < span class = "k" > $(< / span > global_IPs< span class = "k" > )< / span > < span class = "p" > ;< / span > < span class = "k" > do< / span >
< span class = "k" > if< / span > < span class = "o" > [[< / span > < span class = "nv" > $ip< / span > < span class = "o" > =< / span > ~ .*:.* < span class = "o" > ]]< / span > < span class = "p" > ;< / span > < span class = "k" > then< / span >
info_msg < span class = "s2" > " (< / span > < span class = "si" > ${< / span > < span class = "nv" > ip< / span > < span class = "p" > %|*< / span > < span class = "si" > }< / span > < span class = "s2" > ) IPv6: http://[< / span > < span class = "si" > ${< / span > < span class = "nv" > ip< / span > < span class = "p" > #*|< / span > < span class = "si" > }< / span > < span class = "s2" > ]" < / span >
< span class = "k" > else< / span >
< span class = "c1" > # IPv4:< / span >
< span class = "c1" > # shellcheck disable=SC2034,SC2031< / span >
info_msg < span class = "s2" > " (< / span > < span class = "si" > ${< / span > < span class = "nv" > ip< / span > < span class = "p" > %|*< / span > < span class = "si" > }< / span > < span class = "s2" > ) filtron: http://< / span > < span class = "si" > ${< / span > < span class = "nv" > ip< / span > < span class = "p" > #*|< / span > < span class = "si" > }< / span > < span class = "s2" > :4004/ < / span > < span class = "nv" > $PUBLIC_URL< / span > < span class = "s2" > " < / span >
info_msg < span class = "s2" > " (< / span > < span class = "si" > ${< / span > < span class = "nv" > ip< / span > < span class = "p" > %|*< / span > < span class = "si" > }< / span > < span class = "s2" > ) morty: http://< / span > < span class = "si" > ${< / span > < span class = "nv" > ip< / span > < span class = "p" > #*|< / span > < span class = "si" > }< / span > < span class = "s2" > :3000/ < / span > < span class = "nv" > $PUBLIC_URL_MORTY< / span > < span class = "s2" > " < / span >
info_msg < span class = "s2" > " (< / span > < span class = "si" > ${< / span > < span class = "nv" > ip< / span > < span class = "p" > %|*< / span > < span class = "si" > }< / span > < span class = "s2" > ) docs-live: http://< / span > < span class = "si" > ${< / span > < span class = "nv" > ip< / span > < span class = "p" > #*|< / span > < span class = "si" > }< / span > < span class = "s2" > :8080/" < / span >
< span class = "k" > fi< / span >
< span class = "k" > done< / span >
< span class = "o" > )< / span >
< span class = "o" > }< / span >
< / pre > < / div >
< / div >
< / div >
< / div >
2020-09-30 10:35:05 +02:00
< div class = "clearer" > < / div >
2020-06-19 11:15:15 +02:00
< / div >
< / div >
< / div >
< span id = "sidebar-top" > < / span >
< div class = "sphinxsidebar" role = "navigation" aria-label = "main navigation" >
< div class = "sphinxsidebarwrapper" >
< p class = "logo" > < a href = "../index.html" >
< img class = "logo" src = "../_static/searx_logo_small.png" alt = "Logo" / >
< / a > < / p >
< h3 > Project Links< / h3 >
< ul >
2020-09-30 10:35:05 +02:00
< li > < a href = "https://github.com/searx/searx" > Source< / a >
2020-06-19 11:15:15 +02:00
2020-09-30 10:35:05 +02:00
< li > < a href = "https://github.com/searx/searx/wiki" > Wiki< / a >
2020-06-19 11:15:15 +02:00
< li > < a href = "https://searx.space/" > Public instances< / a >
< li > < a href = "https://twitter.com/Searx_engine" > Twitter< / a >
< / ul > < h3 > Navigation< / h3 >
< ul >
< li > < a href = "../index.html" > Overview< / a >
< ul >
< li > < a href = "index.html" > Tooling box < code class = "docutils literal notranslate" > < span class = "pre" > utils/*< / span > < / code > < / a >
< ul >
< li > Previous: < a href = "morty.sh.html" title = "previous chapter" > < code class = "docutils literal notranslate" > < span class = "pre" > utils/morty.sh< / span > < / code > < / a >
< li > Next: < a href = "../blog/index.html" title = "next chapter" > Blog< / a > < / ul >
< / li >
< / ul >
< / li >
< / ul >
< div id = "searchbox" style = "display: none" role = "search" >
< h3 id = "searchlabel" > Quick search< / h3 >
< div class = "searchformwrapper" >
< form class = "search" action = "../search.html" method = "get" >
< input type = "text" name = "q" aria-labelledby = "searchlabel" / >
< input type = "submit" value = "Go" / >
< / form >
< / div >
< / div >
< script > $ ( '#searchbox' ) . show ( 0 ) ; < / script >
< / div >
< / div >
< div class = "clearer" > < / div >
< / div >
< div class = "footer" role = "contentinfo" >
© Copyright 2015-2020, Adam Tauber, Noémi Ványi.
2020-09-30 10:35:05 +02:00
Created using < a href = "https://www.sphinx-doc.org/" > Sphinx< / a > 3.2.1.
2020-06-19 11:15:15 +02:00
< / div >
< script src = "../_static/version_warning_offset.js" > < / script >
< / body >
< / html >