From 6ee97ed203c1375da0ed09158b220d8f961bb6a5 Mon Sep 17 00:00:00 2001 From: Derek Crudgington Date: Thu, 26 Jan 2023 15:31:11 +0000 Subject: [PATCH] Added baserow service --- bin/install-federated.sh | 5 +- bin/start.sh | 6 +- bin/stop.sh | 6 +- lib/baserow.sh | 121 +++++++++++++++++++++++++++++++++++++++ lib/postgresql.sh | 4 ++ 5 files changed, 135 insertions(+), 7 deletions(-) create mode 100644 lib/baserow.sh diff --git a/bin/install-federated.sh b/bin/install-federated.sh index 506e1a6..5d3cac2 100755 --- a/bin/install-federated.sh +++ b/bin/install-federated.sh @@ -62,6 +62,7 @@ get_config() { . /federated/lib/proxy.sh . /federated/lib/wireguard.sh . /federated/lib/connector.sh + . /federated/lib/baserow.sh echo -ne "\nFederated Stack install script\n\n" read -p '* Enter domain name (domain.com): ' DOMAIN @@ -92,12 +93,13 @@ check_ports config_network # Configure and start each federated service -for i in dns postgresql ldap mail collabora proxy nextcloud matrix element listmonk vaultwarden panel wireguard jitsi connector; do +for i in dns postgresql ldap mail collabora proxy nextcloud matrix element listmonk vaultwarden panel wireguard jitsi connector baserow; do config_$i start_$i done # Print out federated environment details +echo -ne "\n\n" cat << EOF * The services are at these hostnames.. mail.$DOMAIN @@ -110,6 +112,7 @@ listmonk.$DOMAIN vaultwarden.$DOMAIN vpn.$DOMAIN connector.$DOMAIN +baserow.$DOMAIN * Your VPN Wireguard configuration is.. EOF diff --git a/bin/start.sh b/bin/start.sh index 38aeb8e..0d817e7 100755 --- a/bin/start.sh +++ b/bin/start.sh @@ -3,7 +3,7 @@ # Federated Start Script usage() { - echo "$0: all|dns|postgresql|ldap|mail|collabora|nextcloud|matrix|jitsi|listmonk|vaultwarden|panel|proxy|wireguard|connector" + echo "$0: all|dns|postgresql|ldap|mail|collabora|nextcloud|matrix|element|jitsi|listmonk|vaultwarden|panel|proxy|wireguard|connector|baserow" exit 2 } startservice() { @@ -11,7 +11,7 @@ startservice() { cd /federated/apps/$SERVICE && docker-compose -f docker-compose.yml -p $SERVICE up -d } startservice_all() { - for i in dns postgresql ldap mail collabora nextcloud matrix jitsi listmonk vaultwarden panel proxy wireguard connector; do + for i in dns postgresql ldap mail collabora nextcloud matrix element jitsi listmonk vaultwarden panel proxy wireguard connector baserow; do echo "* Starting $i.." cd /federated/apps/$i && docker-compose -f docker-compose.yml -p $i up -d done @@ -22,6 +22,6 @@ SERVICE=$1 case "$SERVICE" in all) startservice_all;; - dns|postgresql|ldap|mail|collabora|nextcloud|matrix|jitsi|listmonk|vaultwarden|panel|proxy|wireguard|connector) startservice;; + dns|postgresql|ldap|mail|collabora|nextcloud|matrix|element|jitsi|listmonk|vaultwarden|panel|proxy|wireguard|connector|baserow) startservice;; *) usage;; esac diff --git a/bin/stop.sh b/bin/stop.sh index 0ee45a6..8fc69e5 100755 --- a/bin/stop.sh +++ b/bin/stop.sh @@ -3,7 +3,7 @@ # Federated Stop Script usage() { - echo "$0: all|dns|postgresql|ldap|mail|collabora|nextcloud|matrix|jitsi|listmonk|vaultwarden|panel|proxy|wireguard|connector" + echo "$0: all|dns|postgresql|ldap|mail|collabora|nextcloud|matrix|element|jitsi|listmonk|vaultwarden|panel|proxy|wireguard|connector|baserow" exit 2 } stopservice() { @@ -11,7 +11,7 @@ stopservice() { cd /federated/apps/$SERVICE && docker-compose -f docker-compose.yml -p $SERVICE down } stopservice_all() { - for i in dns postgresql ldap mail collabora nextcloud matrix jitsi listmonk vaultwarden panel proxy wireguard connector; do + for i in dns postgresql ldap mail collabora nextcloud matrix element jitsi listmonk vaultwarden panel proxy wireguard connector baserow; do echo "* Stopping $i.." cd /federated/apps/$i && docker-compose -f docker-compose.yml -p $i down done @@ -22,6 +22,6 @@ SERVICE=$1 case "$SERVICE" in all) stopservice_all;; - dns|postgresql|ldap|mail|collabora|nextcloud|matrix|jitsi|listmonk|vaultwarden|panel|proxy|wireguard|connector) stopservice;; + dns|postgresql|ldap|mail|collabora|nextcloud|matrix|element|jitsi|listmonk|vaultwarden|panel|proxy|wireguard|connector|baserow) stopservice;; *) usage;; esac diff --git a/lib/baserow.sh b/lib/baserow.sh new file mode 100644 index 0000000..15a20ae --- /dev/null +++ b/lib/baserow.sh @@ -0,0 +1,121 @@ +#!/bin/bash +# +# Vaultwarden Service + +PATH=$HOME/.docker/cli-plugins:/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin + +config_baserow() { + echo -ne "\n* Configuring /federated/apps/baserow container.." + spin & + SPINPID=$! + + if [ ! -d "/federated/apps/baserow" ]; then + mkdir -p /federated/apps/baserow/data/baserow/data + fi + + DOMAIN_ARRAY=(${DOMAIN//./ }) + DOMAIN_FIRST=${DOMAIN_ARRAY[0]} + DOMAIN_LAST=${DOMAIN_ARRAY[1]} + +cat > /federated/apps/baserow/docker-compose.yml < /federated/apps/baserow/.env < /federated/apps/baserow/data/baserow/data/.federated.postgresql.secret + +cat > /federated/apps/baserow/data/createuser.sh < /dev/null +echo -ne "done." +} + +start_baserow() { + # Start /federated/apps/baserow with output to /dev/null + echo -ne "\n* Starting /federated/apps/baserow service.." + spin & + SPINPID=$! + + if [ $DEBUG ]; then + # Start /federated/apps/baserow with output to console for debug + docker-compose -f /federated/apps/baserow/docker-compose.yml -p baserow up + [ $? -eq 0 ] && echo -ne "done.\n" || fail "There was a problem starting service /federated/apps/baserow" + else + docker-compose -f /federated/apps/baserow/docker-compose.yml -p baserow up -d &> /dev/null + + # Keep trying baserow port 3000 to make sure it's up + # before we proceed + RETRY="30" + while [ $RETRY -gt 0 ]; do + docker exec -it baserow curl http://localhost:3000 &> /dev/null + if [ $? -eq 0 ]; then + break + else + if [ "$RETRY" == 1 ]; then + docker-compose -f /federated/apps/baserow/docker-compose.yml -p baserow down &> /dev/null + kill -9 $SPINPID &> /dev/null + fail "There was a problem starting service /federated/apps/baserow\nCheck the output of 'docker logs baserow' or turn on\ndebug with -d" + fi + ((RETRY--)) + sleep 7 + fi + done + fi + + # Move createuser.sh and set it executable + mv /federated/apps/baserow/data/createuser.sh /federated/apps/baserow/data/baserow/data/ + docker exec -it baserow chmod 755 /baserow/data/createuser.sh + [ $? -ne 0 ] && fail "Couldn't chown createuser.sh in /federated/apps/baserow container" + + # Run createuser.sh inside baserow container + docker exec -it baserow /baserow/data/createuser.sh + [ $? -ne 0 ] && fail "Couldn't run createuser.sh in /federated/apps/baserow container" + + kill -9 $SPINPID &> /dev/null + echo -ne "done." +} diff --git a/lib/postgresql.sh b/lib/postgresql.sh index ecdd609..ca99fc9 100644 --- a/lib/postgresql.sh +++ b/lib/postgresql.sh @@ -76,6 +76,7 @@ chmod 600 /federated/apps/postgresql/.postgresql.secret VAULTWARDEN_SECRET=$(create_password); LISTMONK_SECRET=$(create_password); MATRIX_SECRET=$(create_password); +BASEROW_SECRET=$(create_password); # cat postgresql/data/docker-entrypoint-initdb.d/init.sql cat > /federated/apps/postgresql/data/docker-entrypoint-initdb.d/init.sql < /dev/null