From 0f4991e7453174213551f3b58c4370adf909ae52 Mon Sep 17 00:00:00 2001 From: SDGDen Date: Thu, 5 Mar 2026 02:28:35 +0100 Subject: [PATCH] nginx db now functional, various docker compose up commands included now. --- deploy.sh | 57 ++++++++++++++++++ prepdb.sh | 10 +-- .../www/{app.sqlite => app copy.sqlite} | Bin stacks/dashboard/www/app-pre.sqlite | Bin 0 -> 147456 bytes 4 files changed, 62 insertions(+), 5 deletions(-) rename stacks/dashboard/www/{app.sqlite => app copy.sqlite} (100%) create mode 100644 stacks/dashboard/www/app-pre.sqlite diff --git a/deploy.sh b/deploy.sh index 9b6b02e..b43571a 100644 --- a/deploy.sh +++ b/deploy.sh @@ -235,11 +235,68 @@ echo "DNSStubListener=no" | tee -a /etc/systemd/resolved.conf cd /opt/dockge docker compose up -d +echo "Dockge has been installed and launched. go to http://$localip:5001 and configure your username and password, then press any key to continue" +read -n 1 -s -r -p "" + # call replacements for nginx db replace_in_sqlite_db "/opt/stacks/npm/data/database.sqlite" "" $domain replace_in_sqlite_db "/opt/stacks/npm/data/database.sqlite" "" $localip replace_in_sqlite_db "/opt/stacks/npm/data/database.sqlite" "" $adminpass replace_in_sqlite_db "/opt/stacks/npm/data/database.sqlite" "" $adminemail +cd /opt/stacks/npm +docker compose up -d + +echo "Dockge has been installed and launched. go to http://$localip:81 and configure your username and password, then press any key to continue" +read -n 1 -s -r -p "" + +cd /opt/stacks/dozzle +docker compose up -d +echo "dozzle has been launched from http://dozzle.$domain, verify it is online" + +cd /opt/stacks/convertx +docker compose up -d +echo "convertx has been launched from http://convert.$domain, verify it is online" + +cd /opt/stacks/downloader +docker compose up -d +echo "downloader has been launched from http://download.$domain, verify it is online" + +cd /opt/stacks/wireguard +docker compose up -d +echo "wireguard has been launched from http://vpn.$domain, verify it is online" + +cd /opt/stacks/it-tools +docker compose up -d +echo "it-tools has been launched from http://tools.$domain, verify it is online" + +cd /opt/stacks/onlyoffice +docker compose up -d +echo "onlyoffice has been launched from http://tools.$domain, verify it is online" + +cd /opt/stacks/site +docker compose up -d +echo "site has been launched from http://www.$domain, verify it is online" + +cd /opt/stacks/vaultwarden +docker compose up -d +echo "vaultwarden has been launched from http://vault.$domain, verify it is online" + +#bookstack + +#browser + +#dashboard + +#jellyfin + +#uptimekuma + +#owncloud + +#pihole + + + echo "" echo "" diff --git a/prepdb.sh b/prepdb.sh index b9a3a65..e6daad5 100644 --- a/prepdb.sh +++ b/prepdb.sh @@ -72,8 +72,8 @@ replace_in_sqlite_db() { scriptdir="$(dirname "$(realpath "$0")")" #example usage: replace_in_sqlite_db "database.sqlite" "Europe/Amsterdam" "UTC" -cp $scriptdir/stacks/npm/data/database-pre.sqlite $scriptdir/stacks/npm/data/database.sqlite -replace_in_sqlite_db "$scriptdir/stacks/npm/data/database.sqlite" "sdgserver.online" "" -replace_in_sqlite_db "$scriptdir/stacks/npm/data/database.sqlite" "192.168.2.132" "" -replace_in_sqlite_db "$scriptdir/stacks/npm/data/database.sqlite" "z5fGWz2i0q" "" -replace_in_sqlite_db "$scriptdir/stacks/npm/data/database.sqlite" "0.0.0.0/0" "" +cp $scriptdir/stacks/dashboard/www/app-pre.sqlite $scriptdir/stacks/dashboard/www/app.sqlite +replace_in_sqlite_db "$scriptdir/stacks/dashboard/www/app.sqlite" "sdgserver.online" "" +replace_in_sqlite_db "$scriptdir/stacks/dashboard/www/app.sqlite" "192.168.2.132" "" +replace_in_sqlite_db "$scriptdir/stacks/dashboard/www/app.sqlite" "z5fGWz2i0q" "" +replace_in_sqlite_db "$scriptdir/stacks/dashboard/www/app.sqlite" "0.0.0.0/0" "" diff --git a/stacks/dashboard/www/app.sqlite b/stacks/dashboard/www/app copy.sqlite similarity index 100% rename from stacks/dashboard/www/app.sqlite rename to stacks/dashboard/www/app copy.sqlite diff --git a/stacks/dashboard/www/app-pre.sqlite b/stacks/dashboard/www/app-pre.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..0d2b1eb22eb9104fac417b9df780f832900b76df GIT binary patch literal 147456 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 literal 0 HcmV?d00001