mirror of
https://github.com/MarginaliaSearch/MarginaliaSearch.git
synced 2025-02-23 04:58:59 +00:00
114 lines
3.6 KiB
Bash
Executable File
114 lines
3.6 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
### Settings that are passed as environment variables:
|
|
|
|
# $INSTANCE_TYPE can be 1, 2, 3, or 4
|
|
|
|
# * 1: barebones interface (1 index node)
|
|
# * 2: barebones interface (2 index nodes)
|
|
# * 3: full Marginalia Search production-like instance
|
|
# * 4: non-docker install
|
|
|
|
INSTANCE_TYPE=${INSTANCE_TYPE:-4}
|
|
|
|
# $MARIADB_USER and $MARIADB_PASSWORD are used to set up the MariaDB database,
|
|
# by default we use the user 'marginalia' and a randomly generated strong password
|
|
|
|
MARIADB_USER=${MARIADB_USER:-marginalia}
|
|
MARIADB_PASSWORD=${MARIADB_PASSWORD:-$(tr -dc 'A-Za-z0-9' < /dev/urandom | head -c 32)}
|
|
|
|
###
|
|
|
|
## Check for envsubst
|
|
if ! command -v envsubst &> /dev/null
|
|
then
|
|
echo "The envsubst command could not be found, please install it. It is usually part of GNU gettext."
|
|
exit
|
|
fi
|
|
|
|
## Move to the directory of the script
|
|
pushd $(dirname $0)
|
|
|
|
|
|
## Check for the install directory
|
|
INSTALL_DIR=$(realpath ${1})
|
|
|
|
if [ -z ${INSTALL_DIR} ]; then
|
|
echo "Usage: $0 <install directory>"
|
|
exit 1
|
|
fi
|
|
|
|
mkdir -p ${INSTALL_DIR}
|
|
|
|
echo "** Copying files to ${INSTALL_DIR}"
|
|
|
|
for dir in model data conf conf/properties env; do
|
|
if [ ! -d ${dir} ]; then
|
|
echo "ERROR: ${dir} does not exist"
|
|
exit 1
|
|
fi
|
|
echo "Copying ${dir}/"
|
|
mkdir -p ${INSTALL_DIR}/${dir}
|
|
find ${dir} -maxdepth 1 -type f -exec cp -v {} ${INSTALL_DIR}/{} \;
|
|
done
|
|
|
|
# for barebones, tell the control service to hide the marginalia app specific stuff
|
|
if [ "${INSTANCE_TYPE}" == "1" ]; then
|
|
echo "control.hideMarginaliaApp=true" > ${INSTALL_DIR}/conf/properties/control-service.properties
|
|
elif [ "${INSTANCE_TYPE}" == "2" ]; then
|
|
echo "control.hideMarginaliaApp=true" > ${INSTALL_DIR}/conf/properties/control-service.properties
|
|
elif [ "${INSTANCE_TYPE}" == "4" ]; then
|
|
echo "control.hideMarginaliaApp=true" > ${INSTALL_DIR}/conf/properties/control-service.properties
|
|
# (leading with a blank newline is important, as we cannot trust that the source file ends with a new-line)
|
|
cat >>${INSTALL_DIR}/conf/properties/system.properties <<EOF
|
|
|
|
# Override zookeeper hosts for non-docker install here:
|
|
zookeeper-hosts=localhost:2181
|
|
|
|
# Override the storage root for non-docker install here:
|
|
storage.root=${INSTALL_DIR}/index-1
|
|
EOF
|
|
fi
|
|
|
|
echo "** Creating directories"
|
|
mkdir -p ${INSTALL_DIR}/logs
|
|
mkdir -p ${INSTALL_DIR}/db
|
|
mkdir -p ${INSTALL_DIR}/index-1/{work,index,backup,storage,uploads}
|
|
if [ "${INSTANCE_TYPE}" == "2" ] || [ "${INSTANCE_TYPE}" == "3" ]; then
|
|
mkdir -p ${INSTALL_DIR}/index-2/{work,index,backup,storage,uploads}
|
|
fi
|
|
|
|
echo "** Updating settings files"
|
|
|
|
cp install/prometheus.yml ${INSTALL_DIR}/
|
|
envsubst < install/mariadb.env.template > ${INSTALL_DIR}/env/mariadb.env
|
|
envsubst < install/db.properties.template > ${INSTALL_DIR}/conf/db.properties
|
|
|
|
echo "** Creating docker-compose.yml"
|
|
|
|
## Hack to get around envstubst substituting these values, which we want to be verbatim
|
|
export uval="\$\$MARIADB_USER"
|
|
export pval="\$\$MARIADB_PASSWORD"
|
|
|
|
export INSTALL_DIR
|
|
|
|
if [ "${INSTANCE_TYPE}" == "1" ]; then
|
|
envsubst < install/barebones-1/docker-compose.yml.template >${INSTALL_DIR}/docker-compose.yml
|
|
elif [ "${INSTANCE_TYPE}" == "2" ]; then
|
|
envsubst < install/barebones-2/docker-compose.yml.template >${INSTALL_DIR}/docker-compose.yml
|
|
elif [ "${INSTANCE_TYPE}" == "3" ]; then
|
|
envsubst < install/marginalia-prod-like/docker-compose.yml.template >${INSTALL_DIR}/docker-compose.yml
|
|
elif [ "${INSTANCE_TYPE}" == "4" ]; then
|
|
envsubst < install/no-docker/docker-compose.yml.template >${INSTALL_DIR}/docker-compose.yml
|
|
cp install/no-docker/README ${INSTALL_DIR}/README
|
|
|
|
echo
|
|
echo "====="
|
|
cat ${INSTALL_DIR}/README
|
|
echo
|
|
echo "====="
|
|
echo "To read this again, look in ${INSTALL_DIR}/README"
|
|
echo
|
|
fi
|
|
|
|
popd |