From 57434aa10712b23fc0b923a8f83e2bab316f25c4 Mon Sep 17 00:00:00 2001 From: openoms <43343391+openoms@users.noreply.github.com> Date: Sat, 4 Feb 2023 12:37:59 +0000 Subject: [PATCH] BTCpay and NBXplorer update, use postgres for new installs (#3641) * use postgres for new btcpay installs keep sqlite if the database is present clean and format the script with shellcheck * reinstall the service on update and check postgres * run userdel -rf btcpay when off * btcpay update to v1.7.5 * add systemctl daemon-reload when changing service * exit on failed builds * Restart=always * nbxplorer update to v2.3.58 * prevent the git error 'detected dubious ownership in repository' --- CHANGES.md | 2 +- .../config.scripts/bonus.btcpayserver.sh | 258 ++++++++++-------- home.admin/config.scripts/bonus.postgresql.sh | 53 ++-- 3 files changed, 175 insertions(+), 138 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index b13bd0001..23d5c6830 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -20,7 +20,7 @@ - Update: RTL v0.13.0 with update option [details](https://github.com/Ride-The-Lightning/RTL/releases/tag/v0.12.3) - Update: Thunderhub v0.13.16 with balance sharing disabled [details](https://github.com/apotdevin/thunderhub/releases/tag/v0.13.16) - Update: LNbits 0.9.6 [details](https://github.com/lnbits/lnbits-legend/releases/tag/0.9.6) -- Update: BTCPayServer 1.7.2 [details](https://github.com/btcpayserver/btcpayserver/releases/tag/v1.7.2) +- Update: BTCPayServer 1.7.5 (using postgres for new installs) [details](https://github.com/btcpayserver/btcpayserver/releases/tag/v1.7.5) - Update: ItchySats 0.7.0 [details](https://github.com/itchysats/itchysats/releases/tag/0.7.0) - Update: Channel Tools (chantools) v0.10.5 [details](https://github.com/guggero/chantools/releases/tag/v0.10.5) - Update: JoinMarket v0.9.8 [details](https://github.com/JoinMarket-Org/joinmarket-clientserver/releases/tag/v0.9.8) diff --git a/home.admin/config.scripts/bonus.btcpayserver.sh b/home.admin/config.scripts/bonus.btcpayserver.sh index 933e6298e..b627c516c 100644 --- a/home.admin/config.scripts/bonus.btcpayserver.sh +++ b/home.admin/config.scripts/bonus.btcpayserver.sh @@ -3,9 +3,9 @@ # Based on: https://gist.github.com/normandmickey/3f10fc077d15345fb469034e3697d0d0 # https://github.com/dgarage/NBXplorer/tags -NBXplorerVersion="v2.3.49" +NBXplorerVersion="v2.3.58" # https://github.com/btcpayserver/btcpayserver/releases -BTCPayVersion="v1.7.2" +BTCPayVersion="v1.7.5" # command info if [ $# -eq 0 ] || [ "$1" = "-h" ] || [ "$1" = "-help" ]; then @@ -25,27 +25,19 @@ source /mnt/hdd/raspiblitz.conf source /home/admin/raspiblitz.info source <(/home/admin/_cache.sh get state) -function postgresConfig() { - - echo "# Generate the database" - sudo -u postgres psql -c "create database nbxplorermainnet;" - sudo -u postgres psql -c "create user nbxplorer with encrypted password 'raspiblitz';" - # change to ${newPassword} or use Passfile= - # sudo -u postgres psql -c "alter user btcpay with encrypted password '${newPassword}';" - # sudo -u btcpay sed -i "s/Password=*/Password='${newPassword}';/g" /home/btcpay/.nbxplorer/Main/settings.config - # sudo -u btcpay sed -i "s/Password=*/Password='${newPassword}';/g" /home/btcpay/.btcpayserver/Main/settings.config - sudo -u postgres psql -c "grant all privileges on database nbxplorermainnet to nbxplorer;" +function NBXplorerConfig() { + # check the postgres database + if sudo -u postgres psql -c '\l' | grep nbxplorermainnet; then + echo "# nbxplorermainnet database already exists" + else + echo "# Generate the database for nbxplorer" + sudo -u postgres psql -c "create database nbxplorermainnet;" + sudo -u postgres psql -c "create user nbxplorer with encrypted password 'raspiblitz';" + sudo -u postgres psql -c "grant all privileges on database nbxplorermainnet to nbxplorer;" + fi echo "# List databases with: sudo -u postgres psql -c '\l'" sudo -u postgres psql -c '\l' - ## clean postgresql: - # sudo su - postgres -c "/usr/lib/postgresql/${PGVERSION}/bin/pg_ctl stop --wait --pgdata=/var/lib/postgresql/${PGVERSION}/main" - # sudo pg_dropcluster ${PGVERSION} main - # sudo apt remove postgresql -y --purge - # sudo apt remove postgresql-${PGVERSION} -y --purge -} - -function NBXplorerConfig() { # https://docs.btcpayserver.org/Deployment/ManualDeploymentExtended/#4-create-a-configuration-file echo echo "# Getting RPC credentials from the bitcoin.conf" @@ -66,7 +58,24 @@ nomigrateevts=1 function BtcPayConfig() { # set thumbprint FINGERPRINT=$(openssl x509 -noout -fingerprint -sha256 -inform pem -in /home/btcpay/.lnd/tls.cert | cut -d"=" -f2) - echo "# setting the LND TLS thumbprint for BTCPay" + if sudo ls /mnt/hdd/app-data/.btcpayserver/Main/sqllite.db 1>/dev/null 2>&1; then + echo "# sqlite database exists" + databaseOption="# keep using sqlite as /mnt/hdd/app-data/.btcpayserver/Main/sqllite.db exists (configured in the btcpayserver.service)" + else + echo "# sqlite database does not exist, using postgresql" + databaseOption="postgres=User ID=btcpay;Host=localhost;Port=5432;Application Name=btcpay;MaxPoolSize=20;Database=btcpaymainnet;Password='raspiblitz';" + if sudo -u postgres psql -c '\l' | grep btcpaymainnet; then + echo "# btcpaymainnet database already exists" + else + echo "# Generate the database for btcpay" + sudo -u postgres psql -c "create database btcpaymainnet;" + sudo -u postgres psql -c "create user btcpay with encrypted password 'raspiblitz';" + sudo -u postgres psql -c "grant all privileges on database btcpaymainnet to btcpay;" + fi + echo "# List databases with: sudo -u postgres psql -c '\l'" + sudo -u postgres psql -c '\l' + fi + echo "# Regenerate the btcpayserver settings (includes the LND TLS thumbprint)" # https://docs.btcpayserver.org/Deployment/ManualDeploymentExtended/#3-create-a-configuration-file echo " ### Global settings ### @@ -82,24 +91,60 @@ BTC.explorer.url=http://127.0.0.1:24444/ BTC.lightning=type=lnd-rest;server=https://127.0.0.1:8080/;macaroonfilepath=/home/btcpay/admin.macaroon;certthumbprint=$FINGERPRINT ### Database ### -# keep sqlite for now as configured in the btcpayserver.service -# postgres=User ID=btcpay;Password=urpassword;Application Name=btcpayserver;Host=localhost;Port=5432;Database=btcpay; +${databaseOption} explorer.postgres=User ID=nbxplorer;Host=localhost;Port=5432;Application Name=nbxplorer;MaxPoolSize=20;Database=nbxplorermainnet;Password='raspiblitz'; " | sudo -u btcpay tee /home/btcpay/.btcpayserver/Main/settings.config - #doesNetworkEntryAlreadyExists=$(sudo cat /home/btcpay/.btcpayserver/Main/settings.config | grep -c '^network=') - #echo "# setting new LND TLS thumbprint for BTCPay" - #s="BTC.lightning=type=lnd-rest\;server=https\://127.0.0.1:8080/\;macaroonfilepath=/home/btcpay/admin.macaroon\;" - #sudo -u btcpay sed -i "s|^${s}certthumbprint=.*|${s}certthumbprint=$FINGERPRINT|g" /home/btcpay/.btcpayserver/Main/settings.config +} + +function BtcPayService() { + if sudo ls /mnt/hdd/app-data/.btcpayserver/Main/sqllite.db 1>/dev/null 2>&1; then + echo "# sqlite database exists" + databaseOption=" -- --sqlitefile=sqllite.db" + else + echo "# sqlite database does not exist, using postgresql" + databaseOption="" + fi + # see the configuration options with: + # sudo -u btcpay /home/btcpay/dotnet/dotnet run --no-launch-profile --no-build -c Release --project "/home/btcpay/btcpayserver/BTCPayServer/BTCPayServer.csproj" -- -h + # run manually to debug: + # sudo -u btcpay /home/btcpay/dotnet/dotnet run --no-launch-profile --no-build -c Release --project "/home/btcpay/btcpayserver/BTCPayServer/BTCPayServer.csproj" -- --sqlitefile=sqllite.db + echo "# create the btcpayserver.service" + echo " +[Unit] +Description=BtcPayServer daemon +Requires=nbxplorer.service +After=nbxplorer.service + +[Service] +ExecStart=/home/btcpay/dotnet/dotnet run --no-launch-profile --no-build \ + -c Release --project \"/home/btcpay/btcpayserver/BTCPayServer/BTCPayServer.csproj\" ${databaseOption} +User=btcpay +Group=btcpay +Type=simple +PIDFile=/run/btcpayserver/btcpayserver.pid +Restart=always +RestartSec=10 + +# Hardening measures +PrivateTmp=true +ProtectSystem=full +NoNewPrivileges=true +PrivateDevices=true + +[Install] +WantedBy=multi-user.target +" | sudo tee /etc/systemd/system/btcpayserver.service + sudo systemctl daemon-reload } if [ "$1" = "status" ]; then echo "version='${BTCPayVersion}'" - isInstalled=$(compgen -u | grep -c btcpay) - echo "prepared=${isInstalled}" - isActive=$(sudo ls /etc/systemd/system/btcpayserver.service 2>/dev/null | grep -c 'btcpayserver.service') - echo "installed=${isActive}" + isInstalled=$(compgen -u | grep -c btcpay) + echo "prepared=${isInstalled}" + isActive=$(sudo ls /etc/systemd/system/btcpayserver.service 2>/dev/null | grep -c 'btcpayserver.service') + echo "installed=${isActive}" if [ "${BTCPayServer}" = "on" ]; then echo "switchedon=1" @@ -168,31 +213,31 @@ if [ "$1" = "menu" ]; then source <(sudo /home/admin/config.scripts/bonus.btcpayserver.sh status) if [ ${switchedon} -eq 0 ]; then - whiptail --title " BTCPay Server " --msgbox "BTCPay Server is not activated." 7 36 - exit 0 + whiptail --title " BTCPay Server " --msgbox "BTCPay Server is not activated." 7 36 + exit 0 fi if [ ${installed} -eq 0 ]; then - whiptail --title " BTCPay Server " --msgbox "BTCPay Server needs to be re-installed.\nPress OK to start process." 8 45 - /home/admin/config.scripts/bonus.btcpayserver.sh on - exit 0 + whiptail --title " BTCPay Server " --msgbox "BTCPay Server needs to be re-installed.\nPress OK to start process." 8 45 + /home/admin/config.scripts/bonus.btcpayserver.sh on + exit 0 fi # display possible problems with IP2TOR setup if [ ${#ip2torWarn} -gt 0 ]; then whiptail --title " Warning " \ - --yes-button "Back" \ - --no-button "Continue Anyway" \ - --yesno "Your IP2TOR+LetsEncrypt may have problems:\n${ip2torWarn}\n\nCheck if locally responding: https://${localIP}:${httpsPort}\n\nCheck if service is reachable over Tor:\n${toraddress}" 14 72 + --yes-button "Back" \ + --no-button "Continue Anyway" \ + --yesno "Your IP2TOR+LetsEncrypt may have problems:\n${ip2torWarn}\n\nCheck if locally responding: https://${localIP}:${httpsPort}\n\nCheck if service is reachable over Tor:\n${toraddress}" 14 72 if [ "$?" != "1" ]; then exit 0 - fi + fi fi text="Local Web Browser: https://${localIP}:${httpsPort}" if [ ${#publicDomain} -gt 0 ]; then - text="${text} + text="${text} Public Domain: https://${publicDomain}:${httpsPort} port forwarding on router needs to be active & may change port" fi @@ -222,7 +267,7 @@ To enable easy reachability with normal browser from the outside consider adding a IP2TOR Bridge: MAINMENU > SUBSCRIBE > IP2TOR" fi -text="${text}\n + text="${text}\n To get the 'Connection String' to activate Lightning Payments: MAINMENU > CONNECT > BTCPay Server" @@ -241,8 +286,8 @@ if [ "$1" = "write-tls-macaroon" ]; then echo "# make sure symlink to central app-data directory exists" if ! [[ -L "/home/btcpay/.lnd" ]]; then - sudo rm -rf "/home/btcpay/.lnd" # not a symlink.. delete it silently - sudo ln -s "/mnt/hdd/app-data/lnd/" "/home/btcpay/.lnd" # and create symlink + sudo rm -rf "/home/btcpay/.lnd" # not a symlink.. delete it silently + sudo ln -s "/mnt/hdd/app-data/lnd/" "/home/btcpay/.lnd" # and create symlink fi # copy admin macaroon @@ -264,7 +309,7 @@ if [ "$1" = "cln-lightning-rpc-access" ]; then if [ "${cl}" = "on" ]; then source <(/home/admin/config.scripts/network.aliases.sh getvars cl mainnet) - if [ $(grep -c "^rpc-file-mode=0660" < ${CLCONF}) -eq 0 ]; then + if [ $(grep -c "^rpc-file-mode=0660" <${CLCONF}) -eq 0 ]; then echo "rpc-file-mode=0660" | tee -a ${CLCONF} if [ "${state}" == "ready" ]; then sudo systemctl restart lightningd @@ -341,9 +386,9 @@ if [ "$1" = "install" ]; then echo "DOTNET_CLI_TELEMETRY_OPTOUT=1" | sudo tee -a /etc/environment # NBXplorer - echo "# Install NBXplorer" + echo "# Install NBXplorer $NBXplorerVersion" cd /home/btcpay || exit 1 - echo "# Download the NBXplorer source code ..." + echo "# Download the NBXplorer source code $NBXplorerVersion" sudo -u btcpay git clone https://github.com/dgarage/NBXplorer.git 2>/dev/null cd NBXplorer || exit 1 sudo -u btcpay git reset --hard $NBXplorerVersion @@ -352,14 +397,17 @@ if [ "$1" = "install" ]; then PGPpubkeyLink="https://keybase.io/nicolasdorier/pgp_keys.asc" PGPpubkeyFingerprint="AB4CFA9895ACA0DBE27F6B346618763EF09186FE" sudo -u btcpay /home/admin/config.scripts/blitz.git-verify.sh "${PGPsigner}" "${PGPpubkeyLink}" "${PGPpubkeyFingerprint}" || exit 1 - echo "# Build NBXplorer ..." + echo "# Build NBXplorer $NBXplorerVersion" # from the build.sh with path - sudo -u btcpay /home/btcpay/dotnet/dotnet build -c Release NBXplorer/NBXplorer.csproj + sudo -u btcpay /home/btcpay/dotnet/dotnet build -c Release NBXplorer/NBXplorer.csproj || ( + echo "# Build failed" + exit 1 + ) # BTCPayServer echo "# Install BTCPayServer" cd /home/btcpay || exit 1 - echo "# Download the BTCPayServer source code ..." + echo "# Download the BTCPayServer source code $BTCPayVersion" sudo -u btcpay git clone https://github.com/btcpayserver/btcpayserver.git 2>/dev/null cd btcpayserver || exit 1 sudo -u btcpay git reset --hard $BTCPayVersion @@ -372,9 +420,13 @@ if [ "$1" = "install" ]; then #PGPpubkeyFingerprint="8E5530D9D1C93097" sudo -u btcpay /home/admin/config.scripts/blitz.git-verify.sh "${PGPsigner}" "${PGPpubkeyLink}" "${PGPpubkeyFingerprint}" || exit 1 - echo "# Build BTCPayServer ..." + echo "# Build BTCPayServer $BTCPayVersion" # from the build.sh with path - sudo -u btcpay /home/btcpay/dotnet/dotnet build -c Release /home/btcpay/btcpayserver/BTCPayServer/BTCPayServer.csproj + sudo -u btcpay /home/btcpay/dotnet/dotnet build -c Release \ + /home/btcpay/btcpayserver/BTCPayServer/BTCPayServer.csproj || ( + echo "# Build failed" + exit 1 + ) exit 0 fi @@ -430,13 +482,13 @@ if [ "$1" = "1" ] || [ "$1" = "on" ]; then # setup nginx symlinks if ! [ -f /etc/nginx/sites-available/btcpay_ssl.conf ]; then - sudo cp /home/admin/assets/nginx/sites-available/btcpay_ssl.conf /etc/nginx/sites-available/btcpay_ssl.conf + sudo cp /home/admin/assets/nginx/sites-available/btcpay_ssl.conf /etc/nginx/sites-available/btcpay_ssl.conf fi if ! [ -f /etc/nginx/sites-available/btcpay_tor.conf ]; then - sudo cp /home/admin/assets/nginx/sites-available/btcpay_tor.conf /etc/nginx/sites-available/btcpay_tor.conf + sudo cp /home/admin/assets/nginx/sites-available/btcpay_tor.conf /etc/nginx/sites-available/btcpay_tor.conf fi if ! [ -f /etc/nginx/sites-available/btcpay_tor_ssl.conf ]; then - sudo cp /home/admin/assets/nginx/sites-available/btcpay_tor_ssl.conf /etc/nginx/sites-available/btcpay_tor_ssl.conf + sudo cp /home/admin/assets/nginx/sites-available/btcpay_tor_ssl.conf /etc/nginx/sites-available/btcpay_tor_ssl.conf fi sudo ln -sf /etc/nginx/sites-available/btcpay_ssl.conf /etc/nginx/sites-enabled/ sudo ln -sf /etc/nginx/sites-available/btcpay_tor.conf /etc/nginx/sites-enabled/ @@ -522,26 +574,23 @@ WantedBy=multi-user.target echo "# Starting nbxplorer" sudo systemctl start nbxplorer echo "# Checking for nbxplorer config" - while [ ! -f "/home/btcpay/.nbxplorer/Main/settings.config" ] - do - echo "# Waiting for nbxplorer to start - CTRL+C to abort" - sleep 10 - hasFailed=$(sudo systemctl status nbxplorer | grep -c "Active: failed") - if [ ${hasFailed} -eq 1 ]; then - echo "# seems like starting nbxplorer service has failed - see: systemctl status nbxplorer" - echo "# maybe report here: https://github.com/rootzoll/raspiblitz/issues/214" - fi + while [ ! -f "/home/btcpay/.nbxplorer/Main/settings.config" ]; do + echo "# Waiting for nbxplorer to start - CTRL+C to abort" + sleep 10 + hasFailed=$(sudo systemctl status nbxplorer | grep -c "Active: failed") + if [ ${hasFailed} -eq 1 ]; then + echo "# seems like starting nbxplorer service has failed - see: systemctl status nbxplorer" + echo "# maybe report here: https://github.com/rootzoll/raspiblitz/issues/214" + fi done else echo "# Because the system is not 'ready' the service 'nbxplorer' will not be started at this point .. its enabled and will start on next reboot" fi - postgresConfig - NBXplorerConfig # whitelist localhost in bitcoind - if ! sudo grep -Eq "^whitelist=127.0.0.1" /mnt/hdd/bitcoin/bitcoin.conf;then + if ! sudo grep -Eq "^whitelist=127.0.0.1" /mnt/hdd/bitcoin/bitcoin.conf; then echo "whitelist=127.0.0.1" | sudo tee -a /mnt/hdd/bitcoin/bitcoin.conf bitcoindRestart=yes fi @@ -554,38 +603,11 @@ WantedBy=multi-user.target sudo systemctl restart nbxplorer fi - # see the configuration options with: - # sudo -u btcpay /home/btcpay/dotnet/dotnet run --no-launch-profile --no-build -c Release -p "/home/btcpay/btcpayserver/BTCPayServer/BTCPayServer.csproj" -- -h - # run manually to debug: - # sudo -u btcpay /home/btcpay/dotnet/dotnet run --no-launch-profile --no-build -c Release --project "/home/btcpay/btcpayserver/BTCPayServer/BTCPayServer.csproj" -- --sqlitefile=sqllite.db - echo "# create the btcpayserver.service" - echo " -[Unit] -Description=BtcPayServer daemon -Requires=nbxplorer.service -After=nbxplorer.service + BtcPayConfig -[Service] -ExecStart=/home/btcpay/dotnet/dotnet run --no-launch-profile --no-build \ - -c Release --project \"/home/btcpay/btcpayserver/BTCPayServer/BTCPayServer.csproj\" \ - -- --sqlitefile=sqllite.db -User=btcpay -Group=btcpay -Type=simple -PIDFile=/run/btcpayserver/btcpayserver.pid -Restart=on-failure + BtcPayService -# Hardening measures -PrivateTmp=true -ProtectSystem=full -NoNewPrivileges=true -PrivateDevices=true - -[Install] -WantedBy=multi-user.target -" | sudo tee /etc/systemd/system/btcpayserver.service sudo systemctl enable btcpayserver - if [ "${state}" == "ready" ]; then echo "# Starting btcpayserver" sudo systemctl start btcpayserver @@ -593,14 +615,14 @@ WantedBy=multi-user.target while [ ! -f "/home/btcpay/.btcpayserver/Main/settings.config" ]; do echo "# Waiting for btcpayserver to start - CTRL+C to abort .." sleep 30 - hasFailed=$(sudo systemctl status btcpayserver | grep -c "Active: failed") + hasFailed=$(sudo systemctl status btcpayserver | grep -c "Active: failed") if [ ${hasFailed} -eq 1 ]; then echo "# seems like starting btcpayserver service has failed - see: systemctl status btcpayserver" echo "# maybe report here: https://github.com/rootzoll/raspiblitz/issues/214" fi done else - echo "# Because the system is not 'ready' the service 'btcpayserver' will not be started at this point .. its enabled and will start on next reboot" + echo "# Because the system is not 'ready' the service 'btcpayserver' will not be started at this point .. it is enabled and will start on next reboot" fi sudo -u btcpay mkdir -p /home/btcpay/.btcpayserver/Main/ @@ -634,7 +656,7 @@ if [ "$1" = "0" ] || [ "$1" = "off" ]; then else if (whiptail --title " DELETE DATA? " --yesno "Do you want to delete\nthe BTCPay Server Data?" 8 30); then deleteData=1 - else + else deleteData=0 fi fi @@ -684,7 +706,10 @@ if [ "$1" = "0" ] || [ "$1" = "off" ]; then else echo "# keeping data" fi - echo "# OK BTCPayServer deactivaed." + echo "# OK BTCPayServer deactivated." + + echo "# delete the btcpay user home directory" + sudo userdel -rf btcpay 2>/dev/null # needed for API/WebUI as signal that install ran thru echo "result='OK'" @@ -693,6 +718,11 @@ if [ "$1" = "0" ] || [ "$1" = "off" ]; then fi if [ "$1" = "update" ]; then + + # prevent the git error 'detected dubious ownership in repository' + git config --global --add safe.directory /home/btcpay/NBXplorer + git config --global --add safe.directory /home/btcpay/btcpayserver + echo "# Update NBXplorer" cd /home/btcpay || exit 1 cd NBXplorer || exit 1 @@ -712,7 +742,7 @@ if [ "$1" = "update" ]; then TAG=$(git tag | sort -V | tail -1) echo "# Up-to-date on version $TAG" else - echo "# Pulling latest changes..." + echo "# Pulling the latest changes..." sudo -u btcpay git pull -p TAG=$(git tag | sort -V | tail -1) echo "# Reset to the latest release tag: $TAG" @@ -720,22 +750,24 @@ if [ "$1" = "update" ]; then PGPsigner="nicolasdorier" PGPpubkeyLink="https://keybase.io/nicolasdorier/pgp_keys.asc" PGPpubkeyFingerprint="AB4CFA9895ACA0DBE27F6B346618763EF09186FE" + sudo -u btcpay /home/admin/config.scripts/blitz.git-verify.sh \ - "${PGPsigner}" "${PGPpubkeyLink}" "${PGPpubkeyFingerprint}" || exit 1 - echo "# Build NBXplorer ..." + "${PGPsigner}" "${PGPpubkeyLink}" "${PGPpubkeyFingerprint}" || exit 1 + + echo "# Build NBXplorer $TAG" # from the build.sh with path sudo systemctl stop nbxplorer - sudo -u btcpay /home/btcpay/dotnet/dotnet build -c Release NBXplorer/NBXplorer.csproj + sudo -u btcpay /home/btcpay/dotnet/dotnet build -c Release NBXplorer/NBXplorer.csproj || ( + echo "# Build failed" + exit 1 + ) # whitelist localhost in bitcoind - if ! sudo grep -Eq "^whitelist=127.0.0.1" /mnt/hdd/bitcoin/bitcoin.conf;then + if ! sudo grep -Eq "^whitelist=127.0.0.1" /mnt/hdd/bitcoin/bitcoin.conf; then echo "whitelist=127.0.0.1" | sudo tee -a /mnt/hdd/bitcoin/bitcoin.conf echo "# Restarting bitcoind" sudo systemctl restart bitcoind fi - # POSTGRES - postgresConfig - NBXplorerConfig sudo systemctl start nbxplorer @@ -747,6 +779,9 @@ if [ "$1" = "update" ]; then BtcPayConfig + # always update the btcpayserver.service + BtcPayService + echo "# Update BTCPayServer" cd /home/btcpay || exit 1 cd btcpayserver || exit 1 @@ -775,10 +810,13 @@ if [ "$1" = "update" ]; then # https://github.com/rootzoll/raspiblitz/issues/3025 # sudo -u btcpay /home/admin/config.scripts/blitz.git-verify.sh \ # "${PGPsigner}" "${PGPpubkeyLink}" "${PGPpubkeyFingerprint}" || exit 1 - echo "# Build BTCPayServer ..." + echo "# Build BTCPayServer $TAG" # from the build.sh with path sudo systemctl stop btcpayserver - sudo -u btcpay /home/btcpay/dotnet/dotnet build -c Release /home/btcpay/btcpayserver/BTCPayServer/BTCPayServer.csproj + sudo -u btcpay /home/btcpay/dotnet/dotnet build -c Release /home/btcpay/btcpayserver/BTCPayServer/BTCPayServer.csproj || ( + echo "# Build failed" + exit 1 + ) sudo systemctl start btcpayserver echo "# Updated BTCPayServer to $TAG" fi diff --git a/home.admin/config.scripts/bonus.postgresql.sh b/home.admin/config.scripts/bonus.postgresql.sh index 1a085abfb..ed5fd10bb 100644 --- a/home.admin/config.scripts/bonus.postgresql.sh +++ b/home.admin/config.scripts/bonus.postgresql.sh @@ -2,12 +2,12 @@ # command info if [ $# -eq 0 ] || [ "$1" = "-h" ] || [ "$1" = "-help" ]; then - echo "config script to install PostgreSQL" - echo "bonus.postgresql.sh [on|off]" - echo "bonus.postgresql.sh [backup] [database]" - echo "bonus.postgresql.sh [restore] [database] [user] [password]" - echo "bonus.postgresql.sh [info]" - exit 1 + echo "config script to install PostgreSQL" + echo "bonus.postgresql.sh [on|off]" + echo "bonus.postgresql.sh [backup] [database]" + echo "bonus.postgresql.sh [restore] [database] [user] [password]" + echo "bonus.postgresql.sh [info]" + exit 1 fi command=$1 @@ -36,22 +36,22 @@ if [ "$command" = "1" ] || [ "$command" = "on" ]; then fi fix_postgres=0 - if [ -L $postgres_datadir ] ; then - if [ -e $postgres_datadir ] ; then - echo "# Good link in $postgres_datadir" - else - echo "# Broken link in $postgres_datadir" - fix_postgres=1 - fi - elif [ -e $postgres_datadir ] ; then - echo "# Not a link in $postgres_datadir" - fix_postgres=1 + if [ -L $postgres_datadir ]; then + if [ -e $postgres_datadir ]; then + echo "# Good link in $postgres_datadir" + else + echo "# Broken link in $postgres_datadir" + fix_postgres=1 + fi + elif [ -e $postgres_datadir ]; then + echo "# Not a link in $postgres_datadir" + fix_postgres=1 else - echo "# Missing Link in $postgres_datadir" - fix_postgres=1 + echo "# Missing Link in $postgres_datadir" + fix_postgres=1 fi - if [ fix_postgres = 1 ] || [ ! -d /mnt/hdd/app-data/postgresql ]; then + if [ ${fix_postgres} = 1 ] || [ ! -d /mnt/hdd/app-data/postgresql ]; then echo "# Move the PostgreSQL data to /mnt/hdd/app-data/postgresql" sudo systemctl stop postgresql 2>/dev/null sudo rsync -av $postgres_datadir /mnt/hdd/app-data @@ -67,9 +67,8 @@ if [ "$command" = "1" ] || [ "$command" = "on" ]; then # wait for the postgres server to start count=0 count_max=30 - while ! nc -zv 127.0.0.1 5432 2>/dev/null; - do - count=`expr $count + 1` + while ! nc -zv 127.0.0.1 5432 2>/dev/null; do + count=$((count + 1)) echo "sleep $count/$count_max" sleep 1 if [ $count = $count_max ]; then @@ -103,16 +102,16 @@ fi # backup backup_target="/mnt/hdd/app-data/backup/$db_name" -backup_file="${db_name}_`date +%d`-`date +%m`-`date +%Y`_`date +%H`-`date +%M`_dump" +backup_file="${db_name}_$(date +%d)-$(date +%m)-$(date +%Y)_$(date +%H)-$(date +%M)_dump" if [ ! -d $backup_target ]; then - sudo mkdir -p $backup_target 1>&2 + sudo mkdir -p $backup_target 1>&2 fi # https://www.postgresql.org/docs/current/backup-dump.html if [ "$command" = "backup" ] && [ "$db_name" != "" ]; then echo "*** BACKUP POSTGRESQL $db_name ***" - sudo -u postgres pg_dump $db_name > $backup_target/${backup_file}.sql || exit 1 + sudo -u postgres pg_dump $db_name >$backup_target/${backup_file}.sql || exit 1 # Delete old backups (keep last 3 backups) sudo chown -R admin:admin $backup_target ls -tp $backup_target/*.sql | grep -v '/$' | tail -n +4 | tr '\n' '\0' | xargs -0 rm -- 2>/dev/null @@ -154,7 +153,7 @@ if [ "$command" = "restore" ] && [ "$db_name" != "" ] && [ "$db_user" != "" ] && echo "# Import SQL Dump" sudo mkdir -p $backup_target/logs 1>&2 sudo chown -R postgres:postgres $backup_file - sudo -u postgres psql $db_name < ${backup_file} > $backup_target/logs/sql_import.log || exit 1 + sudo -u postgres psql $db_name <${backup_file} >$backup_target/logs/sql_import.log || exit 1 echo "$backup_target/sql_import.log written" echo "OK - database $db_name restored from ${backup_file}" exit 0 @@ -176,4 +175,4 @@ if [ "$command" = "info" ]; then fi echo "FAIL - Unknown Parameter $command" -exit 1 \ No newline at end of file +exit 1