fulcrum update to v1.9.6, simple cli update option, new filenames (#4217)

This commit is contained in:
openoms 2023-11-18 09:19:15 +01:00 committed by GitHub
parent 3ca368fbbe
commit 041574a1ee
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1,17 +1,69 @@
#!/bin/bash
# https://github.com/cculianu/Fulcrum/releases
fulcrumVersion="1.9.1"
fulcrumVersion="1.9.6"
# command info
if [ $# -eq 0 ] || [ "$1" = "-h" ] || [ "$1" = "-help" ]; then
echo "config script to switch the Fulcrum electrum server on or off"
echo "config script to switch the Fulcrum electrum server on, off or update to the latest release"
# echo "bonus.fulcrum.sh status [?showAddress]"
echo "bonus.fulcrum.sh [on|off]"
echo "bonus.fulcrum.sh [on|off|update]"
echo "installs the version $fulcrumVersion"
exit 1
fi
function downloadAndVerifyBinary() {
cd /home/fulcrum || exit 1
# download the prebuilt binary
sudo -u fulcrum wget https://github.com/cculianu/Fulcrum/releases/download/v${fulcrumVersion}/Fulcrum-${fulcrumVersion}-${build}.tar.gz || exit 1
sudo -u fulcrum wget https://github.com/cculianu/Fulcrum/releases/download/v${fulcrumVersion}/Fulcrum-${fulcrumVersion}-sha256sums.txt || exit 1
sudo -u fulcrum wget https://github.com/cculianu/Fulcrum/releases/download/v${fulcrumVersion}/Fulcrum-${fulcrumVersion}-sha256sums.txt.asc || exit 1
# Verify
# get the PGP key
curl https://raw.githubusercontent.com/Electron-Cash/keys-n-hashes/master/pubkeys/calinkey.txt | sudo -u fulcrum gpg --import
echo "# Look for 'Good signature'"
sudo -u fulcrum gpg --verify Fulcrum-${fulcrumVersion}-sha256sums.txt.asc || exit 1
echo "# Look for 'OK'"
sudo -u fulcrum sha256sum -c Fulcrum-${fulcrumVersion}-sha256sums.txt --ignore-missing || exit 1
echo "# Unpack"
sudo -u fulcrum tar -xvf Fulcrum-${fulcrumVersion}-${build}.tar.gz
}
function createSystemdService() {
echo "# Create a systemd service"
echo "\
[Unit]
Description=Fulcrum
After=network.target bitcoind.service
StartLimitBurst=2
StartLimitIntervalSec=20
[Service]
ExecStart=/home/fulcrum/Fulcrum-${fulcrumVersion}-${build}/Fulcrum /home/fulcrum/.fulcrum/fulcrum.conf
KillSignal=SIGINT
User=fulcrum
LimitNOFILE=8192
TimeoutStopSec=300
RestartSec=5
Restart=on-failure
[Install]
WantedBy=multi-user.target
" | sudo tee /etc/systemd/system/fulcrum.service
}
# set the platform
if [ $(uname -m) = "aarch64" ]; then
build="arm64-linux"
elif [ $(uname -m) = "x86_64" ]; then
build="x86_64-linux-ub16"
fi
if [ "$1" = on ]; then
# ?wait until txindex finishes?
/home/admin/config.scripts/network.txindex.sh on
@ -31,34 +83,10 @@ if [ "$1" = on ]; then
# create a dedicated user
sudo adduser --system --group --home /home/fulcrum fulcrum
cd /home/fulcrum || exit 1
sudo apt install -y libssl-dev # was needed on Debian Bullseye
# set the platform
if [ $(uname -m) = "aarch64" ]; then
build="arm64-linux"
elif [ $(uname -m) = "x86_64" ]; then
build="x86_64-linux-ub16"
fi
# download the prebuilt binary
sudo -u fulcrum wget https://github.com/cculianu/Fulcrum/releases/download/v${fulcrumVersion}/Fulcrum-${fulcrumVersion}-${build}.tar.gz
sudo -u fulcrum wget https://github.com/cculianu/Fulcrum/releases/download/v${fulcrumVersion}/Fulcrum-${fulcrumVersion}-${build}.tar.gz.asc
sudo -u fulcrum wget https://github.com/cculianu/Fulcrum/releases/download/v${fulcrumVersion}/Fulcrum-${fulcrumVersion}-${build}.tar.gz.sha256sum
# Verify
# get the PGP key
curl https://raw.githubusercontent.com/Electron-Cash/keys-n-hashes/master/pubkeys/calinkey.txt | sudo -u fulcrum gpg --import
echo "# Look for 'Good signature'"
sudo -u fulcrum gpg --verify Fulcrum-${fulcrumVersion}-${build}.tar.gz.asc || exit 1
echo "# Look for 'OK'"
sudo -u fulcrum sha256sum -c Fulcrum-${fulcrumVersion}-${build}.tar.gz.sha256sum --ignore-missing || exit 1
echo "# Unpack"
sudo -u fulcrum tar -xvf Fulcrum-${fulcrumVersion}-${build}.tar.gz
downloadAndVerifyBinary
echo "# Create the database directory in /mnt/hdd/app-storage (on the disk)"
sudo mkdir -p /mnt/hdd/app-storage/fulcrum/db
@ -95,26 +123,7 @@ tcp = 0.0.0.0:50021
# ssl via nginx
" | sudo -u fulcrum tee /home/fulcrum/.fulcrum/fulcrum.conf
echo "# Create a systemd service"
echo "\
[Unit]
Description=Fulcrum
After=network.target bitcoind.service
StartLimitBurst=2
StartLimitIntervalSec=20
[Service]
ExecStart=/home/fulcrum/Fulcrum-${fulcrumVersion}-${build}/Fulcrum /home/fulcrum/.fulcrum/fulcrum.conf
KillSignal=SIGINT
User=fulcrum
LimitNOFILE=8192
TimeoutStopSec=300
RestartSec=5
Restart=on-failure
[Install]
WantedBy=multi-user.target
" | sudo tee /etc/systemd/system/fulcrum.service
createSystemdService
sudo systemctl enable fulcrum
if [ "${state}" == "ready" ]; then
@ -186,9 +195,30 @@ stream {
echo "sudo journalctl -fu fulcrum"
fi
if [ "$1" = update ]; then
# get the latest release from github without the leading 'v'
fulcrumVersion=$(curl --silent https://api.github.com/repos/cculianu/Fulcrum/releases/latest | jq -r '.tag_name | ltrimstr("v")')
echo "# The latest release is: $fulcrumVersion"
# check if the binary is already installed
if [ -f /home/fulcrum/Fulcrum-${fulcrumVersion}-${build}/Fulcrum ]; then
echo "# Fulcrum-${fulcrumVersion}-${build} is already installed"
exit 0
else
echo "# Installing Fulcrum-${fulcrumVersion}-${build}"
fi
downloadAndVerifyBinary
sudo systemctl disable --now fulcrum
createSystemdService
sudo systemctl enable --now fulcrum
fi
if [ "$1" = off ]; then
sudo systemctl disable fulcrum
sudo systemctl stop fulcrum
sudo systemctl disable --now fulcrum
sudo userdel -rf fulcrum
# remove Tor service
/home/admin/config.scripts/tor.onion-service.sh off fulcrum