Docker-Compose/setup.sh
2025-02-11 18:38:49 +01:00

174 lines
6.7 KiB
Bash

#!/bin/bash
echo "Welcome to the Docker Installer:"
echo ""
echo ""
echo "1. The installer will update all Repos"
apt update
echo ""
echo "2. The installer will install CURL and GIT"
apt install curl git -y
echo ""
echo "3. The installer will clone the Docker-Compose Repository"
HOME_DIR=/opt/jitsi-admin
if [ -d $HOME_DIR ]
then
cd $HOME_DIR
git add . && git stash && git pull
else
mkdir $HOME_DIR && cd $HOME_DIR
git clone https://git.h2-invent.com/meetling/docker-compose.git .
fi
FILE=docker.conf
if [ -f "$FILE" ]; then
source $FILE
else
touch $FILE
KEYCLOAK_PW=$(date +%s | sha256sum | base64 | head -c 32)
JITSI_ADMIN_PW=$(date +%s | sha256sum | base64 | head -c 32)
MERCURE_JWT_SECRET=$(date +%s | sha256sum | base64 | head -c 32)
KEYCLOAK_ADMIN_PW=$(date +%s | sha256sum | base64 | head -c 32)
NEW_UUID=$(date +%s | sha256sum | base64 | head -c 32)
echo "KEYCLOAK_PW=$KEYCLOAK_PW" >> $FILE
echo "JITSI_ADMIN_PW=$JITSI_ADMIN_PW" >> $FILE
echo "MERCURE_JWT_SECRET=$MERCURE_JWT_SECRET" >> $FILE
echo "KEYCLOAK_ADMIN_PW=$KEYCLOAK_ADMIN_PW" >> $FILE
echo "NEW_UUID=$NEW_UUID" >> $FILE
source $FILE
fi
VERSION=${VERSION:=latest}
read -p "Which Release Version do you want to install [$VERSION]: " input
VERSION=${input:=$VERSION}
sed -i '/VERSION/d' $FILE
echo "VERSION=$VERSION" >> $FILE
ENVIRONMENT=${ENVIRONMENT:=prod}
read -p "Enter the environment dev/prod[$ENVIRONMENT]: " input
ENVIRONMENT=${input:=$ENVIRONMENT}
sed -i '/ENVIRONMENT/d' $FILE
echo "ENVIRONMENT=$ENVIRONMENT" >> $FILE
HTTP_METHOD=${HTTP_METHOD:=http}
read -p "Enter http/https for testing on local environment ALWAYS use http [$HTTP_METHOD]: " input
HTTP_METHOD=${input:=$HTTP_METHOD}
sed -i '/HTTP_METHOD/d' $FILE
echo "HTTP_METHOD=$HTTP_METHOD" >> $FILE
PUBLIC_URL=${PUBLIC_URL:=dev.domain.de}
read -p "Enter the url you want to enter the jitsi-admin with no protocoll (no http/https) [$PUBLIC_URL]: " input
PUBLIC_URL=${input:=$PUBLIC_URL}
sed -i '/PUBLIC_URL/d' $FILE
echo "PUBLIC_URL=$PUBLIC_URL" >> $FILE
default_language=${default_language:=en}
read -p "Which language you want to set as default allowed values: [de, en, fr, es, vi, zh, ru, ja, pt]: [$default_language] " input
default_language=${input:=$default_language}
sed -i '/default_language/d' $FILE
echo "default_language=$default_language" >> $FILE
DOCKER_VOLUME_OWNER=${DOCKER_VOLUME_OWNER:=nobody}
read -p "Set owner of Docker Volumes [$DOCKER_VOLUME_OWNER]: " input
DOCKER_VOLUME_OWNER=${input:=$DOCKER_VOLUME_OWNER}
sed -i '/DOCKER_VOLUME_OWNER/d' $FILE
echo "DOCKER_VOLUME_OWNER=$DOCKER_VOLUME_OWNER" >> $FILE
HOST_IP=$(ip a | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0.1' | head -n 1)
echo ------------------------------------------------------------
echo --- 1. Build the Keycloak ----------------------------------
echo ------------------------------------------------------------
echo ""
cp .templates/realm-export.json keycloak/realm-export.json
sed -i "s|<clientsecret>|$NEW_UUID|g" keycloak/realm-export.json
sed -i "s|<clientUrl>|$HTTP_METHOD://$PUBLIC_URL|g" keycloak/realm-export.json
echo ------------------------------------------------------------
echo ------ 2. Build Mysql Init DB ------------------------------
echo ------------------------------------------------------------
echo ""
cp .templates/init-userdb.sql mysql-initdb/init-userdb.sql
sed -i "s|<jitsi-admin-pw>|$JITSI_ADMIN_PW|g" mysql-initdb/init-userdb.sql
sed -i "s|<keycloak-pw>|$KEYCLOAK_PW|g" mysql-initdb/init-userdb.sql
echo ------------------------------------------------------------
echo --------- 3. Build Docker Compose File ---------------------
echo ------------------------------------------------------------
echo ""
touch .env
touch .env.custom
if [ -f .env.local ]; then
rm .env.local
fi
cat <<EOL > .env.local
APP_SCHEME='$HTTP_METHOD'
MAILER_DSN='null://null'
DATABASE_URL='mysql://jitsiadmin:$JITSI_ADMIN_PW@db-ja:3306/jitsiadmin'
laF_baseUrl='$HTTP_METHOD://$PUBLIC_URL'
VICH_BASE='$HTTP_METHOD://$PUBLIC_URL'
GIT_VERSION=1.0.12
PUBLIC_URL='$PUBLIC_URL'
OAUTH_KEYCLOAK_CLIENT_SECRET=$NEW_UUID
OAUTH_KEYCLOAK_SERVER='$HTTP_METHOD://$PUBLIC_URL/keycloak'
OAUTH_KEYCLOAK_CLIENT_ID=jitsiadmin
OAUTH_KEYCLOAK_REALM=jitsiadmin
registerEmailAdress='notification@jitsi-admin.local'
DEFAULT_LANGUAGE=$default_language
MERCURE_URL='http://websocket-ja:3000/.well-known/mercure'
MERCURE_PUBLIC_URL='$HTTP_METHOD://$PUBLIC_URL'
WEBSOCKET_SECRET=$MERCURE_JWT_SECRET
KEYCLOAK_ADMIN=admin
KEYCLOAK_ADMIN_PASSWORD=$KEYCLOAK_ADMIN_PW
KC_DB=mariadb
KC_DB_USERNAME=keycloak
KC_DB_PASSWORD=$KEYCLOAK_PW
KC_DB_URL='jdbc:mariadb://db-ja:3306/keycloak'
KC_HOSTNAME_URL='$HTTP_METHOD://$PUBLIC_URL/keycloak'
KC_HOSTNAME_PATH='$HTTP_METHOD://$PUBLIC_URL/keycloak'
KC_HOSTNAME_ADMIN_URL='$HTTP_METHOD://$PUBLIC_URL/keycloak'
KC_HTTP_RELATIVE_PATH=/keycloak
KC_PROXY=passthrough
EOL
echo ".env.local Datei wurde erfolgreich erstellt."
echo ------------------------------------------------------------
echo --------- 3. Build Docker Compose File ---------------------
echo ------------------------------------------------------------
echo ""
cp .docker-compose.$HTTP_METHOD.yml docker-compose.yml
sed -i "s|<clientUrl>|$PUBLIC_URL|g" docker-compose.yml
sed -i "s|<hostIp>|$HOST_IP|g" docker-compose.yml
sed -i "s|<version>|$VERSION|g" docker-compose.yml
echo ------------------------------------------------------------
echo --------- 4. Migrate and Setup Docker Volume User ----------
echo ------------------------------------------------------------
echo ""
chown -R $DOCKER_VOLUME_OWNER /var/lib/docker/volumes/jitsi-admin_image_upload
chown -R $DOCKER_VOLUME_OWNER /var/lib/docker/volumes/jitsi-admin_theme_data
chown -R $DOCKER_VOLUME_OWNER /var/lib/docker/volumes/jitsi-admin_theme_assests_data
chown -R $DOCKER_VOLUME_OWNER /var/lib/docker/volumes/jitsi-admin_recording_uploads
cd /opt/jitsi-admin
RED='\033[0;31m'
NC='\033[0m' # No Color
printf "After running docker-compose up -d, you can follow the following results"
printf "Browse to ${RED}%s://%s${NC} and visit your own jitsi-admin\n" $HTTP_METHOD $PUBLIC_URL
printf "To change any keycloak setting browse to${RED} %s://%s${NC}/keycloak (dev-environment: %s://keycloak.%s) and there the username is: admin and the password: %s\n" $HTTP_METHOD $PUBLIC_URL $HTTP_METHOD $PUBLIC_URL $KEYCLOAK_ADMIN_PW
printf "Any settings and password can be found in the ${RED}docker.conf${NC} file\n"
printf "To find your loadbalancer go to ${RED}%s://traefik.%s${NC} and enter the user: test and the password: test\n" $HTTP_METHOD $PUBLIC_URL
printf "Have fun with your jitsi-admin and give us a star on github. https://github.com/H2-invent/jitsi-admin\n"