Merge branch 'main' of git.format.hu:format/framework-scheduler
This commit is contained in:
22
Dockerfile
22
Dockerfile
@@ -1,18 +1,18 @@
|
|||||||
FROM alpine:latest AS redis-source
|
# FROM alpine:latest AS redis-source
|
||||||
|
|
||||||
ARG REDIS_VERSION="7.2.4"
|
# ARG REDIS_VERSION="7.2.4"
|
||||||
ARG REDIS_DOWNLOAD_URL="http://download.redis.io/releases/redis-${REDIS_VERSION}.tar.gz"
|
# ARG REDIS_DOWNLOAD_URL="http://download.redis.io/releases/redis-${REDIS_VERSION}.tar.gz"
|
||||||
RUN apk add --update --no-cache --virtual build-deps gcc make linux-headers musl-dev tar openssl-dev pkgconfig
|
# RUN apk add --update --no-cache --virtual build-deps gcc make linux-headers musl-dev tar openssl-dev pkgconfig
|
||||||
RUN wget -O redis.tar.gz "$REDIS_DOWNLOAD_URL" && \
|
# RUN wget -O redis.tar.gz "$REDIS_DOWNLOAD_URL" && \
|
||||||
mkdir -p /usr/src/redis && \
|
# mkdir -p /usr/src/redis && \
|
||||||
tar -xzf redis.tar.gz -C /usr/src/redis --strip-components=1 && \
|
# tar -xzf redis.tar.gz -C /usr/src/redis --strip-components=1 && \
|
||||||
cd /usr/src/redis/src && \
|
# cd /usr/src/redis/src && \
|
||||||
make BUILD_TLS=yes MALLOC=libc redis-cli
|
# make BUILD_TLS=yes MALLOC=libc redis-cli
|
||||||
|
|
||||||
FROM alpine:latest
|
FROM alpine:latest
|
||||||
|
|
||||||
COPY --from=redis-source /usr/src/redis/src/redis-cli /usr/bin/redis-cli
|
# COPY --from=redis-source /usr/src/redis/src/redis-cli /usr/bin/redis-cli
|
||||||
RUN chmod +x /usr/bin/redis-cli
|
# RUN chmod +x /usr/bin/redis-cli
|
||||||
|
|
||||||
RUN apk add --update --no-cache docker-cli wget curl dos2unix jq openssl git openssh-client coreutils inotify-tools acl
|
RUN apk add --update --no-cache docker-cli wget curl dos2unix jq openssl git openssh-client coreutils inotify-tools acl
|
||||||
|
|
||||||
|
@@ -230,7 +230,6 @@ check_volumes() {
|
|||||||
/usr/bin/docker volume create USER_SECRET
|
/usr/bin/docker volume create USER_SECRET
|
||||||
RET=0
|
RET=0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo $RET
|
echo $RET
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -239,31 +238,26 @@ check_dirs_and_files() {
|
|||||||
RET=0
|
RET=0
|
||||||
if [ ! -d "/var/tmp/shared" ]; then
|
if [ ! -d "/var/tmp/shared" ]; then
|
||||||
mkdir -p /var/tmp/shared
|
mkdir -p /var/tmp/shared
|
||||||
chown -R 65534:65534 /var/tmp/shared
|
|
||||||
chmod -R g+rws /var/tmp/shared
|
|
||||||
setfacl -d -m g:65534:rw /var/tmp/shared
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -d "/var/tmp/shared/input" ]; then
|
if [ ! -d "/var/tmp/shared/input" ]; then
|
||||||
mkdir -p /var/tmp/shared/input
|
mkdir -p /var/tmp/shared/input
|
||||||
chown -R 65534:65534 /var/tmp/shared/input
|
|
||||||
chmod -R g+rws /var/tmp/shared/input
|
|
||||||
setfacl -d -m g:65534:rw /var/tmp/shared/input
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -d "/var/tmp/shared/output" ]; then
|
if [ ! -d "/var/tmp/shared/output" ]; then
|
||||||
mkdir -p /var/tmp/shared/output
|
mkdir -p /var/tmp/shared/output
|
||||||
chown -R 65534:65534 /var/tmp/shared/output
|
|
||||||
chmod -R g+rws /var/tmp/shared/output
|
|
||||||
setfacl -d -m g:65534:rw /var/tmp/shared/output
|
|
||||||
fi
|
fi
|
||||||
|
# Setting file and directory permssion
|
||||||
|
chown -R 65534:65534 /var/tmp/shared
|
||||||
|
chmod -R g+rws /var/tmp/shared
|
||||||
|
setfacl -d -m g:65534:rw /var/tmp/shared
|
||||||
|
|
||||||
if [ ! -d "/etc/user/config/services/" ]; then
|
if [ ! -d "/etc/user/config/services/" ]; then
|
||||||
mkdir /etc/user/config/services/
|
mkdir -p /etc/user/config/services/
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -d "/etc/user/config/services/tmp/" ]; then
|
if [ ! -d "/etc/user/config/services/tmp/" ]; then
|
||||||
mkdir /etc/user/config/services/tmp/
|
mkdir -p /etc/user/config/services/tmp/
|
||||||
|
|
||||||
if [[ -f "/etc/user/config/system.json" && -f "/etc/user/config/user.json" ]]; then
|
if [[ -f "/etc/user/config/system.json" && -f "/etc/user/config/user.json" ]]; then
|
||||||
RET=1
|
RET=1
|
||||||
@@ -271,13 +265,12 @@ check_dirs_and_files() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -d "/etc/system" ]; then
|
if [ ! -d "/etc/system" ]; then
|
||||||
mkdir "/etc/system"
|
mkdir -p"/etc/system"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -d "/etc/user/secret" ]; then
|
if [ ! -d "/etc/user/secret" ]; then
|
||||||
mkdir -p "/etc/user/secret"
|
mkdir -p "/etc/user/secret"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo $RET
|
echo $RET
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -374,21 +367,6 @@ create_framework_json() {
|
|||||||
"SERVICE_NAME": "framework"
|
"SERVICE_NAME": "framework"
|
||||||
},
|
},
|
||||||
"containers": [
|
"containers": [
|
||||||
{
|
|
||||||
"IMAGE": "redis:'$REDIS_VERSION'",
|
|
||||||
"NAME": "'$REDIS_SERVER'",
|
|
||||||
"UPDATE": "true",
|
|
||||||
"MEMORY": "64M",
|
|
||||||
"NETWORK": "'$FRAMEWORK_SCHEDULER_NETWORK'",
|
|
||||||
'$ADDITIONAL',
|
|
||||||
"PORTS":[
|
|
||||||
{ "SOURCE": "null",
|
|
||||||
"DEST": "6379",
|
|
||||||
"TYPE": "tcp"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"POST_START": []
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"IMAGE": "'$DOCKER_REGISTRY_URL'/'$FRAMEWORK_SCHEDULER_IMAGE':'$FRAMEWORK_SCHEDULER_VERSION'",
|
"IMAGE": "'$DOCKER_REGISTRY_URL'/'$FRAMEWORK_SCHEDULER_IMAGE':'$FRAMEWORK_SCHEDULER_VERSION'",
|
||||||
"NAME": "'$FRAMEWORK_SCHEDULER_NAME'",
|
"NAME": "'$FRAMEWORK_SCHEDULER_NAME'",
|
||||||
@@ -556,7 +534,9 @@ execute_task() {
|
|||||||
|
|
||||||
if [ "$TASK_NAME" == "install" ]; then
|
if [ "$TASK_NAME" == "install" ]; then
|
||||||
JSON_TARGET=$(echo '{ "DATE": "'$DATE'", "INSTALL_STATUS": "0" }' | jq -r . | base64 -w0) # install has started
|
JSON_TARGET=$(echo '{ "DATE": "'$DATE'", "INSTALL_STATUS": "0" }' | jq -r . | base64 -w0) # install has started
|
||||||
redis-cli -h $REDIS_SERVER -p $REDIS_PORT SET $TASK "$JSON_TARGET"
|
#redis-cli -h $REDIS_SERVER -p $REDIS_PORT SET $TASK "$JSON_TARGET"
|
||||||
|
install -m 664 -g 65534 /dev/null $SHARED/output/$TASK.json
|
||||||
|
echo $JSON_TARGET | base64 -d >$SHARED/output/$TASK.json
|
||||||
|
|
||||||
#if [ "$INSTALL_STATUS" == "2" ]; then
|
#if [ "$INSTALL_STATUS" == "2" ]; then
|
||||||
# force install?
|
# force install?
|
||||||
@@ -757,7 +737,7 @@ execute_task() {
|
|||||||
JSON_TARGET=$(echo '{ "DATE": "'$DATE'", "STATUS": "0", "TEMPLATE": "'$TEMPLATE'" }' | jq -r . | base64 -w0)
|
JSON_TARGET=$(echo '{ "DATE": "'$DATE'", "STATUS": "0", "TEMPLATE": "'$TEMPLATE'" }' | jq -r . | base64 -w0)
|
||||||
elif [ "$DEPLOY_ACTION" == "deploy" ]; then
|
elif [ "$DEPLOY_ACTION" == "deploy" ]; then
|
||||||
JSON_TARGET=$(echo '{ "DATE": "'$DATE'", "STATUS": "1" }' | jq -r . | base64 -w0) # deployment has started
|
JSON_TARGET=$(echo '{ "DATE": "'$DATE'", "STATUS": "1" }' | jq -r . | base64 -w0) # deployment has started
|
||||||
redis-cli -h $REDIS_SERVER -p $REDIS_PORT SET $TASK "$JSON_TARGET" # web_in
|
#redis-cli -h $REDIS_SERVER -p $REDIS_PORT SET $TASK "$JSON_TARGET" # web_in
|
||||||
|
|
||||||
DEPLOY_PAYLOAD=$(echo "$JSON" | jq -r .PAYLOAD) # base64 list of key-value pairs in JSON
|
DEPLOY_PAYLOAD=$(echo "$JSON" | jq -r .PAYLOAD) # base64 list of key-value pairs in JSON
|
||||||
deploy_additionals "$APP_DIR" "$DEPLOY_NAME" "$DEPLOY_PAYLOAD"
|
deploy_additionals "$APP_DIR" "$DEPLOY_NAME" "$DEPLOY_PAYLOAD"
|
||||||
@@ -797,7 +777,9 @@ execute_task() {
|
|||||||
debug "JSON_TARGET: $JSON_TARGET"
|
debug "JSON_TARGET: $JSON_TARGET"
|
||||||
|
|
||||||
if [ "$JSON_TARGET" != "" ]; then
|
if [ "$JSON_TARGET" != "" ]; then
|
||||||
redis-cli -h $REDIS_SERVER -p $REDIS_PORT SET $TASK "$JSON_TARGET"
|
#redis-cli -h $REDIS_SERVER -p $REDIS_PORT SET $TASK "$JSON_TARGET"
|
||||||
|
install -m 664 -g 65534 /dev/null $SHARED/output/$TASK.json
|
||||||
|
echo $JSON_TARGET | base64 -d >$SHARED/output/$TASK.json
|
||||||
fi
|
fi
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -913,6 +895,12 @@ if [ "$STATUS" != "1" ]; then
|
|||||||
/usr/bin/docker network create $FRAMEWORK_SCHEDULER_NETWORK --subnet $FRAMEWORK_SCHEDULER_NETWORK_SUBNET
|
/usr/bin/docker network create $FRAMEWORK_SCHEDULER_NETWORK --subnet $FRAMEWORK_SCHEDULER_NETWORK_SUBNET
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
VOL=$(check_volumes)
|
||||||
|
if [ "$VOL" != "1" ]; then
|
||||||
|
start_framework_scheduler
|
||||||
|
/usr/bin/docker rm -f $HOSTNAME
|
||||||
|
fi
|
||||||
|
|
||||||
DF=$(check_dirs_and_files)
|
DF=$(check_dirs_and_files)
|
||||||
if [ "$DF" != "1" ]; then
|
if [ "$DF" != "1" ]; then
|
||||||
create_system_json
|
create_system_json
|
||||||
@@ -920,56 +908,68 @@ if [ "$DF" != "1" ]; then
|
|||||||
create_framework_json
|
create_framework_json
|
||||||
fi
|
fi
|
||||||
|
|
||||||
VOL=$(check_volumes)
|
#RS=$(docker ps | grep redis-server)
|
||||||
if [ "$VOL" != "1" ]; then
|
|
||||||
start_framework_scheduler
|
|
||||||
/usr/bin/docker rm -f $HOSTNAME
|
|
||||||
fi
|
|
||||||
|
|
||||||
RS=$(docker ps | grep redis-server)
|
|
||||||
WS=$(docker ps | grep webserver)
|
WS=$(docker ps | grep webserver)
|
||||||
|
|
||||||
if [[ "$WS" == "" && "$RS" == "" ]]; then
|
#if [[ "$WS" == "" && "$RS" == "" ]]; then
|
||||||
|
if [ "$WS" == "" ]; then
|
||||||
|
|
||||||
# START SERVICES
|
# START SERVICES
|
||||||
$service_exec service-framework.containers.redis-server start &
|
#$service_exec service-framework.containers.redis-server start &
|
||||||
$service_exec service-framework.containers.webserver start &
|
$service_exec service-framework.containers.webserver start &
|
||||||
sleep 5
|
sleep 5
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# poll redis infinitely for scheduler jobs
|
|
||||||
check_redis_availability $REDIS_SERVER $REDIS_PORT $CURL_RETRIES $CURL_SLEEP_SHORT
|
|
||||||
echo $(date)" Scheduler initialized, starting listening for events"
|
|
||||||
|
|
||||||
# STARTING SCHEDULER PROCESSES
|
# STARTING SCHEDULER PROCESSES
|
||||||
while true; do
|
# Initial parameters
|
||||||
|
DATE=$(date +%F-%H-%M-%S)
|
||||||
|
|
||||||
TASKS=""
|
# Set env variables
|
||||||
|
DIR=$SHARED/input
|
||||||
|
|
||||||
# GET DEPLOYMENT IDs FROM generate key
|
# Triggers by certificate or domain config changes
|
||||||
TASKS=$(redis-cli -h $REDIS_SERVER -p $REDIS_PORT SMEMBERS web_in)
|
|
||||||
if [[ "$TASKS" != "0" && "$TASKS" != "" ]]; then
|
|
||||||
|
|
||||||
# PROCESSING TASK
|
unset IFS
|
||||||
for TASK in $(echo $TASKS); do
|
|
||||||
|
|
||||||
### READ TASKS FROM REDIS
|
|
||||||
B64_JSON=$(redis-cli -h $REDIS_SERVER -p $REDIS_PORT GET $TASK)
|
|
||||||
|
|
||||||
JSON_TARGET=$(echo $B64_JSON | base64 -d | jq -rc .'STATUS="0"' | base64 -w0)
|
|
||||||
redis-cli -h $REDIS_SERVER -p $REDIS_PORT SET $TASK "$JSON_TARGET"
|
|
||||||
|
|
||||||
|
inotifywait --exclude "\.(swp|tmp)" -m -e CREATE,CLOSE_WRITE,DELETE,MOVED_TO -r $DIR |
|
||||||
|
while read dir op file; do
|
||||||
|
if [ "${op}" == "CLOSE_WRITE,CLOSE" ]; then
|
||||||
|
echo "new file created: $file"
|
||||||
|
B64_JSON=$(cat $DIR/$file | base64 -w0)
|
||||||
|
TASK=$(echo $file | cut -d '.' -f1)
|
||||||
execute_task "$TASK" "$B64_JSON"
|
execute_task "$TASK" "$B64_JSON"
|
||||||
|
rm -f $dir/$file
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
# MOVE TASK from web_in into web_out
|
# while true; do
|
||||||
redis-cli -h $REDIS_SERVER -p $REDIS_PORT SREM web_in $TASK
|
|
||||||
redis-cli -h $REDIS_SERVER -p $REDIS_PORT SADD web_out $TASK
|
|
||||||
echo $JSON_TARGET | base64 -d > $SHARED/output/$TASK.json
|
|
||||||
|
|
||||||
|
# TASKS=""
|
||||||
|
|
||||||
done
|
# # GET DEPLOYMENT IDs FROM generate key
|
||||||
fi
|
# #TASKS=$(redis-cli -h $REDIS_SERVER -p $REDIS_PORT SMEMBERS web_in)
|
||||||
|
# TASK=$(read $SHARED/output/*)
|
||||||
|
# if [[ "$TASKS" != "0" && "$TASKS" != "" ]]; then
|
||||||
|
|
||||||
sleep 1
|
# # PROCESSING TASK
|
||||||
done
|
# for TASK in $(echo $TASKS); do
|
||||||
|
|
||||||
|
# ### READ TASKS FROM REDIS
|
||||||
|
# B64_JSON=$(redis-cli -h $REDIS_SERVER -p $REDIS_PORT GET $TASK)
|
||||||
|
|
||||||
|
# JSON_TARGET=$(echo $B64_JSON | base64 -d | jq -rc .'STATUS="0"' | base64 -w0)
|
||||||
|
# redis-cli -h $REDIS_SERVER -p $REDIS_PORT SET $TASK "$JSON_TARGET"
|
||||||
|
|
||||||
|
# execute_task "$TASK" "$B64_JSON"
|
||||||
|
|
||||||
|
# # MOVE TASK from web_in into web_out
|
||||||
|
# redis-cli -h $REDIS_SERVER -p $REDIS_PORT SREM web_in $TASK
|
||||||
|
# redis-cli -h $REDIS_SERVER -p $REDIS_PORT SADD web_out $TASK
|
||||||
|
# echo $JSON_TARGET | base64 -d > $SHARED/output/$TASK.json
|
||||||
|
|
||||||
|
# done
|
||||||
|
# fi
|
||||||
|
|
||||||
|
# sleep 1
|
||||||
|
# done
|
||||||
|
@@ -7,67 +7,66 @@ GLOBAL_VERSION=$5
|
|||||||
|
|
||||||
get_vpn_key() {
|
get_vpn_key() {
|
||||||
|
|
||||||
if [ "$VPN_PASS" != "" ]; then
|
if [ "$VPN_PASS" != "" ]; then
|
||||||
dateFromServer=$(curl -v --silent https://demo.format.hu/ 2>&1 | grep -i '< date' | sed -e 's/< date: //gi')
|
dateFromServer=$(curl -v --silent https://demo.format.hu/ 2>&1 | grep -i '< date' | sed -e 's/< date: //gi')
|
||||||
VPN_DATE=$(date +"%Y%m%d" -d "$dateFromServer");
|
VPN_DATE=$(date +"%Y%m%d" -d "$dateFromServer")
|
||||||
VPN_HASH=$(echo -n $(( $VPN_PASS * $VPN_DATE )) | sha256sum | cut -d " " -f1);
|
VPN_HASH=$(echo -n $(($VPN_PASS * $VPN_DATE)) | sha256sum | cut -d " " -f1)
|
||||||
VPN_URL="$VPN_DOMAIN/$VPN_HASH/secret";
|
VPN_URL="$VPN_DOMAIN/$VPN_HASH/secret"
|
||||||
echo "DEBUG: $VPN_DATE";
|
echo "DEBUG: $VPN_DATE"
|
||||||
echo "DEBUG: $VPN_URL";
|
echo "DEBUG: $VPN_URL"
|
||||||
HTTP_CODE=$(curl -s -I -w "%{http_code}" $VPN_URL -o /dev/null);
|
HTTP_CODE=$(curl -s -I -w "%{http_code}" $VPN_URL -o /dev/null)
|
||||||
|
|
||||||
echo "DEBUG: $HTTP_CODE";
|
echo "DEBUG: $HTTP_CODE"
|
||||||
if [ "$HTTP_CODE" == "200" ]; then
|
if [ "$HTTP_CODE" == "200" ]; then
|
||||||
# download VPN key
|
# download VPN key
|
||||||
VPN_KEY=$(curl -s $VPN_URL);
|
VPN_KEY=$(curl -s $VPN_URL)
|
||||||
echo $VPN_KEY;
|
echo $VPN_KEY
|
||||||
|
|
||||||
$SUDO_CMD mkdir -p /etc/user/secret/vpn-proxy;
|
$SUDO_CMD mkdir -p /etc/user/secret/vpn-proxy
|
||||||
echo $VPN_KEY | base64 -d > /tmp/wg0.conf;
|
echo $VPN_KEY | base64 -d >/tmp/wg0.conf
|
||||||
$SUDO_CMD mv /tmp/wg0.conf /etc/user/secret/vpn-proxy/;
|
$SUDO_CMD mv /tmp/wg0.conf /etc/user/secret/vpn-proxy/
|
||||||
else
|
else
|
||||||
echo "Download of VPN KEY was unsuccessful from URL: $VPN_URL";
|
echo "Download of VPN KEY was unsuccessful from URL: $VPN_URL"
|
||||||
echo "VPN proxy was skipped.";
|
echo "VPN proxy was skipped."
|
||||||
VPN_PROXY="no";
|
VPN_PROXY="no"
|
||||||
fi;
|
fi
|
||||||
else
|
else
|
||||||
echo "$VPN_PASS is empty";
|
echo "$VPN_PASS is empty"
|
||||||
fi;
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
discover_services() {
|
discover_services() {
|
||||||
if [ "$DISCOVERY" == "yes" ]; then
|
if [ "$DISCOVERY" == "yes" ]; then
|
||||||
if [ "$DISCOVERY_CONFIG_FILE" == "discovery.conf" ] ; then
|
if [ "$DISCOVERY_CONFIG_FILE" == "discovery.conf" ]; then
|
||||||
DISCOVERY_CONFIG_FILE=$AUTO_START_SERVICES"/discovery.conf";
|
DISCOVERY_CONFIG_FILE=$AUTO_START_SERVICES"/discovery.conf"
|
||||||
if [ ! -f $DISCOVERY_CONFIG_FILE ]; then
|
if [ ! -f $DISCOVERY_CONFIG_FILE ]; then
|
||||||
USE_SUDO=$(whoami);
|
USE_SUDO=$(whoami)
|
||||||
if [ "$USE_SUDO" == "root" ]; then
|
if [ "$USE_SUDO" == "root" ]; then
|
||||||
USE_SUDO=0;
|
USE_SUDO=0
|
||||||
else
|
else
|
||||||
USE_SUDO=1;
|
USE_SUDO=1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
{
|
{
|
||||||
echo '#!/bin/bash';
|
echo '#!/bin/bash'
|
||||||
echo 'SOURCE_DIRS="/etc/user/data/ /etc/user/config/"; # separator space or |';
|
echo 'SOURCE_DIRS="/etc/user/data/ /etc/user/config/"; # separator space or |'
|
||||||
echo 'DIRNAME="services misc"; # separator space or |';
|
echo 'DIRNAME="services misc"; # separator space or |'
|
||||||
echo 'FILENAME="service healthcheck"; # separator space or |';
|
echo 'FILENAME="service healthcheck"; # separator space or |'
|
||||||
echo 'KEYS="START_ON_BOOT"; # separator space or |';
|
echo 'KEYS="START_ON_BOOT"; # separator space or |'
|
||||||
echo 'DEST_FILE="results.txt";';
|
echo 'DEST_FILE="results.txt";'
|
||||||
echo 'USE_SUDO='$USE_SUDO';';
|
echo 'USE_SUDO='$USE_SUDO';'
|
||||||
|
|
||||||
} >> $DISCOVERY_CONFIG_FILE;
|
} >>$DISCOVERY_CONFIG_FILE
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
DISCOVERY_CONFIG_DIR=$(dirname $DISCOVERY_CONFIG_FILE)
|
DISCOVERY_CONFIG_DIR=$(dirname $DISCOVERY_CONFIG_FILE)
|
||||||
if [ "$DISCOVERY_CONFIG_DIR" == "/root" ]; then
|
if [ "$DISCOVERY_CONFIG_DIR" == "/root" ]; then
|
||||||
DISCOVERY_CONFIG_DIR="";
|
DISCOVERY_CONFIG_DIR=""
|
||||||
fi
|
fi
|
||||||
|
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#@@@@@@
|
#@@@@@@
|
||||||
# START
|
# START
|
||||||
#@@@@@@
|
#@@@@@@
|
||||||
@@ -76,333 +75,330 @@ JSON="$(echo $1 | base64 -d)"
|
|||||||
|
|
||||||
# Loop through each key in the JSON and create a variable
|
# Loop through each key in the JSON and create a variable
|
||||||
for key in $(echo "$JSON" | jq -r 'keys[]'); do
|
for key in $(echo "$JSON" | jq -r 'keys[]'); do
|
||||||
value=$(echo "$JSON" | jq -r --arg k "$key" '.[$k]')
|
value=$(echo "$JSON" | jq -r --arg k "$key" '.[$k]')
|
||||||
eval "$key=$value"
|
eval "$key=$value"
|
||||||
done
|
done
|
||||||
|
|
||||||
|
SUDO_CMD=""
|
||||||
SUDO_CMD="";
|
|
||||||
|
|
||||||
# first install - TODEL ??
|
# first install - TODEL ??
|
||||||
if [[ $FIRST_INSTALL == "true" ]]; then
|
if [[ $FIRST_INSTALL == "true" ]]; then
|
||||||
|
|
||||||
INIT="true";
|
INIT="true"
|
||||||
|
|
||||||
#discover_services;
|
#discover_services;
|
||||||
echo "$INSTALL_KEY" |base64 -d > /etc/user/data/installer
|
echo "$INSTALL_KEY" | base64 -d >/etc/user/data/installer
|
||||||
chmod 0600 /etc/user/data/installer;
|
chmod 0600 /etc/user/data/installer
|
||||||
|
|
||||||
# base variables
|
# base variables
|
||||||
|
|
||||||
if [ "$DOCKER_REGISTRY_URL" != "" ]; then
|
if [ "$DOCKER_REGISTRY_URL" != "" ]; then
|
||||||
VAR_DOCKER_REGISTRY_URL="--env DOCKER_REGISTRY_URL=$DOCKER_REGISTRY_URL";
|
VAR_DOCKER_REGISTRY_URL="--env DOCKER_REGISTRY_URL=$DOCKER_REGISTRY_URL"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$SMARTHOST_PROXY" != "" ]; then
|
if [ "$SMARTHOST_PROXY" != "" ]; then
|
||||||
VAR_SMARTHOST_PROXY="--env SMARTHOST_PROXY=$SMARTHOST_PROXY";
|
VAR_SMARTHOST_PROXY="--env SMARTHOST_PROXY=$SMARTHOST_PROXY"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$LOCAL_PROXY" != "" ]; then
|
if [ "$LOCAL_PROXY" != "" ]; then
|
||||||
VAR_LOCAL_PROXY="--env LOCAL_PROXY=$LOCAL_PROXY";
|
VAR_LOCAL_PROXY="--env LOCAL_PROXY=$LOCAL_PROXY"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$VPN_PROXY" != "" ]; then
|
if [ "$VPN_PROXY" != "" ]; then
|
||||||
VAR_VPN_PROXY="--env VPN_PROXY=$VPN_PROXY";
|
VAR_VPN_PROXY="--env VPN_PROXY=$VPN_PROXY"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$DOMAIN" != "" ]; then
|
if [ "$DOMAIN" != "" ]; then
|
||||||
VAR_DOMAIN="--env DOMAIN=$DOMAIN";
|
VAR_DOMAIN="--env DOMAIN=$DOMAIN"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$CRON" != "" ]; then
|
if [ "$CRON" != "" ]; then
|
||||||
VAR_CRON="--env CRON=$CRON";
|
VAR_CRON="--env CRON=$CRON"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$VPN_PROXY" == "yes" ]; then
|
if [ "$VPN_PROXY" == "yes" ]; then
|
||||||
if [ "$LETSENCRYPT_SERVERNAME" = "" ]; then
|
if [ "$LETSENCRYPT_SERVERNAME" = "" ]; then
|
||||||
LETSENCRYPT_SERVERNAME="letsencrypt";
|
LETSENCRYPT_SERVERNAME="letsencrypt"
|
||||||
fi;
|
fi
|
||||||
fi;
|
fi
|
||||||
|
|
||||||
# discovery
|
# discovery
|
||||||
|
|
||||||
if [ "$DISCOVERY" != "" ]; then
|
if [ "$DISCOVERY" != "" ]; then
|
||||||
VAR_DISCOVERY="--env DISCOVERY=$DISCOVERY";
|
VAR_DISCOVERY="--env DISCOVERY=$DISCOVERY"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$DISCOVERY_DIR" != "" ]; then
|
if [ "$DISCOVERY_DIR" != "" ]; then
|
||||||
VAR_DISCOVERY_DIR="--env DISCOVERY_DIR=$DISCOVERY_DIR";
|
VAR_DISCOVERY_DIR="--env DISCOVERY_DIR=$DISCOVERY_DIR"
|
||||||
VAR_DISCOVERY_DIRECTORY="--volume $DISCOVERY_DIR/:$DISCOVERY_DIR/";
|
VAR_DISCOVERY_DIRECTORY="--volume $DISCOVERY_DIR/:$DISCOVERY_DIR/"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$DISCOVERY_CONFIG_FILE" != "" ]; then
|
if [ "$DISCOVERY_CONFIG_FILE" != "" ]; then
|
||||||
VAR_DISCOVERY_CONFIG_FILE="--env DISCOVERY_CONFIG_FILE=$DISCOVERY_CONFIG_FILE";
|
VAR_DISCOVERY_CONFIG_FILE="--env DISCOVERY_CONFIG_FILE=$DISCOVERY_CONFIG_FILE"
|
||||||
if [ "$DISCOVERY_CONFIG_DIR" != "" ]; then
|
if [ "$DISCOVERY_CONFIG_DIR" != "" ]; then
|
||||||
VAR_DISCOVERY_CONFIG_DIRECTORY="--volume $DISCOVERY_CONFIG_DIR/:$DISCOVERY_CONFIG_DIR/";
|
VAR_DISCOVERY_CONFIG_DIRECTORY="--volume $DISCOVERY_CONFIG_DIR/:$DISCOVERY_CONFIG_DIR/"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Run installer tool
|
# Run installer tool
|
||||||
|
|
||||||
$SUDO_CMD docker run \
|
$SUDO_CMD docker run \
|
||||||
$VAR_DOCKER_REGISTRY_URL \
|
$VAR_DOCKER_REGISTRY_URL \
|
||||||
$VAR_SMARTHOST_PROXY \
|
$VAR_SMARTHOST_PROXY \
|
||||||
$VAR_LOCAL_PROXY \
|
$VAR_LOCAL_PROXY \
|
||||||
$VAR_VPN_PROXY \
|
$VAR_VPN_PROXY \
|
||||||
$VAR_DOMAIN \
|
$VAR_DOMAIN \
|
||||||
$VAR_CRON \
|
$VAR_CRON \
|
||||||
$VAR_DISCOVERY \
|
$VAR_DISCOVERY \
|
||||||
$VAR_DISCOVERY_DIR \
|
$VAR_DISCOVERY_DIR \
|
||||||
$VAR_DISCOVERY_DIRECTORY \
|
$VAR_DISCOVERY_DIRECTORY \
|
||||||
$VAR_DISCOVERY_CONFIG_FILE \
|
$VAR_DISCOVERY_CONFIG_FILE \
|
||||||
$VAR_DISCOVERY_CONFIG_DIRECTORY \
|
$VAR_DISCOVERY_CONFIG_DIRECTORY \
|
||||||
--volume SYSTEM_DATA:/etc/system/data \
|
--volume SYSTEM_DATA:/etc/system/data \
|
||||||
--volume SYSTEM_CONFIG:/etc/system/config \
|
--volume SYSTEM_CONFIG:/etc/system/config \
|
||||||
--volume SYSTEM_LOG:/etc/system/log \
|
--volume SYSTEM_LOG:/etc/system/log \
|
||||||
--volume USER_DATA:/etc/user/data \
|
--volume USER_DATA:/etc/user/data \
|
||||||
--volume USER_CONFIG:/etc/user/config \
|
--volume USER_CONFIG:/etc/user/config \
|
||||||
--volume USER_SECRET:/etc/user/secret \
|
--volume USER_SECRET:/etc/user/secret \
|
||||||
--mount src=USER_DATA,dst=/root/.ssh/id_rsa,volume-subpath=installer \
|
--mount src=USER_DATA,dst=/root/.ssh/id_rsa,volume-subpath=installer \
|
||||||
--env LETSENCRYPT_MAIL=$LETSENCRYPT_MAIL \
|
--env LETSENCRYPT_MAIL=$LETSENCRYPT_MAIL \
|
||||||
--env LETSENCRYPT_SERVERNAME=$LETSENCRYPT_SERVERNAME \
|
--env LETSENCRYPT_SERVERNAME=$LETSENCRYPT_SERVERNAME \
|
||||||
--env GLOBAL_VERSION=$GLOBAL_VERSION \
|
--env GLOBAL_VERSION=$GLOBAL_VERSION \
|
||||||
--rm \
|
--rm \
|
||||||
$DOCKER_REGISTRY_URL/installer-tool
|
$DOCKER_REGISTRY_URL/installer-tool
|
||||||
else
|
else
|
||||||
|
|
||||||
$SUDO_CMD docker pull $DOCKER_REGISTRY_URL/installer-tool
|
$SUDO_CMD docker pull $DOCKER_REGISTRY_URL/installer-tool
|
||||||
$SUDO_CMD docker pull $DOCKER_REGISTRY_URL/setup
|
$SUDO_CMD docker pull $DOCKER_REGISTRY_URL/setup
|
||||||
|
|
||||||
fi;
|
fi
|
||||||
|
|
||||||
# # test - alias doesn't work inside a function
|
# # test - alias doesn't work inside a function
|
||||||
# # must be outside of if
|
# # must be outside of if
|
||||||
# shopt -s expand_aliases
|
# shopt -s expand_aliases
|
||||||
# source $HOME/.bash_aliases
|
# source $HOME/.bash_aliases
|
||||||
|
|
||||||
if [ "$INIT" == "true" ]; then
|
if [ "$INIT" == "true" ]; then
|
||||||
|
|
||||||
INIT_SERVICE_PATH=/etc/user/config/services
|
INIT_SERVICE_PATH=/etc/user/config/services
|
||||||
AUTO_START_SERVICES="/etc/system/data/";
|
AUTO_START_SERVICES="/etc/system/data/"
|
||||||
|
|
||||||
# type -a $SERVICE-EXEC
|
# type -a $SERVICE-EXEC
|
||||||
|
|
||||||
$SERVICE_EXEC core-dns start
|
$SERVICE_EXEC core-dns start
|
||||||
echo "$INIT_SERVICE_PATH/core-dns.json" >> $AUTO_START_SERVICES/.init_services
|
echo "$INIT_SERVICE_PATH/core-dns.json" >>$AUTO_START_SERVICES/.init_services
|
||||||
|
|
||||||
if [ "$CRON" == "yes" ]; then
|
if [ "$CRON" == "yes" ]; then
|
||||||
$SERVICE_EXEC cron start
|
$SERVICE_EXEC cron start
|
||||||
echo "$INIT_SERVICE_PATH/cron.json" >> $AUTO_START_SERVICES/.init_services
|
echo "$INIT_SERVICE_PATH/cron.json" >>$AUTO_START_SERVICES/.init_services
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$VPN_PROXY" == "yes" ]; then
|
if [ "$VPN_PROXY" == "yes" ]; then
|
||||||
|
|
||||||
get_vpn_key;
|
get_vpn_key
|
||||||
|
|
||||||
$SERVICE_EXEC vpn-proxy start
|
$SERVICE_EXEC vpn-proxy start
|
||||||
echo "$INIT_SERVICE_PATH/vpn-proxy.json" >> $AUTO_START_SERVICES/.init_services
|
echo "$INIT_SERVICE_PATH/vpn-proxy.json" >>$AUTO_START_SERVICES/.init_services
|
||||||
echo "$INIT_SERVICE_PATH/firewall-vpn-smarthost-loadbalancer" >> $AUTO_START_SERVICES/.init_services
|
echo "$INIT_SERVICE_PATH/firewall-vpn-smarthost-loadbalancer" >>$AUTO_START_SERVICES/.init_services
|
||||||
echo "$INIT_SERVICE_PATH/firewall-vpn-proxy-postrouting" >> $AUTO_START_SERVICES/.init_services
|
echo "$INIT_SERVICE_PATH/firewall-vpn-proxy-postrouting" >>$AUTO_START_SERVICES/.init_services
|
||||||
echo "$INIT_SERVICE_PATH/firewall-vpn-proxy-prerouting" >> $AUTO_START_SERVICES/.init_services
|
echo "$INIT_SERVICE_PATH/firewall-vpn-proxy-prerouting" >>$AUTO_START_SERVICES/.init_services
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$SMARTHOST_PROXY" == "yes" ]; then
|
if [ "$SMARTHOST_PROXY" == "yes" ]; then
|
||||||
$SERVICE_EXEC smarthost-proxy start
|
$SERVICE_EXEC smarthost-proxy start
|
||||||
$SERVICE_EXEC smarthost-proxy-scheduler start
|
$SERVICE_EXEC smarthost-proxy-scheduler start
|
||||||
$SERVICE_EXEC local-proxy start
|
$SERVICE_EXEC local-proxy start
|
||||||
|
|
||||||
echo "$INIT_SERVICE_PATH/smarthost-proxy.json" >> $AUTO_START_SERVICES/.init_services
|
echo "$INIT_SERVICE_PATH/smarthost-proxy.json" >>$AUTO_START_SERVICES/.init_services
|
||||||
echo "$INIT_SERVICE_PATH/firewall-smarthost-loadbalancer-dns.json" >> $AUTO_START_SERVICES/.init_services
|
echo "$INIT_SERVICE_PATH/firewall-smarthost-loadbalancer-dns.json" >>$AUTO_START_SERVICES/.init_services
|
||||||
echo "$INIT_SERVICE_PATH/firewall-letsencrypt.json" >> $AUTO_START_SERVICES/.init_services
|
echo "$INIT_SERVICE_PATH/firewall-letsencrypt.json" >>$AUTO_START_SERVICES/.init_services
|
||||||
echo "$INIT_SERVICE_PATH/firewall-smarthostloadbalancer-from-publicbackend.json" >> $AUTO_START_SERVICES/.init_services
|
echo "$INIT_SERVICE_PATH/firewall-smarthostloadbalancer-from-publicbackend.json" >>$AUTO_START_SERVICES/.init_services
|
||||||
echo "$INIT_SERVICE_PATH/firewall-smarthost-backend-dns.json" >> $AUTO_START_SERVICES/.init_services
|
echo "$INIT_SERVICE_PATH/firewall-smarthost-backend-dns.json" >>$AUTO_START_SERVICES/.init_services
|
||||||
echo "$INIT_SERVICE_PATH/firewall-smarthost-to-backend.json" >> $AUTO_START_SERVICES/.init_services
|
echo "$INIT_SERVICE_PATH/firewall-smarthost-to-backend.json" >>$AUTO_START_SERVICES/.init_services
|
||||||
echo "$INIT_SERVICE_PATH/smarthost-proxy-scheduler.json" >> $AUTO_START_SERVICES/.init_services
|
echo "$INIT_SERVICE_PATH/smarthost-proxy-scheduler.json" >>$AUTO_START_SERVICES/.init_services
|
||||||
echo "$INIT_SERVICE_PATH/local-proxy.json" >> $AUTO_START_SERVICES/.init_services
|
echo "$INIT_SERVICE_PATH/local-proxy.json" >>$AUTO_START_SERVICES/.init_services
|
||||||
|
|
||||||
if [ "$LOCAL_BACKEND" == "yes" ]; then
|
|
||||||
$SERVICE_EXEC local-backend start
|
|
||||||
echo "$INIT_SERVICE_PATH/local-backend.json" >> $AUTO_START_SERVICES/.init_services
|
|
||||||
echo "$INIT_SERVICE_PATH/firewall-local-backend.json" >> $AUTO_START_SERVICES/.init_services
|
|
||||||
echo "$INIT_SERVICE_PATH/domain-local-backend.json" >> $AUTO_START_SERVICES/.init_services
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
fi;
|
if [ "$LOCAL_BACKEND" == "yes" ]; then
|
||||||
|
$SERVICE_EXEC local-backend start
|
||||||
|
echo "$INIT_SERVICE_PATH/local-backend.json" >>$AUTO_START_SERVICES/.init_services
|
||||||
|
echo "$INIT_SERVICE_PATH/firewall-local-backend.json" >>$AUTO_START_SERVICES/.init_services
|
||||||
|
echo "$INIT_SERVICE_PATH/domain-local-backend.json" >>$AUTO_START_SERVICES/.init_services
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
ADDITIONALS=""; # COMMENT
|
fi
|
||||||
ADDITIONAL_SERVICES="";
|
|
||||||
|
ADDITIONALS="" # COMMENT
|
||||||
|
ADDITIONAL_SERVICES=""
|
||||||
|
|
||||||
# install additionals - run installer-tool again but additional_install.sh instead of deploy.sh
|
# install additionals - run installer-tool again but additional_install.sh instead of deploy.sh
|
||||||
if [ "$ADDITIONALS" == "yes" ]; then
|
if [ "$ADDITIONALS" == "yes" ]; then
|
||||||
|
|
||||||
if [ "$NEXTCLOUD" == "yes" ]; then
|
if [ "$NEXTCLOUD" == "yes" ]; then
|
||||||
VAR_NEXTCLOUD="--env NEXTCLOUD=$NEXTCLOUD";
|
VAR_NEXTCLOUD="--env NEXTCLOUD=$NEXTCLOUD"
|
||||||
VAR_NEXTCLOUD="$VAR_NEXTCLOUD --env NEXTCLOUD_DOMAIN=$NEXTCLOUD_DOMAIN";
|
VAR_NEXTCLOUD="$VAR_NEXTCLOUD --env NEXTCLOUD_DOMAIN=$NEXTCLOUD_DOMAIN"
|
||||||
VAR_NEXTCLOUD="$VAR_NEXTCLOUD --env NEXTCLOUD_USERNAME=$NEXTCLOUD_USERNAME";
|
VAR_NEXTCLOUD="$VAR_NEXTCLOUD --env NEXTCLOUD_USERNAME=$NEXTCLOUD_USERNAME"
|
||||||
VAR_NEXTCLOUD="$VAR_NEXTCLOUD --env NEXTCLOUD_PASSWORD=$NEXTCLOUD_PASSWORD";
|
VAR_NEXTCLOUD="$VAR_NEXTCLOUD --env NEXTCLOUD_PASSWORD=$NEXTCLOUD_PASSWORD"
|
||||||
|
|
||||||
if [ ! -d "/etc/user/data/nextcloud" ]; then
|
if [ ! -d "/etc/user/data/nextcloud" ]; then
|
||||||
for DIR in data apps config ; do
|
for DIR in data apps config; do
|
||||||
$SUDO_CMD mkdir -p "/etc/user/data/nextcloud/$DIR"
|
$SUDO_CMD mkdir -p "/etc/user/data/nextcloud/$DIR"
|
||||||
$SUDO_CMD chown -R 82:82 "/etc/user/data/nextcloud/$DIR"
|
$SUDO_CMD chown -R 82:82 "/etc/user/data/nextcloud/$DIR"
|
||||||
done
|
done
|
||||||
fi;
|
fi
|
||||||
|
|
||||||
echo "Would you like to run Nextcloud after install? (Y/n)";
|
|
||||||
read -r ANSWER;
|
|
||||||
if [ "$ANSWER" == "y" ] || [ "$ANSWER" == "Y" ] || [ "$ANSWER" == "" ] ; then
|
|
||||||
ADDITIONAL_SERVICES="$ADDITIONAL_SERVICES nextcloud";
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$BITWARDEN" == "yes" ]; then
|
|
||||||
VAR_BITWARDEN="--env BITWARDEN=$BITWARDEN";
|
|
||||||
VAR_BITWARDEN="$VAR_BITWARDEN --env BITWARDEN_DOMAIN=$BITWARDEN_DOMAIN";
|
|
||||||
VAR_BITWARDEN="$VAR_BITWARDEN --env SMTP_SERVER=$SMTP_SERVER";
|
|
||||||
VAR_BITWARDEN="$VAR_BITWARDEN --env SMTP_HOST=$SMTP_HOST";
|
|
||||||
VAR_BITWARDEN="$VAR_BITWARDEN --env SMTP_PORT=$SMTP_PORT";
|
|
||||||
VAR_BITWARDEN="$VAR_BITWARDEN --env SMTP_SECURITY=$SMTP_SECURITY";
|
|
||||||
VAR_BITWARDEN="$VAR_BITWARDEN --env SMTP_FROM=$SMTP_FROM";
|
|
||||||
VAR_BITWARDEN="$VAR_BITWARDEN --env SMTP_USERNAME=$SMTP_USERNAME";
|
|
||||||
VAR_BITWARDEN="$VAR_BITWARDEN --env SMTP_PASSWORD=$SMTP_PASSWORD";
|
|
||||||
VAR_BITWARDEN="$VAR_BITWARDEN --env DOMAINS_WHITELIST=$DOMAINS_WHITELIST";
|
|
||||||
|
|
||||||
echo " ";
|
|
||||||
echo "######################################################################################";
|
|
||||||
echo "# You can access your bitwarden admin page here: https://$BITWARDEN_DOMAIN/admin #";
|
|
||||||
echo "# You will find ADMIN TOKEN in this file: /etc/user/secret/bitwarden.json #";
|
|
||||||
echo "######################################################################################";
|
|
||||||
echo " ";
|
|
||||||
echo "Would you like to run Bitwarden after install? (Y/n)";
|
|
||||||
|
|
||||||
read -r ANSWER;
|
|
||||||
if [ "$ANSWER" == "y" ] || [ "$ANSWER" == "Y" ] || [ "$ANSWER" == "" ] ; then
|
|
||||||
ADDITIONAL_SERVICES="$ADDITIONAL_SERVICES bitwarden";
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$GUACAMOLE" == "yes" ]; then
|
echo "Would you like to run Nextcloud after install? (Y/n)"
|
||||||
VAR_GUACAMOLE="--env GUACAMOLE=$GUACAMOLE";
|
read -r ANSWER
|
||||||
VAR_GUACAMOLE="$VAR_GUACAMOLE --env GUACAMOLE_DOMAIN=$GUACAMOLE_DOMAIN";
|
if [ "$ANSWER" == "y" ] || [ "$ANSWER" == "Y" ] || [ "$ANSWER" == "" ]; then
|
||||||
VAR_GUACAMOLE="$VAR_GUACAMOLE --env GUACAMOLE_ADMIN_NAME=$GUACAMOLE_ADMIN_NAME";
|
ADDITIONAL_SERVICES="$ADDITIONAL_SERVICES nextcloud"
|
||||||
VAR_GUACAMOLE="$VAR_GUACAMOLE --env GUACAMOLE_ADMIN_PASSWORD=$GUACAMOLE_ADMIN_PASSWORD";
|
fi
|
||||||
VAR_GUACAMOLE="$VAR_GUACAMOLE --env TOTP_USE=$TOTP_USE";
|
fi
|
||||||
VAR_GUACAMOLE="$VAR_GUACAMOLE --env BAN_DURATION=$BAN_DURATION";
|
|
||||||
|
|
||||||
echo "Would you like to run Guacamole after install? (Y/n)";
|
if [ "$BITWARDEN" == "yes" ]; then
|
||||||
read -r ANSWER;
|
VAR_BITWARDEN="--env BITWARDEN=$BITWARDEN"
|
||||||
if [ "$ANSWER" == "y" ] || [ "$ANSWER" == "Y" ] || [ "$ANSWER" == "" ] ; then
|
VAR_BITWARDEN="$VAR_BITWARDEN --env BITWARDEN_DOMAIN=$BITWARDEN_DOMAIN"
|
||||||
ADDITIONAL_SERVICES="$ADDITIONAL_SERVICES guacamole";
|
VAR_BITWARDEN="$VAR_BITWARDEN --env SMTP_SERVER=$SMTP_SERVER"
|
||||||
fi
|
VAR_BITWARDEN="$VAR_BITWARDEN --env SMTP_HOST=$SMTP_HOST"
|
||||||
fi
|
VAR_BITWARDEN="$VAR_BITWARDEN --env SMTP_PORT=$SMTP_PORT"
|
||||||
|
VAR_BITWARDEN="$VAR_BITWARDEN --env SMTP_SECURITY=$SMTP_SECURITY"
|
||||||
if [ "$SMTP" == "yes" ]; then
|
VAR_BITWARDEN="$VAR_BITWARDEN --env SMTP_FROM=$SMTP_FROM"
|
||||||
VAR_SMTP="--env SMTP=$SMTP";
|
VAR_BITWARDEN="$VAR_BITWARDEN --env SMTP_USERNAME=$SMTP_USERNAME"
|
||||||
|
VAR_BITWARDEN="$VAR_BITWARDEN --env SMTP_PASSWORD=$SMTP_PASSWORD"
|
||||||
|
VAR_BITWARDEN="$VAR_BITWARDEN --env DOMAINS_WHITELIST=$DOMAINS_WHITELIST"
|
||||||
|
|
||||||
echo "Would you like to run SMTP after install? (Y/n)";
|
echo " "
|
||||||
read -r ANSWER;
|
echo "######################################################################################"
|
||||||
if [ "$ANSWER" == "y" ] || [ "$ANSWER" == "Y" ] || [ "$ANSWER" == "" ] ; then
|
echo "# You can access your bitwarden admin page here: https://$BITWARDEN_DOMAIN/admin #"
|
||||||
ADDITIONAL_SERVICES="$ADDITIONAL_SERVICES smtp";
|
echo "# You will find ADMIN TOKEN in this file: /etc/user/secret/bitwarden.json #"
|
||||||
fi
|
echo "######################################################################################"
|
||||||
fi
|
echo " "
|
||||||
|
echo "Would you like to run Bitwarden after install? (Y/n)"
|
||||||
|
|
||||||
if [ "$ROUNDCUBE" == "yes" ]; then
|
read -r ANSWER
|
||||||
VAR_ROUNDCUBE="--env ROUNDCUBE=$ROUNDCUBE";
|
if [ "$ANSWER" == "y" ] || [ "$ANSWER" == "Y" ] || [ "$ANSWER" == "" ]; then
|
||||||
VAR_ROUNDCUBE="$VAR_ROUNDCUBE --env ROUNDCUBE_IMAP_HOST=$ROUNDCUBE_IMAP_HOST";
|
ADDITIONAL_SERVICES="$ADDITIONAL_SERVICES bitwarden"
|
||||||
VAR_ROUNDCUBE="$VAR_ROUNDCUBE --env ROUNDCUBE_IMAP_PORT=$ROUNDCUBE_IMAP_PORT";
|
fi
|
||||||
VAR_ROUNDCUBE="$VAR_ROUNDCUBE --env ROUNDCUBE_SMTP_HOST=$ROUNDCUBE_SMTP_HOST";
|
fi
|
||||||
VAR_ROUNDCUBE="$VAR_ROUNDCUBE --env ROUNDCUBE_SMTP_PORT=$ROUNDCUBE_SMTP_PORT";
|
|
||||||
VAR_ROUNDCUBE="$VAR_ROUNDCUBE --env ROUNDCUBE_UPLOAD_MAX_FILESIZE=$ROUNDCUBE_UPLOAD_MAX_FILESIZE";
|
|
||||||
VAR_ROUNDCUBE="$VAR_ROUNDCUBE --env ROUNDCUBE_DOMAIN=$ROUNDCUBE_DOMAIN";
|
|
||||||
|
|
||||||
echo "Would you like to run roundcube after install? (Y/n)";
|
if [ "$GUACAMOLE" == "yes" ]; then
|
||||||
read -r ANSWER;
|
VAR_GUACAMOLE="--env GUACAMOLE=$GUACAMOLE"
|
||||||
if [ "$ANSWER" == "y" ] || [ "$ANSWER" == "Y" ] || [ "$ANSWER" == "" ] ; then
|
VAR_GUACAMOLE="$VAR_GUACAMOLE --env GUACAMOLE_DOMAIN=$GUACAMOLE_DOMAIN"
|
||||||
ADDITIONAL_SERVICES="$ADDITIONAL_SERVICES roundcube";
|
VAR_GUACAMOLE="$VAR_GUACAMOLE --env GUACAMOLE_ADMIN_NAME=$GUACAMOLE_ADMIN_NAME"
|
||||||
fi
|
VAR_GUACAMOLE="$VAR_GUACAMOLE --env GUACAMOLE_ADMIN_PASSWORD=$GUACAMOLE_ADMIN_PASSWORD"
|
||||||
fi
|
VAR_GUACAMOLE="$VAR_GUACAMOLE --env TOTP_USE=$TOTP_USE"
|
||||||
|
VAR_GUACAMOLE="$VAR_GUACAMOLE --env BAN_DURATION=$BAN_DURATION"
|
||||||
|
|
||||||
# Run installer tool
|
echo "Would you like to run Guacamole after install? (Y/n)"
|
||||||
$SUDO_CMD docker run \
|
read -r ANSWER
|
||||||
--env ADDITIONALS=true \
|
if [ "$ANSWER" == "y" ] || [ "$ANSWER" == "Y" ] || [ "$ANSWER" == "" ]; then
|
||||||
--env SERVICE_DIR=$SERVICE_DIR\
|
ADDITIONAL_SERVICES="$ADDITIONAL_SERVICES guacamole"
|
||||||
$VAR_NEXTCLOUD \
|
fi
|
||||||
$VAR_BITWARDEN \
|
fi
|
||||||
$VAR_GUACAMOLE \
|
|
||||||
$VAR_SMTP \
|
if [ "$SMTP" == "yes" ]; then
|
||||||
$VAR_ROUNDCUBE \
|
VAR_SMTP="--env SMTP=$SMTP"
|
||||||
--volume $HOME/.ssh/installer:/root/.ssh/id_rsa \
|
|
||||||
--volume /etc/user/:/etc/user/ \
|
echo "Would you like to run SMTP after install? (Y/n)"
|
||||||
--volume /etc/system/:/etc/system/ \
|
read -r ANSWER
|
||||||
$DOCKER_REGISTRY_URL/installer-tool
|
if [ "$ANSWER" == "y" ] || [ "$ANSWER" == "Y" ] || [ "$ANSWER" == "" ]; then
|
||||||
|
ADDITIONAL_SERVICES="$ADDITIONAL_SERVICES smtp"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$ROUNDCUBE" == "yes" ]; then
|
||||||
|
VAR_ROUNDCUBE="--env ROUNDCUBE=$ROUNDCUBE"
|
||||||
|
VAR_ROUNDCUBE="$VAR_ROUNDCUBE --env ROUNDCUBE_IMAP_HOST=$ROUNDCUBE_IMAP_HOST"
|
||||||
|
VAR_ROUNDCUBE="$VAR_ROUNDCUBE --env ROUNDCUBE_IMAP_PORT=$ROUNDCUBE_IMAP_PORT"
|
||||||
|
VAR_ROUNDCUBE="$VAR_ROUNDCUBE --env ROUNDCUBE_SMTP_HOST=$ROUNDCUBE_SMTP_HOST"
|
||||||
|
VAR_ROUNDCUBE="$VAR_ROUNDCUBE --env ROUNDCUBE_SMTP_PORT=$ROUNDCUBE_SMTP_PORT"
|
||||||
|
VAR_ROUNDCUBE="$VAR_ROUNDCUBE --env ROUNDCUBE_UPLOAD_MAX_FILESIZE=$ROUNDCUBE_UPLOAD_MAX_FILESIZE"
|
||||||
|
VAR_ROUNDCUBE="$VAR_ROUNDCUBE --env ROUNDCUBE_DOMAIN=$ROUNDCUBE_DOMAIN"
|
||||||
|
|
||||||
|
echo "Would you like to run roundcube after install? (Y/n)"
|
||||||
|
read -r ANSWER
|
||||||
|
if [ "$ANSWER" == "y" ] || [ "$ANSWER" == "Y" ] || [ "$ANSWER" == "" ]; then
|
||||||
|
ADDITIONAL_SERVICES="$ADDITIONAL_SERVICES roundcube"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Run installer tool
|
||||||
|
$SUDO_CMD docker run \
|
||||||
|
--env ADDITIONALS=true \
|
||||||
|
--env SERVICE_DIR=$SERVICE_DIR $VAR_NEXTCLOUD \
|
||||||
|
$VAR_BITWARDEN \
|
||||||
|
$VAR_GUACAMOLE \
|
||||||
|
$VAR_SMTP \
|
||||||
|
$VAR_ROUNDCUBE \
|
||||||
|
--volume $HOME/.ssh/installer:/root/.ssh/id_rsa \
|
||||||
|
--volume /etc/user/:/etc/user/ \
|
||||||
|
--volume /etc/system/:/etc/system/ \
|
||||||
|
$DOCKER_REGISTRY_URL/installer-tool
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#shopt -s expand_aliases
|
#shopt -s expand_aliases
|
||||||
#source $HOME/.bash_aliases
|
#source $HOME/.bash_aliases
|
||||||
|
|
||||||
if [ "$ADDITIONAL_SERVICES" != "" ]; then
|
if [ "$ADDITIONAL_SERVICES" != "" ]; then
|
||||||
for ADDITIONAL_SERVICE in $(echo $ADDITIONAL_SERVICES); do
|
for ADDITIONAL_SERVICE in $(echo $ADDITIONAL_SERVICES); do
|
||||||
$SERVICE-EXEC $ADDITIONAL_SERVICE start
|
$SERVICE-EXEC $ADDITIONAL_SERVICE start
|
||||||
echo "$INIT_SERVICE_PATH/$ADDITIONAL_SERVICE.json" >> $AUTO_START_SERVICES/.init_services
|
echo "$INIT_SERVICE_PATH/$ADDITIONAL_SERVICE.json" >>$AUTO_START_SERVICES/.init_services
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$DISCOVERY" != "yes" ] ; then
|
if [ "$DISCOVERY" != "yes" ]; then
|
||||||
discover_services;
|
discover_services
|
||||||
fi;
|
fi
|
||||||
|
|
||||||
if [ "$DISCOVERY" == "yes" ] ; then
|
if [ "$DISCOVERY" == "yes" ]; then
|
||||||
$SUDO_CMD chmod a+x $DISCOVERY_DIR/service-discovery.sh
|
$SUDO_CMD chmod a+x $DISCOVERY_DIR/service-discovery.sh
|
||||||
$DISCOVERY_DIR/service-discovery.sh $DISCOVERY_CONFIG_FILE;
|
$DISCOVERY_DIR/service-discovery.sh $DISCOVERY_CONFIG_FILE
|
||||||
source $DISCOVERY_CONFIG_FILE;
|
source $DISCOVERY_CONFIG_FILE
|
||||||
cat $DEST_FILE;
|
cat $DEST_FILE
|
||||||
|
|
||||||
echo "Would you like to run discovered services? (Y/n)";
|
echo "Would you like to run discovered services? (Y/n)"
|
||||||
read -r ANSWER;
|
read -r ANSWER
|
||||||
if [ "$ANSWER" == "y" ] || [ "$ANSWER" == "Y" ] || [ "$ANSWER" == "" ] ; then
|
if [ "$ANSWER" == "y" ] || [ "$ANSWER" == "Y" ] || [ "$ANSWER" == "" ]; then
|
||||||
$SUDO_CMD chmod a+x $DISCOVERY_DIR/service-files.sh
|
$SUDO_CMD chmod a+x $DISCOVERY_DIR/service-files.sh
|
||||||
$DISCOVERY_DIR/service-files.sh $DEST_FILE &
|
$DISCOVERY_DIR/service-files.sh $DEST_FILE &
|
||||||
fi;
|
fi
|
||||||
fi;
|
fi
|
||||||
|
|
||||||
if [ "$DEBIAN" == "true" ] || [ "$GENTOO" == "true" ] ; then
|
if [ "$DEBIAN" == "true" ] || [ "$GENTOO" == "true" ]; then
|
||||||
|
|
||||||
echo "Do you want to start the discovered and actually started services at the next time when your system restarting? (Y/n)";
|
echo "Do you want to start the discovered and actually started services at the next time when your system restarting? (Y/n)"
|
||||||
read -r ANSWER;
|
read -r ANSWER
|
||||||
if [ "$ANSWER" == "y" ] || [ "$ANSWER" == "Y" ] || [ "$ANSWER" == "" ] ; then
|
if [ "$ANSWER" == "y" ] || [ "$ANSWER" == "Y" ] || [ "$ANSWER" == "" ]; then
|
||||||
|
|
||||||
cp $DISCOVERY_CONFIG_FILE $DISCOVERY_CONFIG_FILE".copy";
|
cp $DISCOVERY_CONFIG_FILE $DISCOVERY_CONFIG_FILE".copy"
|
||||||
cp $DEST_FILE $DEST_FILE".copy";
|
cp $DEST_FILE $DEST_FILE".copy"
|
||||||
|
|
||||||
DISCOVERY_CONFIG_FILENAME=$(basename $DISCOVERY_CONFIG_FILE);
|
DISCOVERY_CONFIG_FILENAME=$(basename $DISCOVERY_CONFIG_FILE)
|
||||||
source $DISCOVERY_CONFIG_FILE;
|
source $DISCOVERY_CONFIG_FILE
|
||||||
{
|
{
|
||||||
echo '#!/bin/bash';
|
echo '#!/bin/bash'
|
||||||
echo 'SOURCE_DIRS="'$SOURCE_DIRS'"; # separator space or |';
|
echo 'SOURCE_DIRS="'$SOURCE_DIRS'"; # separator space or |'
|
||||||
echo 'DIRNAME="'$DIRNAME'"; # separator space or |';
|
echo 'DIRNAME="'$DIRNAME'"; # separator space or |'
|
||||||
echo 'FILENAME="'$FILENAME'"; # separator space or |';
|
echo 'FILENAME="'$FILENAME'"; # separator space or |'
|
||||||
echo 'KEYS="'$KEYS'"; # separator space or |';
|
echo 'KEYS="'$KEYS'"; # separator space or |'
|
||||||
echo 'DEST_FILE="/usr/local/etc/results.txt";';
|
echo 'DEST_FILE="/usr/local/etc/results.txt";'
|
||||||
echo 'USE_SUDO=0;';
|
echo 'USE_SUDO=0;'
|
||||||
} > /tmp/$DISCOVERY_CONFIG_FILENAME
|
} >/tmp/$DISCOVERY_CONFIG_FILENAME
|
||||||
|
|
||||||
$SUDO_CMD mkdir -p /usr/local/etc;
|
$SUDO_CMD mkdir -p /usr/local/etc
|
||||||
|
|
||||||
$SUDO_CMD mv /tmp/$DISCOVERY_CONFIG_FILENAME /usr/local/etc/$DISCOVERY_CONFIG_FILENAME
|
$SUDO_CMD mv /tmp/$DISCOVERY_CONFIG_FILENAME /usr/local/etc/$DISCOVERY_CONFIG_FILENAME
|
||||||
|
|
||||||
{
|
{
|
||||||
cat $AUTO_START_SERVICES/.init_services;
|
cat $AUTO_START_SERVICES/.init_services
|
||||||
cat $DEST_FILE;
|
cat $DEST_FILE
|
||||||
} > /tmp/$DEST_FILE
|
} >/tmp/$DEST_FILE
|
||||||
|
|
||||||
$SUDO_CMD mv /tmp/$DEST_FILE /usr/local/etc/$DEST_FILE
|
$SUDO_CMD mv /tmp/$DEST_FILE /usr/local/etc/$DEST_FILE
|
||||||
|
|
||||||
|
if [ "$DEBIAN" == "true" ]; then
|
||||||
if [ "$DEBIAN" == "true" ] ; then
|
{
|
||||||
{
|
echo "
|
||||||
echo "
|
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Discover services
|
Description=Discover services
|
||||||
|
|
||||||
@@ -412,18 +408,17 @@ ExecStart=/usr/local/bin/service-files.sh /usr/local/etc/results.txt restart
|
|||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
";
|
"
|
||||||
|
|
||||||
} > /tmp/discovery.service
|
} >/tmp/discovery.service
|
||||||
$SUDO_CMD mv /tmp/discovery.service /etc/systemd/system/discovery.service
|
$SUDO_CMD mv /tmp/discovery.service /etc/systemd/system/discovery.service
|
||||||
$SUDO_CMD systemctl enable discovery.service
|
$SUDO_CMD systemctl enable discovery.service
|
||||||
|
|
||||||
elif [ "$GENTOO" == "true" ] ; then
|
elif [ "$GENTOO" == "true" ]; then
|
||||||
$SUDO_CMD echo "/usr/local/bin/service-files.sh /usr/local/etc/results.txt restart" > /etc/local.d/service-file.start;
|
$SUDO_CMD echo "/usr/local/bin/service-files.sh /usr/local/etc/results.txt restart" >/etc/local.d/service-file.start
|
||||||
$SUDO_CMD chmod a+x /etc/local.d/service-file.start;
|
$SUDO_CMD chmod a+x /etc/local.d/service-file.start
|
||||||
fi;
|
fi
|
||||||
fi;
|
fi
|
||||||
fi;
|
fi
|
||||||
|
|
||||||
rm $AUTO_START_SERVICES/.init_services
|
rm $AUTO_START_SERVICES/.init_services
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user