diff --git a/fstack/lib/checks.sh b/fstack/lib/checks.sh index f27e3ab..dc19812 100644 --- a/fstack/lib/checks.sh +++ b/fstack/lib/checks.sh @@ -59,7 +59,8 @@ check_ports() { # Check if ss command exists if command -v ss &> /dev/null; then # Check every port we need if it's in use - for i in 25 53 80 143 389 587 993 8000; do +# for i in 25 53 80 143 389 587 993 8000; do + for i in 2344; do SS=`ss -tulwn | grep LISTEN | awk '{ print $5 }' | awk -F: '{ print $NF }' | grep "^$i$" | head -1` # If port 53 (dns) in use by system-resolvd (Ubuntu) then auto fix if [ "$SS" == 53 ]; then diff --git a/fstack/lib/jitsi.sh b/fstack/lib/jitsi.sh index bae3ba4..f2a2dac 100644 --- a/fstack/lib/jitsi.sh +++ b/fstack/lib/jitsi.sh @@ -25,8 +25,357 @@ config_jitsi() { tar zxvf fstack/files/jitsi/stable-* --strip-components 1 -C fstack/jitsi &> /dev/null [ $? -ne 0 ] && fail "Couldn't extract files/jitsi/stable* into fstack/jitsi" -# Copy in our own docker-compose file -cp fstack/files/jitsi/docker-compose.yml fstack/jitsi +# Create docker compose file +cat > fstack/jitsi/docker-compose.yml < fstack/jitsi/.env < /dev/null + cd fstack/jitsi && docker-compose -f docker-compose.yml -p jitsi up -d &> /dev/null # Keep trying jitsi port 443 to make sure it's up # before we proceed @@ -281,7 +630,7 @@ start_jitsi() { break else if [ "$RETRY" == 1 ]; then - docker-compose -f fstack/jitsi/docker-compose.yml -p jitsi down &> /dev/null + cd fstack/jitsi && docker-compose -f docker-compose.yml -p jitsi down &> /dev/null kill -9 $SPINPID &> /dev/null fail "There was a problem starting service fstack/jitsi\nCheck the output of 'docker logs jitsi' or turn on\ndebug with -d" fi diff --git a/fstack/lib/listmonk.sh b/fstack/lib/listmonk.sh new file mode 100644 index 0000000..1af42d3 --- /dev/null +++ b/fstack/lib/listmonk.sh @@ -0,0 +1,105 @@ +#!/bin/bash +# +# Federated Computer Control Postgresql Service + +PATH=$HOME/.docker/cli-plugins:/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin + +config_listmonk() { + echo -ne "\n* Configuring fstack/listmonk container.." + spin & + SPINPID=$! + + if [ ! -d "fstack/listmonk" ]; then + mkdir -p fstack/listmonk/static + fi + + DOMAIN_ARRAY=(${DOMAIN//./ }) + DOMAIN_FIRST=${DOMAIN_ARRAY[0]} + DOMAIN_LAST=${DOMAIN_ARRAY[1]} + +cat > fstack/listmonk/docker-compose.yml < fstack/listmonk/data/listmonk/config.toml < /dev/null +echo -ne "done." +} + +start_listmonk() { + # Start fstack/listmonk with output to /dev/null + echo -ne "\n* Starting fstack/listmonk service.." + spin & + SPINPID=$! + + if [ $DEBUG ]; then + # Start fstack/listmonk with output to console for debug + docker-compose -f fstack/listmonk/docker-compose.yml -p listmonk up --build + [ $? -eq 0 ] && echo -ne "done.\n" || fail "There was a problem starting service fstack/listmonk" + else + docker-compose -f fstack/listmonk/docker-compose.yml -p listmonk up --build -d &> /dev/null + + # Keep trying listmonk port 9000 to make sure it's up + # before we proceed + RETRY="30" + while [ $RETRY -gt 0 ]; do + nc -z 172.99.0.39 9000 &> /dev/null + if [ $? -eq 0 ]; then + break + else + if [ "$RETRY" == 1 ]; then + docker-compose -f fstack/listmonk/docker-compose.yml -p listmonk down &> /dev/null + kill -9 $SPINPID &> /dev/null + fail "There was a problem starting service fstack/listmonk\nCheck the output of 'docker logs listmonk' or turn on\ndebug with -d" + fi + ((RETRY--)) + sleep 7 + fi + done + fi + + kill -9 $SPINPID &> /dev/null + echo -ne "done." +} diff --git a/fstack/lib/nextcloud.sh b/fstack/lib/nextcloud.sh index 73e84d7..152c007 100644 --- a/fstack/lib/nextcloud.sh +++ b/fstack/lib/nextcloud.sh @@ -24,24 +24,6 @@ cat > fstack/nextcloud/docker-compose.yml < fstack/postgresql/docker-compose.yml < + -c ssl=on + -c ssl_cert_file=/var/lib/postgresql/server.crt + -c ssl_key_file=/var/lib/postgresql/server.key + healthcheck: + test: ["CMD-SHELL", "pg_isready -U nextcloud"] + interval: 10s + timeout: 5s + retries: 5 + +networks: + fstack: + external: true +EOF + +# cat postgresql/data/docker-entrypoint-initdb.d/init.sql +cat > fstack/postgresql/data/docker-entrypoint-initdb.d/init.sql < /dev/null +echo -ne "done." +} + +start_postgresql() { + # Start fstack/postgresql with output to /dev/null + echo -ne "\n* Starting fstack/postgresql service.." + spin & + SPINPID=$! + + if [ $DEBUG ]; then + # Start fstack/postgresql with output to console for debug + docker-compose -f fstack/postgresql/docker-compose.yml -p postgresql up --build + [ $? -eq 0 ] && echo -ne "done.\n" || fail "There was a problem starting service fstack/postgresql" + else + docker-compose -f fstack/postgresql/docker-compose.yml -p postgresql up --build -d &> /dev/null + + # Keep trying postgresql port 5432 to make sure it's up + # before we proceed + RETRY="30" + while [ $RETRY -gt 0 ]; do + nc -z 172.99.0.40 5432 &> /dev/null + if [ $? -eq 0 ]; then + break + else + if [ "$RETRY" == 1 ]; then + docker-compose -f fstack/postgresql/docker-compose.yml -p postgresql down &> /dev/null + kill -9 $SPINPID &> /dev/null + fail "There was a problem starting service fstack/postgresql\nCheck the output of 'docker logs postgresql' or turn on\ndebug with -d" + fi + ((RETRY--)) + sleep 7 + fi + done + fi + + kill -9 $SPINPID &> /dev/null + echo -ne "done." +} diff --git a/fstack/lib/vaultwarden.sh b/fstack/lib/vaultwarden.sh new file mode 100644 index 0000000..d4db57b --- /dev/null +++ b/fstack/lib/vaultwarden.sh @@ -0,0 +1,88 @@ +#!/bin/bash +# +# Federated Computer Control Postgresql Service + +PATH=$HOME/.docker/cli-plugins:/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin + +config_vaultwarden() { + echo -ne "\n* Configuring fstack/vaultwarden container.." + spin & + SPINPID=$! + + if [ ! -d "fstack/vaultwarden" ]; then + mkdir -p fstack/vaultwarden/data/data + fi + + DOMAIN_ARRAY=(${DOMAIN//./ }) + DOMAIN_FIRST=${DOMAIN_ARRAY[0]} + DOMAIN_LAST=${DOMAIN_ARRAY[1]} + +cat > fstack/vaultwarden/docker-compose.yml < /dev/null +echo -ne "done." +} + +start_vaultwarden() { + # Start fstack/vaultwarden with output to /dev/null + echo -ne "\n* Starting fstack/vaultwarden service.." + spin & + SPINPID=$! + + if [ $DEBUG ]; then + # Start fstack/vaultwarden with output to console for debug + docker-compose -f fstack/vaultwarden/docker-compose.yml -p vaultwarden up --build + [ $? -eq 0 ] && echo -ne "done.\n" || fail "There was a problem starting service fstack/vaultwarden" + else + docker-compose -f fstack/vaultwarden/docker-compose.yml -p vaultwarden up --build -d &> /dev/null + + # Keep trying vaultwarden port 80 to make sure it's up + # before we proceed + RETRY="30" + while [ $RETRY -gt 0 ]; do + nc -z 172.99.0.33 80 &> /dev/null + if [ $? -eq 0 ]; then + break + else + if [ "$RETRY" == 1 ]; then + docker-compose -f fstack/vaultwarden/docker-compose.yml -p vaultwarden down &> /dev/null + kill -9 $SPINPID &> /dev/null + fail "There was a problem starting service fstack/vaultwarden\nCheck the output of 'docker logs vaultwarden' or turn on\ndebug with -d" + fi + ((RETRY--)) + sleep 7 + fi + done + fi + + kill -9 $SPINPID &> /dev/null + echo -ne "done." +} diff --git a/install-federated.sh b/install-federated.sh index 9c1c143..6a0bdb5 100755 --- a/install-federated.sh +++ b/install-federated.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/bash -x # # Federated installation script @@ -85,7 +85,9 @@ check_ports config_network # Configure and start each federated service -for i in dns ldap mail collabora nextcloud matrix jitsi panel proxy; do +#for i in dns ldap mail collabora nextcloud matrix jitsi panel proxy; do +#for i in ldap mail collabora nextcloud matrix jitsi panel proxy; do +for i in nextcloud; do config_$i start_$i done diff --git a/start.sh b/start.sh index f9eee70..2f0caec 100755 --- a/start.sh +++ b/start.sh @@ -8,12 +8,12 @@ usage() { } startservice() { echo "* Starting $SERVICE.." - docker-compose -f fstack/$SERVICE/docker-compose.yml -p $SERVICE up -d + cd fstack/$SERVICE && docker-compose -f docker-compose.yml -p $SERVICE up -d } startservice_all() { for i in dns ldap mail collabora nextcloud matrix jitsi panel proxy; do echo "* Starting $i.." - docker-compose -f fstack/$i/docker-compose.yml -p $i up -d + cd fstack/$i && docker-compose -f docker-compose.yml -p $i up -d done }