diff --git a/lib/authelia.sh b/lib/authelia.sh index 81f1ebc..9fa1ada 100644 --- a/lib/authelia.sh +++ b/lib/authelia.sh @@ -52,10 +52,8 @@ echo "$ADMINPASS" > /federated/apps/authelia/data/secrets/NOTIFIER_SMTP_PASSWORD openssl genrsa -out /federated/apps/authelia/data/secrets/private.pem 4096 2>/dev/null openssl rsa -in /federated/apps/authelia/data/secrets/private.pem -outform PEM -pubout -out /federated/apps/authelia/data/secrets/public.pem 2>/dev/null POWERDNS_CLIENT_SECRET=$(create_password); -POWERDNS_CLIENT_SECRET_HASH=$(docker run -it --rm authelia/authelia:latest authelia crypto hash generate pbkdf2 --password $POWERDNS_CLIENT_SECRET 2>/dev/null | awk '{ print $2 }') +POWERDNS_CLIENT_SECRET_HASH=$(docker run --rm authelia/authelia:latest authelia crypto hash generate pbkdf2 --password $POWERDNS_CLIENT_SECRET 2>/dev/null | awk '{ print $2 }') [[ -d "/federated/apps/pdnsmysql/data/var/lib/mysql/pdnsadmin" ]] && POWERDNS_DB="pdnsadmin" || POWERDNS_DB="pdns" -#NEXTCLOUD_CLIENT_SECRET=$(create_password); -#NEXTCLOUD_CLIENT_SECRET_HASH=$(docker run -it --rm authelia/authelia:latest authelia crypto hash generate pbkdf2 --password $NEXTCLOUD_CLIENT_SECRET | awk '{ print $2 }') cat > /federated/apps/authelia/.env </dev/null) ]] && sed -i "/192.168.0.12/a \ extra_hosts:\n\ - \"authelia.$DOMAIN:$EXTERNALIP\"" /federated/apps/pdnsadmin/docker-compose.yml # Stop and start pdnsadmin for internal dns externalhosts to work - run_command "/federated/bin/stop pdnsadmin" - run_command "/federated/bin/start pdnsadmin" + /federated/bin/stop pdnsadmin &> /dev/null + [ $? -ne 0 ] && fail "Couldn't stop pdnsadmin" + + /federated/bin/start pdnsadmin &> /dev/null + [ $? -ne 0 ] && fail "Couldn't start pdnsadmin" echo -ne "done.\n" } @@ -217,7 +219,7 @@ uninstall_authelia() { echo -ne "* Uninstalling authelia container.." # First stop the service - cd /federated/apps/authelia && docker compose -f docker-compose.yml -p authelia down &> /dev/null + cd /federated/apps/authelia && docker-compose -f docker-compose.yml -p authelia down &> /dev/null # Delete the entries in the settings table [[ -d "/federated/apps/pdnsmysql/data/var/lib/mysql/pdnsadmin" ]] && POWERDNS_DB="pdnsadmin" || POWERDNS_DB="pdns" diff --git a/lib/baserow.sh b/lib/baserow.sh index 8a5aec4..960f0ff 100644 --- a/lib/baserow.sh +++ b/lib/baserow.sh @@ -167,7 +167,7 @@ uninstall_baserow() { SPINPID=$! # First stop the service - cd /federated/apps/baserow && docker compose -f docker-compose.yml -p baserow down &> /dev/null + cd /federated/apps/baserow && docker-compose -f docker-compose.yml -p baserow down &> /dev/null # Delete database and user in postgresql docker exec postgresql psql -U postgres -c "DROP DATABASE baserow" &> /dev/null diff --git a/lib/bookstack.sh b/lib/bookstack.sh index 62cb91c..b0c7b34 100644 --- a/lib/bookstack.sh +++ b/lib/bookstack.sh @@ -174,7 +174,7 @@ uninstall_bookstack() { echo -ne "* Uninstalling bookstack container.." # First stop the service - cd /federated/apps/bookstack && docker compose -f docker-compose.yml -p bookstack down &> /dev/null + cd /federated/apps/bookstack && docker-compose -f docker-compose.yml -p bookstack down &> /dev/null # Delete database and user docker exec pdnsmysql bash -c "mysql -uroot -p$MYSQL_ROOTPASSWORD -e 'drop database bookstack;'" &> /dev/null @@ -207,7 +207,7 @@ configsso_bookstack() { [[ $(grep "### Bookstack" /federated/apps/authelia/data/config/idproviders.yml 2>/dev/null) ]] && failcheck "Authelia already has a Bookstack configuration." BOOKSTACK_CLIENT_SECRET=$(create_password); - BOOKSTACK_CLIENT_SECRET_HASH=$(docker run -it --rm authelia/authelia:latest authelia crypto hash generate pbkdf2 --password $BOOKSTACK_CLIENT_SECRET | awk '{ print $2 }') + BOOKSTACK_CLIENT_SECRET_HASH=$(docker run --rm authelia/authelia:latest authelia crypto hash generate pbkdf2 --password $BOOKSTACK_CLIENT_SECRET | awk '{ print $2 }') cat >> /federated/apps/authelia/data/config/idproviders.yml < /dev/null + cd /federated/apps/caddy && docker-compose -f docker-compose.yml -p caddy down &> /dev/null # Delete the app directory rm -rf /federated/apps/caddy diff --git a/lib/castopod.sh b/lib/castopod.sh index ef9c275..14d58d8 100644 --- a/lib/castopod.sh +++ b/lib/castopod.sh @@ -168,7 +168,7 @@ uninstall_castopod() { SPINPID=$! # First stop the service - cd /federated/apps/castopod && docker compose -f docker-compose.yml -p castopod down &> /dev/null + cd /federated/apps/castopod && docker-compose -f docker-compose.yml -p castopod down &> /dev/null # Delete database and user docker exec pdnsmysql bash -c "mysql -uroot -p$MYSQL_ROOTPASSWORD -e 'drop database castopod;'" &> /dev/null diff --git a/lib/connector.sh b/lib/connector.sh index 9e61b6a..0fec1f9 100644 --- a/lib/connector.sh +++ b/lib/connector.sh @@ -71,10 +71,10 @@ start_connector() { if [ $DEBUG ]; then # Start /federated/apps/connector with output to console for debug - docker compose -f /federated/apps/connector/docker-compose.yml -p connector up + docker-compose -f /federated/apps/connector/docker-compose.yml -p connector up [ $? -eq 0 ] && echo -ne "done.\n" || fail "There was a problem starting service /federated/apps/connector" else - docker compose -f /federated/apps/connector/docker-compose.yml -p connector up -d &> /dev/null + docker-compose -f /federated/apps/connector/docker-compose.yml -p connector up -d &> /dev/null # Keep trying connector port 80 to make sure it's up # before we proceed @@ -85,7 +85,7 @@ start_connector() { break else if [ "$RETRY" == 1 ]; then - docker compose -f /federated/apps/connector/docker-compose.yml -p connector down &> /dev/null + docker-compose -f /federated/apps/connector/docker-compose.yml -p connector down &> /dev/null kill -9 $SPINPID &> /dev/null fail "There was a problem starting service /federated/apps/connector\nCheck the output of 'docker logs connector' or turn on\ndebug with -d" fi diff --git a/lib/dashboard.sh b/lib/dashboard.sh index 7f9ce73..e0fad75 100644 --- a/lib/dashboard.sh +++ b/lib/dashboard.sh @@ -75,7 +75,7 @@ uninstall_dashboard() { SPINPID=$! # First stop the service - cd /federated/apps/dashboard && docker compose -f docker-compose.yml -p dashboard down &> /dev/null + cd /federated/apps/dashboard && docker-compose -f docker-compose.yml -p dashboard down &> /dev/null # Delete the app directory rm -rf /federated/apps/dashboard diff --git a/lib/discourse.sh b/lib/discourse.sh index 3d6dbfe..333e43c 100644 --- a/lib/discourse.sh +++ b/lib/discourse.sh @@ -193,7 +193,7 @@ uninstall_discourse() { SPINPID=$! # First stop the service - cd /federated/apps/discourse && docker compose -f docker-compose.yml -p discourse down &> /dev/null + cd /federated/apps/discourse && docker-compose -f docker-compose.yml -p discourse down &> /dev/null # Delete database and user in postgresql docker exec postgresql psql -U postgres -c "DROP DATABASE discourse" &> /dev/null diff --git a/lib/dns.sh b/lib/dns.sh index f7620a0..727d2e7 100644 --- a/lib/dns.sh +++ b/lib/dns.sh @@ -207,11 +207,11 @@ start_dns() { if [ $DEBUG ]; then # Start /federated/apps/dns with output to console for debug - docker compose -f /federated/apps/dns/docker-compose.yml -p dns up + docker-compose -f /federated/apps/dns/docker-compose.yml -p dns up [ $? -eq 0 ] && echo -ne "done.\n" || fail "There was a problem starting service /federated/apps/dns" else # Start /federated/apps/dns with output to /dev/null - docker compose -f /federated/apps/dns/docker-compose.yml -p dns up -d &> /dev/null + docker-compose -f /federated/apps/dns/docker-compose.yml -p dns up -d &> /dev/null # Keep trying to see that certificates are generated RETRY="18" @@ -231,7 +231,7 @@ start_dns() { break else if [ "$RETRY" == 1 ]; then - docker compose -f /federated/apps/dns/docker-compose.yml -p dns down &> /dev/null + docker-compose -f /federated/apps/dns/docker-compose.yml -p dns down &> /dev/null fail "There was a problem starting service /federated/apps/dns\nCheck the output of 'docker logs dns' or turn on\ndebug with -d" fi ((RETRY--)) diff --git a/lib/espocrm.sh b/lib/espocrm.sh index 8ddc4d3..08aff47 100644 --- a/lib/espocrm.sh +++ b/lib/espocrm.sh @@ -178,7 +178,7 @@ uninstall_espocrm() { echo -ne "* Uninstalling espocrm container.." # First stop the service - cd /federated/apps/espocrm && docker compose -f docker-compose.yml -p espocrm down &> /dev/null + cd /federated/apps/espocrm && docker-compose -f docker-compose.yml -p espocrm down &> /dev/null # Delete database and user docker exec pdnsmysql bash -c "mysql -uroot -p$MYSQL_ROOTPASSWORD -e 'drop database espocrm;'" &> /dev/null @@ -207,14 +207,14 @@ uninstall_espocrm() { echo -ne "done.\n" } configsso_espocrm() { - echo -ne "* Configuring espocrm container with SSO.." + echo -ne "* Configuring matrix container with SSO.." [ ! -d "/federated/apps/authelia" ] && failcheck "Authelia is not installed. You need this first before continuing." [ ! -f "/federated/apps/authelia/data/config/idproviders.yml" ] && failcheck "Authelia idproviders.yml is missing." [[ $(grep "### Espocrm" /federated/apps/authelia/data/config/idproviders.yml 2>/dev/null) ]] && failcheck "Authelia already has a Espocrm configuration." ESPOCRM_CLIENT_SECRET=$(create_password); - ESPOCRM_CLIENT_SECRET_HASH=$(docker run -it --rm authelia/authelia:latest authelia crypto hash generate pbkdf2 --password $ESPOCRM_CLIENT_SECRET | awk '{ print $2 }') + ESPOCRM_CLIENT_SECRET_HASH=$(docker run --rm authelia/authelia:latest authelia crypto hash generate pbkdf2 --password $ESPOCRM_CLIENT_SECRET | awk '{ print $2 }') cat >> /federated/apps/authelia/data/config/idproviders.yml < [\n\ 0 => 'profile',\n\ 1 => 'email',\n\ 2 => 'groups',\n\ 3 => 'openid'\n\ ]," /federated/apps/espocrm/data/var/www/html/data/config.php - # Add in extra_hosts to docker compose - add_authelia_config_to_dockercompose "$APP" + # Add in extra_hosts to docker-compose + add_authelia_config_to_dockercompose "espocrm" # Set auth method to Oidc only sed -i "s/ESPOCRM_CONFIG_AUTHENTICATION_METHOD=LDAP/#ESPOCRM_CONFIG_AUTHENTICATION_METHOD=LDAP/g" /federated/apps/espocrm/.env diff --git a/lib/freescout.sh b/lib/freescout.sh index 4ab0401..24838fb 100644 --- a/lib/freescout.sh +++ b/lib/freescout.sh @@ -166,7 +166,7 @@ uninstall_freescout() { SPINPID=$! # First stop the service - cd /federated/apps/freescout && docker compose -f docker-compose.yml -p freescout down &> /dev/null + cd /federated/apps/freescout && docker-compose -f docker-compose.yml -p freescout down &> /dev/null # Delete database and user in postgresql docker exec postgresql psql -U postgres -c "DROP DATABASE freescout" &> /dev/null diff --git a/lib/functions.sh b/lib/functions.sh index 550b3da..c3a6533 100644 --- a/lib/functions.sh +++ b/lib/functions.sh @@ -2,9 +2,17 @@ # Define all services CORE_APPS=("pdnsmysql" "pdns" "pdnsadmin" "traefik" "postgresql" "ldap") -EXTRA_APPS=("mail" "collabora" "nextcloud" "matrix" "element" "listmonk" "vaultwarden" "panel" "wireguard" "jitsi" "baserow" "gitea" "caddy" "autodiscover" "castopod" "wordpress" "coturn" "bookstack" "freescout" "msp" "espocrm" "nginx" "matrixslack" "matrixsignal" "matrixwhatsapp" "dashboard" "authelia" "jitsiopenid" "roundcube" "redis" "discourse" "wordpressshop") +EXTRA_APPS=("mail" "collabora" "authelia" "nextcloud" "matrix" "element" "listmonk" "vaultwarden" "panel" "wireguard" "jitsi" "baserow" "gitea" "caddy" "autodiscover" "castopod" "wordpress" "coturn" "bookstack" "freescout" "msp" "espocrm" "nginx" "matrixslack" "matrixsignal" "matrixwhatsapp" "dashboard" "jitsiopenid" "roundcube" "redis" "discourse" "wordpressshop") SERVICES=("${CORE_APPS[@]}" "${EXTRA_APPS[@]}") +failts() { + echo "$*" >&2; + exit 1; +} +run_command() { + $1 &> /dev/null + [[ $? -ne 0 ]] && echo "* FAILED - Couldn't run \"$1\"" >&2 +} fail() { echo -ne "FAILED\n\n$1\n\n" kill -9 $SPINPID &> /dev/null @@ -12,10 +20,6 @@ fail() { # docker network rm fstack &> /dev/null exit 2; } -run_command() { - $1 &> /dev/null - [[ $? -ne 0 ]] && echo "* FAILED - Couldn't run \"$1\"" >&2 -} failcheck() { echo -ne "\n\nFAILED - $1\n\n" exit 2; @@ -137,7 +141,7 @@ upgrade_federated() { echo -ne "upgrading to $VERSION..\n" if [[ ! "$APP_NOTRUNNING" ]]; then echo -ne "\n Shutting Down $APP.." - cd /federated/apps/$APP && docker compose -f docker-compose.yml -p $APP down + cd /federated/apps/$APP && docker-compose -f docker-compose.yml -p $APP down fi if [ "$APP" = "jitsi" ]; then sed -i "s/#JITSI_IMAGE_VERSION=.*/JITSI_IMAGE_VERSION=$VERSION/g" /federated/apps/$APP/.env @@ -193,7 +197,7 @@ start_service_convert() { # Start /federated/apps/SERVICE with output to /dev/null echo -ne "\n* Starting /federated/apps/$SERVICE service.." - docker compose -f /federated/apps/$SERVICE/docker-compose.yml -p $SERVICE up -d &> /dev/null + docker-compose -f /federated/apps/$SERVICE/docker-compose.yml -p $SERVICE up -d &> /dev/null # Keep trying service port to make sure it's up before # we proceed @@ -204,7 +208,7 @@ start_service_convert() { break else if [ "$RETRY" == 1 ]; then - docker compose -f /federated/apps/$SERVICE/docker-compose.yml -p $SERVICE down &> /dev/null + docker-compose -f /federated/apps/$SERVICE/docker-compose.yml -p $SERVICE down &> /dev/null fail "There was a problem starting service /federated/apps/$SERVICE\nCheck the output of 'docker logs $SERVICE' or turn on\ndebug with -d" fi ((RETRY--)) @@ -221,10 +225,10 @@ start_service_upgrade() { if [ $DEBUG ]; then # Start /federated/apps/SERVICE with output to console for debug - docker compose -f /federated/apps/$SERVICE/docker-compose.yml -p $SERVICE up + docker-compose -f /federated/apps/$SERVICE/docker-compose.yml -p $SERVICE up [ $? -eq 0 ] && echo -ne "done.\n" || fail "There was a problem starting service /federated/apps/$SERVICE" else - docker compose -f /federated/apps/$SERVICE/docker-compose.yml -p $SERVICE up -d &> /dev/null + docker-compose -f /federated/apps/$SERVICE/docker-compose.yml -p $SERVICE up -d &> /dev/null # Keep trying service port to make sure it's up before # we proceed @@ -235,7 +239,7 @@ start_service_upgrade() { break else if [ "$RETRY" == 1 ]; then - docker compose -f /federated/apps/$SERVICE/docker-compose.yml -p $SERVICE down &> /dev/null + docker-compose -f /federated/apps/$SERVICE/docker-compose.yml -p $SERVICE down &> /dev/null fail "There was a problem starting service /federated/apps/$SERVICE\nCheck the output of 'docker logs $SERVICE' or turn on\ndebug with -d" fi ((RETRY--)) @@ -251,7 +255,7 @@ start_service_withalert2() { ALERT="$4" # First start the service - docker compose -f /federated/apps/$SERVICE/docker-compose.yml -p $SERVICE up -d &> /dev/null + docker-compose -f /federated/apps/$SERVICE/docker-compose.yml -p $SERVICE up -d &> /dev/null # Keep trying service COMMAND to make sure it's up before we proceed while [ "$RETRY" -gt "0" ]; do @@ -267,13 +271,13 @@ start_service_withalert2() { if [ "$ALERT" = "yes" ]; then EXTERNALIP=`dig @resolver4.opendns.com myip.opendns.com +short 2> /dev/null` - docker compose -f /federated/apps/$SERVICE/docker-compose.yml -p $SERVICE down &> /dev/null + docker-compose -f /federated/apps/$SERVICE/docker-compose.yml -p $SERVICE down &> /dev/null echo "Generated by /federated/bin/start" > /federated/apps/mail/data/root/certs/mailfile docker exec mail bash -c "mail -r admin@$DOMAIN -a \"Content-type: text/html\" -s \"$SERVICE failed to start on $EXTERNALIP\" $ALERTS_EMAIL < /root/certs/mailfile" - echo -ne "\nThere was a problem starting service /federated/apps/$SERVICE\nCheck the output of 'docker logs $SERVICE' while starting or run\ndocker compose -f /federated/apps/$SERVICE/docker-compose.yml -p $SERVICE up\n" + echo -ne "\nThere was a problem starting service /federated/apps/$SERVICE\nCheck the output of 'docker logs $SERVICE' while starting or run\ndocker-compose -f /federated/apps/$SERVICE/docker-compose.yml -p $SERVICE up\n" else - docker compose -f /federated/apps/$SERVICE/docker-compose.yml -p $SERVICE down &> /dev/null - echo -ne "\nThere was a problem starting service /federated/apps/$SERVICE\nCheck the output of 'docker logs $SERVICE' while starting or run\ndocker compose -f /federated/apps/$SERVICE/docker-compose.yml -p $SERVICE up\n" + docker-compose -f /federated/apps/$SERVICE/docker-compose.yml -p $SERVICE down &> /dev/null + echo -ne "\nThere was a problem starting service /federated/apps/$SERVICE\nCheck the output of 'docker logs $SERVICE' while starting or run\ndocker-compose -f /federated/apps/$SERVICE/docker-compose.yml -p $SERVICE up\n" fi echo -ne "\n" fi @@ -290,7 +294,7 @@ start_service_withalert() { echo -ne "* Starting $SERVICE.." - docker compose -f /federated/apps/$SERVICE/docker-compose.yml -p $SERVICE up -d &> /dev/null + docker-compose -f /federated/apps/$SERVICE/docker-compose.yml -p $SERVICE up -d &> /dev/null # Keep trying service port to make sure it's up before # we proceed @@ -306,12 +310,12 @@ start_service_withalert() { if [ "$ALERT" = "yes" ]; then EXTERNALIP=`dig @resolver4.opendns.com myip.opendns.com +short 2> /dev/null` - docker compose -f /federated/apps/$SERVICE/docker-compose.yml -p $SERVICE down &> /dev/null + docker-compose -f /federated/apps/$SERVICE/docker-compose.yml -p $SERVICE down &> /dev/null echo "Generated by /federated/bin/start" > /federated/apps/mail/data/root/certs/mailfile docker exec mail bash -c "mail -r admin@$DOMAIN -a \"Content-type: text/html\" -s \"$SERVICE failed to start on $EXTERNALIP\" $ALERTS_EMAIL < /root/certs/mailfile" echo -ne "\n\nThere was a problem starting service /federated/apps/$SERVICE\nCheck the output of 'docker logs $SERVICE' or turn on\ndebug with set -x\n\n" else - docker compose -f /federated/apps/$SERVICE/docker-compose.yml -p $SERVICE down &> /dev/null + docker-compose -f /federated/apps/$SERVICE/docker-compose.yml -p $SERVICE down &> /dev/null echo -ne "\n\nThere was a problem starting service /federated/apps/$SERVICE\nCheck the output of 'docker logs $SERVICE' or turn on\ndebug with set -x\n\n" fi fi @@ -330,10 +334,10 @@ start_service() { if [ $DEBUG ]; then # Start /federated/apps/SERVICE with output to console for debug - docker compose -f /federated/apps/$SERVICE/docker-compose.yml -p $SERVICE up + docker-compose -f /federated/apps/$SERVICE/docker-compose.yml -p $SERVICE up [ $? -eq 0 ] && echo -ne "done.\n" || fail "There was a problem starting service /federated/apps/$SERVICE" else - docker compose -f /federated/apps/$SERVICE/docker-compose.yml -p $SERVICE up -d &> /dev/null + docker-compose -f /federated/apps/$SERVICE/docker-compose.yml -p $SERVICE up -d &> /dev/null # Keep trying service port to make sure it's up before # we proceed @@ -343,7 +347,7 @@ start_service() { break else if [ "$RETRY" == 1 ]; then - docker compose -f /federated/apps/$SERVICE/docker-compose.yml -p $SERVICE down &> /dev/null + docker-compose -f /federated/apps/$SERVICE/docker-compose.yml -p $SERVICE down &> /dev/null kill -9 $SPINPID &> /dev/null fail "There was a problem starting service /federated/apps/$SERVICE\nCheck the output of 'docker logs $SERVICE' or turn on\ndebug with set -x" fi diff --git a/lib/gitea.sh b/lib/gitea.sh index 57b5f7f..96f9a95 100644 --- a/lib/gitea.sh +++ b/lib/gitea.sh @@ -243,7 +243,7 @@ uninstall_gitea() { echo -ne "* Uninstalling gitea container.." # First stop the service - cd /federated/apps/gitea && docker compose -f docker-compose.yml -p gitea down &> /dev/null + cd /federated/apps/gitea && docker-compose -f docker-compose.yml -p gitea down &> /dev/null # Delete database and user in postgresql docker exec postgresql psql -U postgres -c "DROP DATABASE gitea" &> /dev/null @@ -262,8 +262,8 @@ uninstall_gitea() { if [[ $(grep "### Gitea" /federated/apps/authelia/data/config/idproviders.yml 2>/dev/null) ]]; then sed -i '/### Gitea/,/### /{/### PowerDNS/!{/### /!d}}' /federated/apps/authelia/data/config/idproviders.yml sed -i '/### Gitea/d' /federated/apps/authelia/data/config/idproviders.yml - run_command "/federated/bin/stop authelia" - run_command "/federated/bin/start authelia" + /federated/bin/stop authelia + /federated/bin/start authelia fi echo -ne "done.\n" @@ -303,7 +303,8 @@ configsso_gitea() { get_appvars GITEA_CLIENT_SECRET=$(create_password); - GITEA_CLIENT_SECRET_HASH=$(docker run -it --rm authelia/authelia:latest authelia crypto hash generate pbkdf2 --password $GITEA_CLIENT_SECRET | awk '{ print $2 }') + GITEA_CLIENT_SECRET_HASH=$(docker run --rm authelia/authelia:latest authelia crypto hash generate pbkdf2 --password $GITEA_CLIENT_SECRET | awk '{ print $2 }') + echo "$GITEA_CLIENT_SECRET" > /federated/apps/gitea/.gitea.client.secret cat >> /federated/apps/authelia/data/config/idproviders.yml < /federated/apps/jitsi/.env <> /federated/apps/jitsi/.env <> /federated/apps/jitsi/.env <> /federated/apps/jitsi/.env <> /federated/apps/jitsi/.env <> /federated/apps/jitsi/.env <> /federated/apps/jitsi/.env <> /federated/apps/jitsi/.env <> /federated/apps/jitsi/.env < /dev/null echo -ne "done.\n" } uninstall_jitsi() { echo -ne "* Uninstalling jitsi container.." # First stop the service - cd /federated/apps/jitsi && docker compose -f docker-compose.yml -p jitsi down &> /dev/null + cd /federated/apps/jitsi && docker-compose -f docker-compose.yml -p jitsi down &> /dev/null # Delete the app directory rm -rf /federated/apps/jitsi @@ -796,12 +764,12 @@ uninstall_jitsi() { if [[ $(grep "### Jitsi" /federated/apps/authelia/data/config/idproviders.yml 2>/dev/null) ]]; then sed -i '/### Jitsi/,/### /{/### PowerDNS/!{/### /!d}}' /federated/apps/authelia/data/config/idproviders.yml sed -i '/### Jitsi/d' /federated/apps/authelia/data/config/idproviders.yml - run_command "/federated/bin/stop authelia" - run_command "/federated/bin/start authelia" + run_command "/federated/bin/stop authelia + run_command "/federated/bin/start authelia fi if [[ -d "/federated/apps/jitsiopenid" ]]; then - cd /federated/apps/jitsiopenid && docker compose -f docker-compose.yml -p jitsiopenid down &> /dev/null + cd /federated/apps/jitsiopenid && docker-compose -f docker-compose.yml -p jitsiopenid down &> /dev/null rm -rf /federated/apps/jitsiopenid docker image rm mod242/jitsi-go-openid:latest &> /dev/null fi @@ -811,12 +779,7 @@ uninstall_jitsi() { start_jitsi() { # Start service with command to make sure it's up before proceeding start_service "jitsi" "nc -z 192.168.0.25 443 &> /dev/null" "8" - # Allow multiple JVBs to connect - if [ "$JITSI_SCALE" = "client" ]; then - for i in $(seq 1 10); do - docker exec -ti jitsi-prosody-1 prosodyctl --config /config/prosody.cfg.lua register jvb$i auth.jitsiscale.federated.computer J17515cAl3-jvb - done - fi + echo -ne "done.\n" } configsso_jitsi() { @@ -830,7 +793,7 @@ configsso_jitsi() { JITSI_CLIENT_SECRET=$(create_password); #echo "$JITSI_CLIENT_SECRET" > /federated/apps/jitsi/.jitsiclient.secret #chmod 600 /federated/apps/jitsi/.jitsiclient.secret - JITSI_CLIENT_SECRET_HASH=$(docker run -it --rm authelia/authelia:latest authelia crypto hash generate pbkdf2 --password $JITSI_CLIENT_SECRET | awk '{ print $2 }') + JITSI_CLIENT_SECRET_HASH=$(docker run --rm authelia/authelia:latest authelia crypto hash generate pbkdf2 --password $JITSI_CLIENT_SECRET | awk '{ print $2 }') cat >> /federated/apps/authelia/data/config/idproviders.yml < /dev/null + docker-compose -f /federated/apps/listmonk/docker-compose.yml run --rm listmonk ./listmonk --install --yes &> /dev/null # Change app.root_url and other settings to our domain docker exec postgresql psql -U listmonk -c "update settings set value='\"http://listmonk.$DOMAIN\"' where key='app.root_url'" &> /dev/null @@ -176,7 +176,7 @@ uninstall_listmonk() { SPINPID=$! # First stop the service - cd /federated/apps/listmonk && docker compose -f docker-compose.yml -p listmonk down &> /dev/null + cd /federated/apps/listmonk && docker-compose -f docker-compose.yml -p listmonk down &> /dev/null # Delete database and user in postgresql docker exec postgresql psql -U postgres -c "DROP DATABASE listmonk" &> /dev/null diff --git a/lib/mail.sh b/lib/mail.sh index 88e54f7..edde9d0 100644 --- a/lib/mail.sh +++ b/lib/mail.sh @@ -85,13 +85,13 @@ LDAP_SERVER_HOST=ldap://ldap.$DOMAIN LDAP_SEARCH_BASE=ou=people,dc=federatedcomputer,dc=cloud LDAP_BIND_DN=cn=admin,dc=federatedcomputer,dc=cloud LDAP_BIND_PW=$LDAP_SECRET -LDAP_QUERY_FILTER_USER="(&(mail=%s)(mailEnabled=TRUE))" -LDAP_QUERY_FILTER_GROUP="(&(mailGroupMember=%s)(mailEnabled=TRUE))" -LDAP_QUERY_FILTER_ALIAS="(&(mailAlias=%s)(mailEnabled=TRUE))" -LDAP_QUERY_FILTER_DOMAIN="(|(mail=*@%s)(mailAlias=*@%s))" +LDAP_QUERY_FILTER_USER=(&(mail=%s)(mailEnabled=TRUE)) +LDAP_QUERY_FILTER_GROUP=(&(mailGroupMember=%s)(mailEnabled=TRUE)) +LDAP_QUERY_FILTER_ALIAS=(&(mailAlias=%s)(mailEnabled=TRUE)) +LDAP_QUERY_FILTER_DOMAIN=(|(mail=*@%s)(mailAlias=*@%s)) # DOVECOT -DOVECOT_PASS_FILTER="(&(objectClass=inetOrgPerson)(mail=%u))" -DOVECOT_USER_FILTER="(&(objectClass=inetOrgPerson)(mail=%u))" +DOVECOT_PASS_FILTER=(&(objectClass=inetOrgPerson)(mail=%u)) +DOVECOT_USER_FILTER=(&(objectClass=inetOrgPerson)(mail=%u)) DOVECOT_USER_ATTRS=homeDirectory=home,=uid=5000,=gid=5000 # SASLAUTHD ENABLE_SASLAUTHD=1 @@ -100,7 +100,7 @@ SASLAUTHD_LDAP_SERVER=ldap://ldap.$DOMAIN SASLAUTHD_LDAP_BIND_DN=cn=admin,dc=federatedcomputer,dc=cloud SASLAUTHD_LDAP_PASSWORD=$LDAP_SECRET SASLAUTHD_LDAP_SEARCH_BASE=ou=people,dc=federatedcomputer,dc=cloud -SASLAUTHD_LDAP_FILTER="(&(objectClass=inetOrgPerson)(mail=%U@%r))" +SASLAUTHD_LDAP_FILTER=(&(objectClass=inetOrgPerson)(mail=%U@%r)) POSTMASTER_ADDRESS=postmaster@localhost.localdomain POSTFIX_MESSAGE_SIZE_LIMIT=100000000 ENABLE_MANAGESIEVE=1 @@ -302,7 +302,7 @@ uninstall_mail() { echo -ne "* Uninstalling mail container.." # First stop the service - cd /federated/apps/mail && docker compose -f docker-compose.yml -p mail down &> /dev/null + cd /federated/apps/mail && docker-compose -f docker-compose.yml -p mail down &> /dev/null # Delete the app directory rm -rf /federated/apps/mail diff --git a/lib/matrix.sh b/lib/matrix.sh index 0a9aaca..6a5702e 100644 --- a/lib/matrix.sh +++ b/lib/matrix.sh @@ -65,7 +65,7 @@ sed -i 's!args:!!g' /federated/apps/matrix/data/matrix/homeserver.yaml cat >> /federated/apps/matrix/data/matrix/homeserver.yaml < /dev/null + cd /federated/apps/matrix && docker-compose -f docker-compose.yml -p matrix down &> /dev/null # Delete database and user in postgresql docker exec postgresql psql -U postgres -c "DROP DATABASE matrix" &> /dev/null @@ -253,7 +253,8 @@ configsso_matrix() { [[ $(grep "### Matrix" /federated/apps/authelia/data/config/idproviders.yml 2>/dev/null) ]] && failcheck "Authelia already has a Matrix configuration." MATRIX_CLIENT_SECRET=$(create_password); - MATRIX_CLIENT_SECRET_HASH=$(docker run -it --rm authelia/authelia:latest authelia crypto hash generate pbkdf2 --password $MATRIX_CLIENT_SECRET | awk '{ print $2 }') + MATRIX_CLIENT_SECRET_HASH=$(docker run --rm authelia/authelia:latest authelia crypto hash generate pbkdf2 --password $MATRIX_CLIENT_SECRET | awk '{ print $2 }') + echo "$MATRIX_CLIENT_SECRET" > /federated/apps/matrix/.matrix.client.secret cat >> /federated/apps/authelia/data/config/idproviders.yml <> /federated/apps/matrix/data/matrix/homeserver.yaml < /dev/null + cd /federated/apps/matrixsignal && docker-compose -f docker-compose.yml -p matrixsignal down &> /dev/null # Delete database and user in postgresql docker exec postgresql psql -U postgres -c "DROP DATABASE matrixsignal" &> /dev/null diff --git a/lib/matrixslack.sh b/lib/matrixslack.sh index 9f5f5ab..168460c 100644 --- a/lib/matrixslack.sh +++ b/lib/matrixslack.sh @@ -87,7 +87,7 @@ uninstall_matrixslack() { SPINPID=$! # First stop the service - cd /federated/apps/matrixslack && docker compose -f docker-compose.yml -p matrixslack down &> /dev/null + cd /federated/apps/matrixslack && docker-compose -f docker-compose.yml -p matrixslack down &> /dev/null # Delete database and user in postgresql docker exec postgresql psql -U postgres -c "DROP DATABASE matrixslack" &> /dev/null diff --git a/lib/matrixwhatsapp.sh b/lib/matrixwhatsapp.sh index 838841e..5512438 100644 --- a/lib/matrixwhatsapp.sh +++ b/lib/matrixwhatsapp.sh @@ -87,7 +87,7 @@ uninstall_matrixwhatsapp() { SPINPID=$! # First stop the service - cd /federated/apps/matrixwhatsapp && docker compose -f docker-compose.yml -p matrixwhatsapp down &> /dev/null + cd /federated/apps/matrixwhatsapp && docker-compose -f docker-compose.yml -p matrixwhatsapp down &> /dev/null # Delete database and user in postgresql docker exec postgresql psql -U postgres -c "DROP DATABASE matrixwhatsapp" &> /dev/null diff --git a/lib/msp.sh b/lib/msp.sh index b8c404b..ae8f3bf 100644 --- a/lib/msp.sh +++ b/lib/msp.sh @@ -152,7 +152,7 @@ uninstall_msp() { SPINPID=$! # First stop the service - cd /federated/apps/msp && docker compose -f docker-compose.yml -p msp down &> /dev/null + cd /federated/apps/msp && docker-compose -f docker-compose.yml -p msp down &> /dev/null # Delete the app directory rm -rf /federated/apps/msp diff --git a/lib/nextcloud.sh b/lib/nextcloud.sh index 0c3ef4c..210825e 100644 --- a/lib/nextcloud.sh +++ b/lib/nextcloud.sh @@ -316,7 +316,7 @@ uninstall_nextcloud() { echo -ne "* Uninstalling nextcloud container.." # First stop the service - cd /federated/apps/nextcloud && docker compose -f docker-compose.yml -p nextcloud down &> /dev/null + cd /federated/apps/nextcloud && docker-compose -f docker-compose.yml -p nextcloud down &> /dev/null # Delete database and user in postgresql docker exec postgresql psql -U postgres -c "DROP DATABASE nextcloud" &> /dev/null @@ -350,7 +350,8 @@ configsso_nextcloud() { [[ $(grep "### Nextcloud" /federated/apps/authelia/data/config/idproviders.yml 2>/dev/null) ]] && failcheck "Authelia already has a Nextcloud configuration." NEXTCLOUD_CLIENT_SECRET=$(create_password); - NEXTCLOUD_CLIENT_SECRET_HASH=$(docker run -it --rm authelia/authelia:latest authelia crypto hash generate pbkdf2 --password $NEXTCLOUD_CLIENT_SECRET | awk '{ print $2 }') + NEXTCLOUD_CLIENT_SECRET_HASH=$(docker run --rm authelia/authelia:latest authelia crypto hash generate pbkdf2 --password $NEXTCLOUD_CLIENT_SECRET | awk '{ print $2 }') + echo "$NEXTCLOUD_CLIENT_SECRET" > /federated/apps/nextcloud/.nextcloud.client.secret cat >> /federated/apps/authelia/data/config/idproviders.yml <> /federated/apps/authelia/data/config/idproviders.yml < /dev/null + cd /federated/apps/redis && docker-compose -f docker-compose.yml -p redis down &> /dev/null # Delete the app directory rm -rf /federated/apps/redis diff --git a/lib/roundcube.sh b/lib/roundcube.sh index 7fb4a3c..257c13c 100644 --- a/lib/roundcube.sh +++ b/lib/roundcube.sh @@ -111,7 +111,7 @@ uninstall_roundcube() { echo -ne "* Uninstalling roundcube container.." # First stop the service - cd /federated/apps/roundcube && docker compose -f docker-compose.yml -p roundcube down &> /dev/null + cd /federated/apps/roundcube && docker-compose -f docker-compose.yml -p roundcube down &> /dev/null # Delete database and user docker exec pdnsmysql bash -c "mysql -uroot -p$MYSQL_ROOTPASSWORD -e 'drop database roundcube;'" &> /dev/null @@ -138,14 +138,14 @@ uninstall_roundcube() { echo -ne "done.\n" } configsso_roundcube() { - echo -ne "* Configuring roundcube container with SSO.." + echo -ne "* Configuring matrix container with SSO.." [ ! -d "/federated/apps/authelia" ] && failcheck "Authelia is not installed. You need this first before continuing." [ ! -f "/federated/apps/authelia/data/config/idproviders.yml" ] && failcheck "Authelia idproviders.yml is missing." [[ $(grep "### Roundcube" /federated/apps/authelia/data/config/idproviders.yml 2>/dev/null) ]] && failcheck "Authelia already has a Roundcube configuration." ROUNDCUBE_CLIENT_SECRET=$(create_password); - ROUNDCUBE_CLIENT_SECRET_HASH=$(docker run -it --rm authelia/authelia:latest authelia crypto hash generate pbkdf2 --password $ROUNDCUBE_CLIENT_SECRET | awk '{ print $2 }') + ROUNDCUBE_CLIENT_SECRET_HASH=$(docker run --rm authelia/authelia:latest authelia crypto hash generate pbkdf2 --password $ROUNDCUBE_CLIENT_SECRET | awk '{ print $2 }') cat >> /federated/apps/authelia/data/config/idproviders.yml < /dev/null + docker-compose -f /federated/apps/traefik/docker-compose.yml -p traefik up -d &> /dev/null # Keep trying to see that certificates are generated RETRY="20" @@ -120,7 +120,7 @@ start_traefik_old() { break else if [ "$RETRY" == 1 ]; then - docker compose -f /federated/apps/traefik/docker-compose.yml -p traefik down &> /dev/null + docker-compose -f /federated/apps/traefik/docker-compose.yml -p traefik down &> /dev/null fail "There was a problem starting service /federated/apps/traefik\nCheck the output of 'docker logs traefik' or turn on\ndebug with -d" fi ((RETRY--)) diff --git a/lib/vaultwarden.sh b/lib/vaultwarden.sh index e6f818a..f3f326d 100644 --- a/lib/vaultwarden.sh +++ b/lib/vaultwarden.sh @@ -81,7 +81,7 @@ uninstall_vaultwarden() { SPINPID=$! # First stop the service - cd /federated/apps/vaultwarden && docker compose -f docker-compose.yml -p vaultwarden down &> /dev/null + cd /federated/apps/vaultwarden && docker-compose -f docker-compose.yml -p vaultwarden down &> /dev/null # Delete database and user in postgresql docker exec postgresql psql -U postgres -c "DROP DATABASE vaultwarden" &> /dev/null diff --git a/lib/wireguard.sh b/lib/wireguard.sh index 14ee421..aac77de 100644 --- a/lib/wireguard.sh +++ b/lib/wireguard.sh @@ -138,7 +138,7 @@ uninstall_wireguard() { SPINPID=$! # First stop the service - cd /federated/apps/wireguard && docker compose -f docker-compose.yml -p wireguard down &> /dev/null + cd /federated/apps/wireguard && docker-compose -f docker-compose.yml -p wireguard down &> /dev/null # Delete the app directory rm -rf /federated/apps/wireguard diff --git a/lib/wordpress.sh b/lib/wordpress.sh index 236e759..711ceb9 100644 --- a/lib/wordpress.sh +++ b/lib/wordpress.sh @@ -173,7 +173,7 @@ uninstall_wordpress() { echo -ne "* Uninstalling wordpress container.." # First stop the service - cd /federated/apps/wordpress && docker compose -f docker-compose.yml -p wordpress down &> /dev/null + cd /federated/apps/wordpress && docker-compose -f docker-compose.yml -p wordpress down &> /dev/null # Delete database and user docker exec pdnsmysql bash -c "mysql -uroot -p$MYSQL_ROOTPASSWORD -e 'drop database wordpress;'" &> /dev/null @@ -207,7 +207,7 @@ configsso_wordpress() { [[ $(grep "### Wordpress" /federated/apps/authelia/data/config/idproviders.yml 2>/dev/null) ]] && failcheck "Authelia already has a Wordpress configuration." WORDPRESS_CLIENT_SECRET=$(create_password); - WORDPRESS_CLIENT_SECRET_HASH=$(docker run -it --rm authelia/authelia:latest authelia crypto hash generate pbkdf2 --password $WORDPRESS_CLIENT_SECRET | awk '{ print $2 }') + WORDPRESS_CLIENT_SECRET_HASH=$(docker run --rm authelia/authelia:latest authelia crypto hash generate pbkdf2 --password $WORDPRESS_CLIENT_SECRET | awk '{ print $2 }') cat >> /federated/apps/authelia/data/config/idproviders.yml <