Added baserow service

This commit is contained in:
Derek Crudgington 2023-01-26 15:31:11 +00:00
parent 4d1b2fe72b
commit 6ee97ed203
5 changed files with 135 additions and 7 deletions

View File

@ -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

View File

@ -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

View File

@ -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

121
lib/baserow.sh Normal file
View File

@ -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 <<EOF
version: '3.7'
services:
baserow:
image: baserow/baserow:\${IMAGE_VERSION}
container_name: baserow
hostname: baserow.$DOMAIN
domainname: $DOMAIN
restart: always
networks:
federated:
ipv4_address: 172.99.0.28
env_file:
- ./.env
volumes:
- ./data/baserow/data:/baserow/data
networks:
federated:
external: true
EOF
cat > /federated/apps/baserow/.env <<EOF
IMAGE_VERSION="1.14.0"
BASEROW_PUBLIC_URL=https://baserow.$DOMAIN
DATABASE_HOST=postgresql.$DOMAIN
DATABASE_NAME=baserow
DATABASE_USER=baserow
DATABASE_PASSWORD_FILE=/baserow/data/.federated.postgresql.secret
DATABASE_PORT=5432
BASEROW_AMOUNT_OF_WORKERS=1
BASEROW_AMOUNT_OF_GUNICORN_WORKERS=1
BASEROW_RUN_MINIMAL=1
BASEROW_TRIGGER_SYNC_TEMPLATES_AFTER_MIGRATION="false"
VIRTUAL_PROTO=http
VIRTUAL_PORT=80
VIRTUAL_HOST=baserow.$DOMAIN
EOF
chmod 600 /federated/apps/baserow/.env
echo "$BASEROW_SECRET" > /federated/apps/baserow/data/baserow/data/.federated.postgresql.secret
cat > /federated/apps/baserow/data/createuser.sh <<EOF
#!/bin/bash
curl -X POST -H 'Content-Type: application/json' -i http://localhost/api/user/ --data '{
"name": "admin",
"email": "admin@$DOMAIN",
"password": "$ADMINPASS"
}'
EOF
chmod +x /federated/apps/baserow/data/createuser.sh
kill -9 $SPINPID &> /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."
}

View File

@ -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 <<EOF
@ -88,6 +89,9 @@ GRANT ALL PRIVILEGES ON DATABASE listmonk TO listmonk;
CREATE USER matrix WITH PASSWORD '$MATRIX_SECRET';
CREATE DATABASE matrix;
GRANT ALL PRIVILEGES ON DATABASE matrix TO matrix;
CREATE USER baserow WITH PASSWORD '$BASEROW_SECRET';
CREATE DATABASE baserow;
GRANT ALL PRIVILEGES ON DATABASE baserow TO baserow;
EOF
kill -9 $SPINPID &> /dev/null