From e0c7381f3e4bf9518dc1da4166ffd851997aa5ed Mon Sep 17 00:00:00 2001 From: root Date: Mon, 2 Oct 2023 16:51:20 +0000 Subject: [PATCH] Added bookstack --- bin/backuptool | 10 ++++- bin/install-federated | 1 + lib/bookstack.sh | 102 ++++++++++++++++++++++++++++++++++++++++++ lib/caddy.sh | 2 +- lib/functions.sh | 10 ++++- 5 files changed, 122 insertions(+), 3 deletions(-) create mode 100644 lib/bookstack.sh diff --git a/bin/backuptool b/bin/backuptool index 75f5343..cb84c6a 100755 --- a/bin/backuptool +++ b/bin/backuptool @@ -1,4 +1,4 @@ -#!/bin/bash -x +#!/bin/bash # # Federated Backup / Restore Tool to B2 Backblaze . /federated/lib/functions.sh @@ -63,6 +63,10 @@ backupservice() { docker exec -it pdnsmysql mysqldump -uroot -p${MYSQL_PASSWORD} wordpress | gzip -9 > /federated/apps/wordpress/dump_$SERVICE.sql.gz PASSPHRASE=$GPG_PASSPHRASE duplicity /federated/apps/$SERVICE b2://$B2_APPLICATION_KEY_ID:$B2_APPLICATION_KEY@$UUID/$SERVICE/ rm /federated/apps/wordpress/dump_$SERVICE.sql.gz + elif [ "$SERVICE" = "bookstack" ]; then + docker exec -it pdnsmysql mysqldump -uroot -p${MYSQL_PASSWORD} bookstack | gzip -9 > /federated/apps/bookstack/dump_$SERVICE.sql.gz + PASSPHRASE=$GPG_PASSPHRASE duplicity /federated/apps/$SERVICE b2://$B2_APPLICATION_KEY_ID:$B2_APPLICATION_KEY@$UUID/$SERVICE/ + rm /federated/apps/bookstack/dump_$SERVICE.sql.gz else # For all other services, If the postgresql database exists for that service then dump it docker exec -it postgresql psql -U $SERVICE -c '\q' &>/dev/null @@ -103,6 +107,10 @@ backupserviceall() { docker exec -it pdnsmysql mysqldump -uroot -p${MYSQL_PASSWORD} wordpress | gzip -9 > /federated/apps/wordpress/dump_$i.sql.gz PASSPHRASE=$GPG_PASSPHRASE duplicity /federated/apps/$i b2://$B2_APPLICATION_KEY_ID:$B2_APPLICATION_KEY@$UUID/$i/ rm /federated/apps/wordpress/dump_$i.sql.gz + elif [ "$i" = "bookstack" ]; then + docker exec -it pdnsmysql mysqldump -uroot -p${MYSQL_PASSWORD} bookstack | gzip -9 > /federated/apps/bookstack/dump_$i.sql.gz + PASSPHRASE=$GPG_PASSPHRASE duplicity /federated/apps/$i b2://$B2_APPLICATION_KEY_ID:$B2_APPLICATION_KEY@$UUID/$i/ + rm /federated/apps/bookstack/dump_$i.sql.gz else docker exec -it postgresql psql -U $i -c '\q' &>/dev/null if [ $? -eq 0 ]; then diff --git a/bin/install-federated b/bin/install-federated index df7bf91..ac781cc 100755 --- a/bin/install-federated +++ b/bin/install-federated @@ -42,6 +42,7 @@ get_config() { . /federated/lib/castopod.sh . /federated/lib/wordpress.sh . /federated/lib/coturn.sh + . /federated/lib/bookstack.sh COUNTRIES=("AF" "AL" "DZ" "AS" "AD" "AO" "AI" "AQ" "AG" "AR" "AM" "AW" "AU" "AT" "AZ" "BS" "BH" "BD" "BB" "BY" "BE" "BZ" "BJ" "BM" "BT" "BO" "BO" "BA" "BW" "BV" "BR" "IO" "BN" "BN" "BG" "BF" "BI" "KH" "CM" "CA" "CV" "KY" "CF" "TD" "CL" "CN" "CX" "CC" "CO" "KM" "CG" "CD" "CK" "CR" "CI" "CI" "HR" "CU" "CY" "CZ" "DK" "DJ" "DM" "DO" "EC" "EG" "SV" "GQ" "ER" "EE" "ET" "FK" "FO" "FJ" "FI" "FR" "GF" "PF" "TF" "GA" "GM" "GE" "DE" "GH" "GI" "GR" "GL" "GD" "GP" "GU" "GT" "GG" "GN" "GW" "GY" "HT" "HM" "VA" "HN" "HK" "HU" "IS" "IN" "ID" "IR" "IQ" "IE" "IM" "IL" "IT" "JM" "JP" "JE" "JO" "KZ" "KE" "KI" "KP" "KR" "KR" "KW" "KG" "LA" "LV" "LB" "LS" "LR" "LY" "LY" "LI" "LT" "LU" "MO" "MK" "MG" "MW" "MY" "MV" "ML" "MT" "MH" "MQ" "MR" "MU" "YT" "MX" "FM" "MD" "MC" "MN" "ME" "MS" "MA" "MZ" "MM" "MM" "NA" "NR" "NP" "NL" "AN" "NC" "NZ" "NI" "NE" "NG" "NU" "NF" "MP" "NO" "OM" "PK" "PW" "PS" "PA" "PG" "PY" "PE" "PH" "PN" "PL" "PT" "PR" "QA" "RE" "RO" "RU" "RU" "RW" "SH" "KN" "LC" "PM" "VC" "VC" "VC" "WS" "SM" "ST" "SA" "SN" "RS" "SC" "SL" "SG" "SK" "SI" "SB" "SO" "ZA" "GS" "SS" "ES" "LK" "SD" "SR" "SJ" "SZ" "SE" "CH" "SY" "TW" "TW" "TJ" "TZ" "TH" "TL" "TG" "TK" "TO" "TT" "TN" "TR" "TM" "TC" "TV" "UG" "UA" "AE" "GB" "US" "UM" "UY" "UZ" "VU" "VE" "VE" "VN" "VN" "VG" "VI" "WF" "EH" "YE" "ZM" "ZW") diff --git a/lib/bookstack.sh b/lib/bookstack.sh new file mode 100644 index 0000000..0fa4d47 --- /dev/null +++ b/lib/bookstack.sh @@ -0,0 +1,102 @@ +#!/bin/bash +# +# Bookstack Service + +PATH=$HOME/.docker/cli-plugins:/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin + +config_bookstack() { + echo -ne "\n* Configuring /federated/apps/bookstack container.." + spin & + SPINPID=$! + + if [ ! -d "/federated/apps/bookstack" ]; then + mkdir -p /federated/apps/bookstack/data/config + fi + +cat > /federated/apps/bookstack/docker-compose.yml < /federated/apps/bookstack/.env < /dev/null +echo -ne "done." +} +start_bookstack() { + # Start service with command to make sure it's up before proceeding + start_service "bookstack" "nc -z 172.99.0.36 80 &> /dev/null" "7" + + docker exec pdns pdnsutil add-record $DOMAIN bookstack A 86400 $EXTERNALIP + [ $? -ne 0 ] && fail "Couldn't add dns record for bookstack" + + PDNS_MYSQL_COMMAND="update users set password=\"$BOOKSTACK_ADMINPASSWORD\" where id = \"1\";" + docker exec pdnsmysql bash -c "mysql -ubookstack -p$BOOKSTACK_SECRET bookstack -e '$PDNS_MYSQL_COMMAND;'" + docker exec pdnsmysql bash -c "mysql -ubookstack -p$BOOKSTACK_SECRET bookstack -e \"update users set email='admin@$DOMAIN' where id = 1;\"" + + # Set mail configuration + sed -i "s#MAIL_FROM=.*#MAIL_FROM=admin@$DOMAIN#g" /federated/apps/bookstack/data/config/www/.env + sed -i "s#MAIL_FROM_NAME=.*#MAIL_FROM_NAME=admin#g" /federated/apps/bookstack/data/config/www/.env + sed -i "s#MAIL_HOST=.*#MAIL_HOST=mail.$DOMAIN#g" /federated/apps/bookstack/data/config/www/.env + sed -i "s#MAIL_PORT=.*#MAIL_PORT=587#g" /federated/apps/bookstack/data/config/www/.env + sed -i "s#MAIL_USERNAME=.*#MAIL_USERNAME=admin#g" /federated/apps/bookstack/data/config/www/.env + sed -i "s#MAIL_PASSWORD=.*#MAIL_PASSWORD=$ADMINPASS#g" /federated/apps/bookstack/data/config/www/.env + sed -i "s#MAIL_ENCRYPTION=.*#MAIL_ENCRYPTION=TLS#g" /federated/apps/bookstack/data/config/www/.env + + kill -9 $SPINPID &> /dev/null + echo -ne "done." +} diff --git a/lib/caddy.sh b/lib/caddy.sh index bb3c7f5..ab7b951 100644 --- a/lib/caddy.sh +++ b/lib/caddy.sh @@ -38,7 +38,7 @@ services: - ./data/data:/data labels: - "traefik.enable=true" - - "traefik.http.routers.caddy.rule=Host(\`caddy.$DOMAIN\`,\`blog.$DOMAIN\`,\`documentation.$DOMAIN\`)" + - "traefik.http.routers.caddy.rule=Host(\`caddy.$DOMAIN\`,\`blog.$DOMAIN\`)" - "traefik.http.routers.caddy.entrypoints=websecure" - "traefik.http.routers.caddy.tls.certresolver=letsencrypt" diff --git a/lib/functions.sh b/lib/functions.sh index 502b834..8834761 100644 --- a/lib/functions.sh +++ b/lib/functions.sh @@ -1,7 +1,7 @@ # Federated Computer functions # Define all services -SERVICES=("pdnsmysql" "pdns" "pdnsadmin" "traefik" "postgresql" "ldap" "mail" "collabora" "nextcloud" "matrix" "element" "listmonk" "vaultwarden" "panel" "wireguard" "jitsi" "baserow" "gitea" "caddy" "autodiscover" "castopod" "wordpress" "coturn") +SERVICES=("pdnsmysql" "pdns" "pdnsadmin" "traefik" "postgresql" "ldap" "mail" "collabora" "nextcloud" "matrix" "element" "listmonk" "vaultwarden" "panel" "wireguard" "jitsi" "baserow" "gitea" "caddy" "autodiscover" "castopod" "wordpress" "coturn" "bookstack") fail() { echo -ne "FAILED\n\n$1\n\n" @@ -438,6 +438,14 @@ Password = "$LISTMONKPASS" Click here Auto discovery is a service to provide automatic mail configurations for mail clients + + Bookstack + bookstack.$DOMAIN/login + admin@$DOMAIN
admin password above + User access is separate from panel + Click here + Bookstack is a simple, open-source, self-hosted, easy-to-use platform for organising and storing information. +