mirror of
https://github.com/raspiblitz/raspiblitz.git
synced 2025-11-19 02:22:24 +01:00
Compare commits
13 Commits
4872-proxm
...
v1.11.4
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
249c00f25b | ||
|
|
8aba30725f | ||
|
|
37df1b354d | ||
|
|
ff04883422 | ||
|
|
b79eebf0ff | ||
|
|
f48c311401 | ||
|
|
805131a922 | ||
|
|
d5c010a424 | ||
|
|
3cc6910832 | ||
|
|
f4bd395282 | ||
|
|
b74c604934 | ||
|
|
f8631ab45a | ||
|
|
7458494cc2 |
28
CHANGES.md
28
CHANGES.md
@@ -1,5 +1,7 @@
|
|||||||
## What's new in Version 1.12.0 of RaspiBlitz?
|
## What's new in Version 1.12.0 of RaspiBlitz?
|
||||||
|
|
||||||
|
Work In Progress
|
||||||
|
|
||||||
Features:
|
Features:
|
||||||
|
|
||||||
- Update: RaspberryOS arm64 base image 2024-11-19 (Debian 12 Bookworm) [details](https://downloads.raspberrypi.com/raspios_full_arm64/release_notes.txt)
|
- Update: RaspberryOS arm64 base image 2024-11-19 (Debian 12 Bookworm) [details](https://downloads.raspberrypi.com/raspios_full_arm64/release_notes.txt)
|
||||||
@@ -7,6 +9,24 @@ Features:
|
|||||||
- Update: Specter Desktop 2.0.5 [details](https://github.com/cryptoadvance/specter-desktop/releases/tag/v2.0.5)
|
- Update: Specter Desktop 2.0.5 [details](https://github.com/cryptoadvance/specter-desktop/releases/tag/v2.0.5)
|
||||||
- Update: Fulcrum Electrum server v1.11.1 (CLI install script with status menu) [details](https://github.com/cculianu/Fulcrum/releases/tag/v1.11.1)
|
- Update: Fulcrum Electrum server v1.11.1 (CLI install script with status menu) [details](https://github.com/cculianu/Fulcrum/releases/tag/v1.11.1)
|
||||||
|
|
||||||
|
## What's new in Version 1.11.4 of RaspiBlitz?
|
||||||
|
|
||||||
|
Small AlbyHub feature release with security/bug-fixing relevant updates.
|
||||||
|
|
||||||
|
- New: AlbyHub v1.12.0 (SSH & WebUI) [details](https://github.com/getAlby)
|
||||||
|
- New: SSH-Option to turn on/off LNbits AdminUI [details](https://github.com/raspiblitz/raspiblitz/issues/4876)
|
||||||
|
- Update: LND v0.18.3-beta [details](https://github.com/lightningnetwork/lnd/releases/tag/v0.18.3-beta)
|
||||||
|
- Update: Core Lightning v24.11 [details](https://github.com/ElementsProject/lightning/releases/tag/v24.11)
|
||||||
|
|
||||||
|
Download RaspberryPi images:
|
||||||
|
|
||||||
|
- Minimal:
|
||||||
|
https://raspiblitz.fulmo.org/images/raspiblitz-min-v1.11.4-2024-12-24.img.gz<br>
|
||||||
|
SHA-256-Checksum: 3d874e8e2518bb9db79df196d1dd7e6d567a0608a3df568cadef87a77b4d3841
|
||||||
|
|
||||||
|
- Fatpack:
|
||||||
|
https://raspiblitz.fulmo.org/images/raspiblitz-fat-v1.11.4-2024-12-24.img.gz<br>
|
||||||
|
SHA-256-Checksum: 31877d0085c20f34bf2bedeeec6bd4abc108595a4b0985d273ddaba2b0fbe654
|
||||||
|
|
||||||
## What's new in Version 1.11.3 of RaspiBlitz?
|
## What's new in Version 1.11.3 of RaspiBlitz?
|
||||||
|
|
||||||
@@ -33,12 +53,12 @@ Containing Features:
|
|||||||
|
|
||||||
Download RaspberryPi images:
|
Download RaspberryPi images:
|
||||||
|
|
||||||
- Minimal:
|
- Minimal:
|
||||||
https://raspiblitz.fulmo.org/images/raspiblitz-min-v1.11.3-2024-11-03.img.gz
|
https://raspiblitz.fulmo.org/images/raspiblitz-min-v1.11.3-2024-11-03.img.gz<br>
|
||||||
SHA-256-Checksum: 199fd4e671a49feb39420156031201c9118121d33ec6f9990fb9724de5be02c4
|
SHA-256-Checksum: 199fd4e671a49feb39420156031201c9118121d33ec6f9990fb9724de5be02c4
|
||||||
|
|
||||||
- Fatpack:
|
- Fatpack:
|
||||||
https://raspiblitz.fulmo.org/images/raspiblitz-fat-v1.11.3-2024-11-03.img.gz
|
https://raspiblitz.fulmo.org/images/raspiblitz-fat-v1.11.3-2024-11-03.img.gz<br>
|
||||||
SHA-256-Checksum: 65e523562768b21dcda85b96003c559a665015889402a3cea27638e6c5e290bd
|
SHA-256-Checksum: 65e523562768b21dcda85b96003c559a665015889402a3cea27638e6c5e290bd
|
||||||
|
|
||||||
## What's new in Version 1.11.2 of RaspiBlitz?
|
## What's new in Version 1.11.2 of RaspiBlitz?
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ if [ "${lightning}" == "lnd" ] || [ "${lnd}" == "on" ]; then
|
|||||||
OPTIONS+=(ra 'LND RTL Webinterface' ${rtlWebinterface})
|
OPTIONS+=(ra 'LND RTL Webinterface' ${rtlWebinterface})
|
||||||
OPTIONS+=(ta 'LND ThunderHub' ${thunderhub})
|
OPTIONS+=(ta 'LND ThunderHub' ${thunderhub})
|
||||||
OPTIONS+=(la 'LND LIT (loop, pool, faraday)' ${lit})
|
OPTIONS+=(la 'LND LIT (loop, pool, faraday)' ${lit})
|
||||||
OPTIONS+=(ah 'LND AlbyHub (early access)' ${albyhub})
|
OPTIONS+=(ah 'LND AlbyHub (App Connector)' ${albyhub})
|
||||||
OPTIONS+=(gb 'LND LNDg (auto-rebalance, auto-fees)' ${lndg})
|
OPTIONS+=(gb 'LND LNDg (auto-rebalance, auto-fees)' ${lndg})
|
||||||
OPTIONS+=(oa 'LND Balance of Satoshis' ${bos})
|
OPTIONS+=(oa 'LND Balance of Satoshis' ${bos})
|
||||||
OPTIONS+=(ya 'LND PyBLOCK' ${pyblock})
|
OPTIONS+=(ya 'LND PyBLOCK' ${pyblock})
|
||||||
@@ -627,7 +627,7 @@ else
|
|||||||
echo "Publicpool setting unchanged."
|
echo "Publicpool setting unchanged."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# publicpool process choice
|
# albyhub process choice
|
||||||
choice="off"; check=$(echo "${CHOICES}" | grep -c "ah")
|
choice="off"; check=$(echo "${CHOICES}" | grep -c "ah")
|
||||||
if [ ${check} -eq 1 ]; then choice="on"; fi
|
if [ ${check} -eq 1 ]; then choice="on"; fi
|
||||||
if [ "${albyhub}" != "${choice}" ]; then
|
if [ "${albyhub}" != "${choice}" ]; then
|
||||||
|
|||||||
@@ -3,93 +3,42 @@
|
|||||||
# load raspiblitz config data (with backup from old config)
|
# load raspiblitz config data (with backup from old config)
|
||||||
source /home/admin/raspiblitz.info
|
source /home/admin/raspiblitz.info
|
||||||
source /mnt/hdd/raspiblitz.conf
|
source /mnt/hdd/raspiblitz.conf
|
||||||
if [ ${#network} -eq 0 ]; then network=$(cat .network); fi
|
if [ ${#network} -eq 0 ]; then network=`cat .network`; fi
|
||||||
if [ ${#network} -eq 0 ]; then network="bitcoin"; fi
|
if [ ${#network} -eq 0 ]; then network="bitcoin"; fi
|
||||||
if [ ${#chain} -eq 0 ]; then
|
if [ ${#chain} -eq 0 ]; then
|
||||||
chain=$(${network}-cli getblockchaininfo | jq -r '.chain')
|
chain=$(${network}-cli getblockchaininfo | jq -r '.chain')
|
||||||
fi
|
fi
|
||||||
|
|
||||||
source <(/home/admin/config.scripts/network.aliases.sh getvars $1 $2)
|
# precheck: AutoPilot
|
||||||
|
if [ "${autoPilot}" = "on" ]; then
|
||||||
if [ $LNTYPE = cl ];then
|
dialog --title 'Info' --msgbox 'You need to turn OFF the LND AutoPilot first,\nso that closed channels are not opening up again.\nYou find the AutoPilot -----> SERVICES section' 7 55
|
||||||
# https://lightning.readthedocs.io/lightning-close.7.html
|
exit 1
|
||||||
peerlist=$($lightningcli_alias listpeers|grep '"id":'|awk '{print $2}'|cut -d, -f1)
|
|
||||||
# to display
|
|
||||||
function cl_closeall_command {
|
|
||||||
for i in $peerlist; do
|
|
||||||
# close id [unilateraltimeout] [destination] [fee_negotiation_step] [*wrong_funding*]
|
|
||||||
echo "$lightningcli_alias close $i 30;"
|
|
||||||
done
|
|
||||||
}
|
|
||||||
command=$(cl_closeall_command)
|
|
||||||
# to run
|
|
||||||
function cl_closeall {
|
|
||||||
for i in $peerlist; do
|
|
||||||
# close id [unilateraltimeout] [destination] [fee_negotiation_step] [*wrong_funding*]
|
|
||||||
echo "# Attempting a mutual close one-by-one with a 30 seconds timeout"
|
|
||||||
$lightningcli_alias close $i 30
|
|
||||||
done
|
|
||||||
}
|
|
||||||
elif [ $LNTYPE = lnd ];then
|
|
||||||
# precheck: AutoPilot
|
|
||||||
if [ "${autoPilot}" = "on" ]; then
|
|
||||||
dialog --title 'Info' --msgbox 'You need to turn OFF the LND AutoPilot first,\nso that closed channels are not opening up again.\nYou find the AutoPilot -----> SERVICES section' 7 55
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
command="$lncli_alias closeallchannels --force"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
command="lncli --chain=${network} --network=${chain}net closeallchannels --force"
|
||||||
|
|
||||||
clear
|
clear
|
||||||
echo
|
echo "***********************************"
|
||||||
echo "# Precheck" # PRECHECK) check if chain is in sync
|
echo "Closing All Channels (EXPERIMENTAL)"
|
||||||
if [ $LNTYPE = cl ];then
|
echo "***********************************"
|
||||||
BLOCKHEIGHT=$($bitcoincli_alias getblockchaininfo|grep blocks|awk '{print $2}'|cut -d, -f1)
|
echo ""
|
||||||
CLHEIGHT=$($lightningcli_alias getinfo | jq .blockheight)
|
echo "COMMAND LINE: "
|
||||||
if [ $BLOCKHEIGHT -eq $CLHEIGHT ];then
|
|
||||||
chainOutSync=0
|
|
||||||
else
|
|
||||||
chainOutSync=1
|
|
||||||
fi
|
|
||||||
elif [ $LNTYPE = lnd ];then
|
|
||||||
chainOutSync=$($lncli_alias getinfo | grep '"synced_to_chain": false' -c)
|
|
||||||
fi
|
|
||||||
if [ ${chainOutSync} -eq 1 ]; then
|
|
||||||
if [ $LNTYPE = cl ];then
|
|
||||||
echo "# FAIL PRECHECK - '${netprefix}lightning-cli getinfo' blockheight is different from '${netprefix}bitcoind getblockchaininfo' - wait until chain is sync "
|
|
||||||
elif [ $LNTYPE = lnd ];then
|
|
||||||
echo "# FAIL PRECHECK - ${netprefix}lncli getinfo shows 'synced_to_chain': false - wait until chain is sync "
|
|
||||||
fi
|
|
||||||
echo
|
|
||||||
echo "# PRESS ENTER to return to menu"
|
|
||||||
read key
|
|
||||||
exit 0
|
|
||||||
else
|
|
||||||
echo "# OK - the chain is synced"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# raise high focus on lightning channels next 1 hour
|
|
||||||
/home/admin/_cache.sh focus ln_${LNTYPE}_${CHAIN}_channels_active 0 3600
|
|
||||||
/home/admin/_cache.sh focus ln_${LNTYPE}_${CHAIN}_channels_inactive 0 3600
|
|
||||||
/home/admin/_cache.sh focus ln_${LNTYPE}_${CHAIN}_channels_total 0 3600
|
|
||||||
|
|
||||||
echo "#####################################"
|
|
||||||
echo "# Closing All Channels (EXPERIMENTAL)"
|
|
||||||
echo "#####################################"
|
|
||||||
echo
|
|
||||||
echo "# COMMAND LINE: "
|
|
||||||
echo $command
|
echo $command
|
||||||
echo
|
echo ""
|
||||||
echo "# RESULT:"
|
echo "RESULT:"
|
||||||
|
|
||||||
|
# PRECHECK) check if chain is in sync
|
||||||
|
chainInSync=$(lncli --chain=${network} --network=${chain}net getinfo | grep '"synced_to_chain": true' -c)
|
||||||
|
if [ ${chainInSync} -eq 0 ]; then
|
||||||
|
command=""
|
||||||
|
result="FAIL PRECHECK - lncli getinfo shows 'synced_to_chain': false - wait until chain is sync "
|
||||||
|
fi
|
||||||
|
|
||||||
# execute command
|
# execute command
|
||||||
if [ ${#command} -gt 0 ]; then
|
if [ ${#command} -gt 0 ]; then
|
||||||
if [ $LNTYPE = cl ];then
|
${command}
|
||||||
cl_closeall
|
|
||||||
elif [ $LNTYPE = lnd ];then
|
|
||||||
${command}
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo
|
echo ""
|
||||||
echo "# OK - please recheck if channels really closed"
|
echo "OK - please recheck if channels really closed"
|
||||||
sleep 5
|
sleep 5
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
# RaspiBlitz Version - always [major].[main].[sub] (sub can be a string like '2rc1')
|
# RaspiBlitz Version - always [major].[main].[sub] (sub can be a string like '2rc1')
|
||||||
codeVersion="1.11.3"
|
codeVersion="1.11.4"
|
||||||
codeRelease="dev"
|
codeRelease="dev"
|
||||||
# keep last line with comment ---> IF YOU HAVE A NEW VERSION BRANCH > EDIT ALSO build_sdcard.sh
|
# keep last line with comment ---> IF YOU HAVE A NEW VERSION BRANCH > EDIT ALSO build_sdcard.sh
|
||||||
Binary file not shown.
Binary file not shown.
@@ -67,23 +67,13 @@ if [ "${action}" == "fsexpand" ]; then
|
|||||||
if [ -x ${resizeRaspbian} ]; then
|
if [ -x ${resizeRaspbian} ]; then
|
||||||
echo "# RUNNING EXPAND RASPBERRYPI: ${resizeRaspbian}"
|
echo "# RUNNING EXPAND RASPBERRYPI: ${resizeRaspbian}"
|
||||||
sudo $resizeRaspbian --expand-rootfs 1>&2
|
sudo $resizeRaspbian --expand-rootfs 1>&2
|
||||||
|
sudo touch /forcefsck
|
||||||
echo "# DONE - please reboot"
|
echo "# DONE - please reboot"
|
||||||
else
|
else
|
||||||
echo "# FAIL to execute on ${baseimage}: ${resizeRaspbian}"
|
echo "# FAIL to execute on ${baseimage}: ${resizeRaspbian}"
|
||||||
echo "err='expand failed'"
|
echo "err='expand failed'"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
elif [ "${baseimage}" = "armbian" ]; then
|
|
||||||
resizeArmbian="/usr/lib/armbian/armbian-resize-filesystem"
|
|
||||||
if [ -x ${resizeArmbian} ]; then
|
|
||||||
echo "# RUNNING EXPAND ARMBIAN: ${resizeArmbian}"
|
|
||||||
sudo $resizeArmbian start 1>&2
|
|
||||||
echo "# DONE - please reboot"
|
|
||||||
else
|
|
||||||
echo "# FAIL to execute on ${baseimage}: ${resizeArmbian}"
|
|
||||||
echo "err='expand failed'"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
echo "#FAIL no implementation for: ${baseimage}"
|
echo "#FAIL no implementation for: ${baseimage}"
|
||||||
echo "err='missing implementation'"
|
echo "err='missing implementation'"
|
||||||
|
|||||||
@@ -131,6 +131,8 @@ sudo cp -a /home/blitzapi/blitz_web/build/* /home/admin/assets/nginx/www_public
|
|||||||
sudo chown admin:admin /home/admin/assets/nginx/www_public
|
sudo chown admin:admin /home/admin/assets/nginx/www_public
|
||||||
sudo rm -r /home/blitzapi/blitz_web/build/*
|
sudo rm -r /home/blitzapi/blitz_web/build/*
|
||||||
|
|
||||||
|
echo "* Adding Code&Compile for WEBUI-APP: ALBYHUB"
|
||||||
|
/home/admin/config.scripts/bonus.albyhub.sh install || exit 1
|
||||||
echo "* Adding Code&Compile for WEBUI-APP: LNBITS"
|
echo "* Adding Code&Compile for WEBUI-APP: LNBITS"
|
||||||
/home/admin/config.scripts/bonus.lnbits.sh install || exit 1
|
/home/admin/config.scripts/bonus.lnbits.sh install || exit 1
|
||||||
echo "* Adding Code&Compile for WEBUI-APP: JAM"
|
echo "* Adding Code&Compile for WEBUI-APP: JAM"
|
||||||
|
|||||||
@@ -98,6 +98,25 @@ sudo systemctl disable ssh
|
|||||||
sudo rm /etc/ssh/ssh_host_*
|
sudo rm /etc/ssh/ssh_host_*
|
||||||
echo "OK"
|
echo "OK"
|
||||||
|
|
||||||
|
# force locale - see #4861
|
||||||
|
# next major release should make sure to be set during sd build card
|
||||||
|
echo
|
||||||
|
echo "Forcing locales ..."
|
||||||
|
sudo sed -i '/^en_US.UTF-8/s/^#//' /etc/locale.gen
|
||||||
|
sudo sed -i '/^en_GB.UTF-8/s/^/#/' /etc/locale.gen
|
||||||
|
sudo locale-gen
|
||||||
|
echo -e "LANG=en_US.UTF-8\nLANGUAGE=en_US.UTF-8\nLC_ALL=en_US.UTF-8" | sudo tee /etc/default/locale > /dev/null
|
||||||
|
|
||||||
|
# make sure file system is clean and ready for release
|
||||||
|
echo
|
||||||
|
echo "fsck on first boot ..."
|
||||||
|
sudo touch /forcefsck
|
||||||
|
if [ -e /dev/mmcblk0 ]; then
|
||||||
|
echo "fsck on /dev/mmcblk0 ..."
|
||||||
|
sudo umount /dev/mmcblk0p1
|
||||||
|
sudo fsck -fy /dev/mmcblk0p1
|
||||||
|
fi
|
||||||
|
|
||||||
echo
|
echo
|
||||||
echo "Will shutdown now."
|
echo "Will shutdown now."
|
||||||
echo "Wait until Raspberry LEDs show no activity anymore."
|
echo "Wait until Raspberry LEDs show no activity anymore."
|
||||||
|
|||||||
@@ -1,105 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Just run this script once after a fresh sd card build
|
|
||||||
# to prepare the image for release as a downloadable sd card image
|
|
||||||
# call with parameter `-quick` to skip skip os update
|
|
||||||
|
|
||||||
# determine correct raspberrypi boot drive path (that easy to access when sd card is insert into laptop)
|
|
||||||
raspi_bootdir=""
|
|
||||||
if [ -d /boot/firmware ]; then
|
|
||||||
raspi_bootdir="/boot/firmware"
|
|
||||||
elif [ -d /boot ]; then
|
|
||||||
raspi_bootdir="/boot"
|
|
||||||
fi
|
|
||||||
echo "# raspi_bootdir(${raspi_bootdir})"
|
|
||||||
|
|
||||||
# write release info to to version file
|
|
||||||
echo "writing codeRelease commit ro version file:"
|
|
||||||
releaseCommit=$(git -C /home/admin/raspiblitz rev-parse --short HEAD)
|
|
||||||
sed -i 's/^codeRelease=".*"/codeRelease="${releaseCommit}"/' /home/admin/_version.info
|
|
||||||
cat /home/admin/_version.info
|
|
||||||
echo
|
|
||||||
|
|
||||||
# stop background services
|
|
||||||
sudo systemctl stop background.service
|
|
||||||
sudo systemctl stop background.scan.service
|
|
||||||
|
|
||||||
# remove stop flag (if exists)
|
|
||||||
echo "deleting stop flag .."
|
|
||||||
sudo rm ${raspi_bootdir}/stop 2>/dev/null
|
|
||||||
|
|
||||||
# cleaning logs
|
|
||||||
echo "deleting raspiblitz & system logs .."
|
|
||||||
sudo rm -rf /var/log/journal/* 2>/dev/null
|
|
||||||
sudo rm /var/log/redis/* 2>/dev/null
|
|
||||||
sudo rm /var/log/private/* 2>/dev/null
|
|
||||||
sudo rm /var/log/nginx/* 2>/dev/null
|
|
||||||
sudo rm /home/admin/*.log 2>/dev/null
|
|
||||||
logger -p info "****** RASPIBLITZ RELEASE ******"
|
|
||||||
echo "OK"
|
|
||||||
|
|
||||||
# clean raspiblitz.info toward the values set by sd card build script
|
|
||||||
echo "cleaning raspiblitz.info"
|
|
||||||
source /home/admin/raspiblitz.info
|
|
||||||
echo "baseimage=${baseimage}" > /home/admin/raspiblitz.info
|
|
||||||
echo "cpu=${cpu}" >> /home/admin/raspiblitz.info
|
|
||||||
echo "blitzapi=${blitzapi}" >> /home/admin/raspiblitz.info
|
|
||||||
echo "displayClass=${displayClass}" >> /home/admin/raspiblitz.info
|
|
||||||
|
|
||||||
# https://github.com/rootzoll/raspiblitz/issues/1371
|
|
||||||
echo
|
|
||||||
echo "deactivate local WIFI ..."
|
|
||||||
sudo nmcli radio wifi off
|
|
||||||
echo "OK"
|
|
||||||
|
|
||||||
# make sure that every install runs API with own secret
|
|
||||||
# https://github.com/raspiblitz/raspiblitz/issues/4469
|
|
||||||
echo
|
|
||||||
echo "deleting old API conf ..."
|
|
||||||
sudo rm /home/blitzapi/blitz_api/.env 2>/dev/null
|
|
||||||
REDIS_ENABLED=$(sudo systemctl is-enabled redis 2>/dev/null | grep -c enabled)
|
|
||||||
if [ ${REDIS_ENABLED} -gt 0 ]; then
|
|
||||||
echo "disable redis for initial start ..."
|
|
||||||
sudo systemctl stop redis 2>/dev/null
|
|
||||||
sudo systemctl disable redis 2>/dev/null
|
|
||||||
fi
|
|
||||||
echo "deleting redis data (if still there) ..."
|
|
||||||
sudo rm /var/lib/redis/dump.rdb 2>/dev/null
|
|
||||||
echo "OK"
|
|
||||||
|
|
||||||
# https://github.com/rootzoll/raspiblitz/issues/1068#issuecomment-599267503
|
|
||||||
echo
|
|
||||||
echo "reset DNS confs ..."
|
|
||||||
echo -e "nameserver 1.1.1.1\nnameserver 84.200.69.80" | sudo tee /etc/resolv.conf > /dev/null
|
|
||||||
echo "OK"
|
|
||||||
|
|
||||||
# make sure Tor respo signing keys are uptodate #4648
|
|
||||||
wget -qO- https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/torproject.gpg >/dev/null
|
|
||||||
|
|
||||||
# update system (only security updates with minimal risk of breaking changes)
|
|
||||||
if [ "$1" != "-quick" ]; then
|
|
||||||
echo
|
|
||||||
echo "update OS ..."
|
|
||||||
sudo apt-get update -y
|
|
||||||
sudo apt-get upgrade -o Dir::Etc::SourceList=/etc/apt/sources.list.d/security.list -y
|
|
||||||
sudo apt-get upgrade openssh-server -y
|
|
||||||
sudo dpkg --configure -a
|
|
||||||
else
|
|
||||||
echo
|
|
||||||
echo "skipping OS update ..."
|
|
||||||
fi
|
|
||||||
|
|
||||||
# SSH Pubkeys (make unique for every sd card image install)
|
|
||||||
echo
|
|
||||||
echo "deleting SSH Pub keys ..."
|
|
||||||
echo "keys will get recreated and sshd reactivated on fresh bootup, by _bootstrap.sh service"
|
|
||||||
sudo systemctl stop ssh
|
|
||||||
sudo systemctl disable ssh
|
|
||||||
sudo rm /etc/ssh/ssh_host_*
|
|
||||||
echo "OK"
|
|
||||||
|
|
||||||
echo
|
|
||||||
echo "Will shutdown now."
|
|
||||||
echo "Wait until Raspberry LEDs show no activity anymore."
|
|
||||||
echo "Then remove SD card and make an release image from it."
|
|
||||||
sudo shutdown now
|
|
||||||
@@ -7,7 +7,7 @@
|
|||||||
APPID="albyhub" # one-word lower-case no-specials
|
APPID="albyhub" # one-word lower-case no-specials
|
||||||
|
|
||||||
# https://github.com/getAlby/hub/releases
|
# https://github.com/getAlby/hub/releases
|
||||||
VERSION="1.10.4"
|
VERSION="1.12.0"
|
||||||
|
|
||||||
# port numbers the app should run on
|
# port numbers the app should run on
|
||||||
# delete if not an web app
|
# delete if not an web app
|
||||||
@@ -19,8 +19,10 @@ PORT_TOR_SSL="8032"
|
|||||||
# BASIC COMMANDLINE OPTIONS
|
# BASIC COMMANDLINE OPTIONS
|
||||||
if [ $# -eq 0 ] || [ "$1" = "-h" ] || [ "$1" = "-help" ]; then
|
if [ $# -eq 0 ] || [ "$1" = "-h" ] || [ "$1" = "-help" ]; then
|
||||||
echo "# bonus.${APPID}.sh status -> status information (key=value)"
|
echo "# bonus.${APPID}.sh status -> status information (key=value)"
|
||||||
echo "# bonus.${APPID}.sh on -> install the app"
|
echo "# bonus.${APPID}.sh install -> install the app"
|
||||||
echo "# bonus.${APPID}.sh off [delete-data] -> uninstall the app"
|
echo "# bonus.${APPID}.sh uninstall -> uninstall the app"
|
||||||
|
echo "# bonus.${APPID}.sh on -> activate the app"
|
||||||
|
echo "# bonus.${APPID}.sh off [delete-data] -> deactivate the app"
|
||||||
echo "# bonus.${APPID}.sh menu -> SSH menu dialog"
|
echo "# bonus.${APPID}.sh menu -> SSH menu dialog"
|
||||||
echo "# bonus.${APPID}.sh prestart -> prestart used by systemd"
|
echo "# bonus.${APPID}.sh prestart -> prestart used by systemd"
|
||||||
exit 1
|
exit 1
|
||||||
@@ -91,15 +93,16 @@ fi
|
|||||||
if [ "$1" = "status" ]; then
|
if [ "$1" = "status" ]; then
|
||||||
echo "appID='${APPID}'"
|
echo "appID='${APPID}'"
|
||||||
echo "version='${VERSION}'"
|
echo "version='${VERSION}'"
|
||||||
echo "isInstalled=${isInstalled}"
|
echo "installed=${isRunning}" # installed means towards webui on or off
|
||||||
echo "isRunning=${isRunning}"
|
|
||||||
if [ "${isInstalled}" == "1" ]; then
|
if [ "${isInstalled}" == "1" ]; then
|
||||||
echo "localIP='${localIP}'"
|
|
||||||
echo "portCLEAR=${PORT_CLEAR}"
|
|
||||||
echo "portSSL=${PORT_SSL}"
|
|
||||||
echo "localIP='${localIP}'"
|
echo "localIP='${localIP}'"
|
||||||
echo "toraddress='${toraddress}'"
|
echo "toraddress='${toraddress}'"
|
||||||
echo "fingerprint='${fingerprint}'"
|
echo "fingerprint='${fingerprint}'"
|
||||||
|
echo "httpPort='${PORT_CLEAR}'"
|
||||||
|
echo "httpsPort='${PORT_SSL}'"
|
||||||
|
echo "httpsForced='1'"
|
||||||
|
echo "httpsSelfsigned='1'"
|
||||||
|
echo "authMethod='userdefined'"
|
||||||
fi
|
fi
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
@@ -130,7 +133,7 @@ if [ "$1" = "menu" ]; then
|
|||||||
http://${localIP}:${PORT_CLEAR}\n
|
http://${localIP}:${PORT_CLEAR}\n
|
||||||
https://${localIP}:${PORT_SSL} with Fingerprint:
|
https://${localIP}:${PORT_SSL} with Fingerprint:
|
||||||
${fingerprint}\n
|
${fingerprint}\n
|
||||||
The Alby Hub password is managed seperate from RaspiBlitz - make sure to manage it safely.\n
|
The Alby Hub password is managed separate from RaspiBlitz - make sure to manage it safely.\n
|
||||||
"
|
"
|
||||||
|
|
||||||
# use whiptail to show SSH dialog & exit
|
# use whiptail to show SSH dialog & exit
|
||||||
@@ -140,22 +143,10 @@ The Alby Hub password is managed seperate from RaspiBlitz - make sure to manage
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
##########################
|
##########################
|
||||||
# ON / INSTALL
|
# INSTALL
|
||||||
##########################
|
##########################
|
||||||
|
|
||||||
if [ "$1" = "1" ] || [ "$1" = "on" ]; then
|
if [ "$1" = "install" ]; then
|
||||||
|
|
||||||
# dont run install if already installed
|
|
||||||
if [ ${isInstalled} -eq 1 ]; then
|
|
||||||
echo "# ${APPID}.service is already installed."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# check if lnd service is installed
|
|
||||||
if [ $(sudo ls /etc/systemd/system/lnd.service 2>/dev/null | grep -c 'lnd.service') -eq 0 ]; then
|
|
||||||
echo "error='LND needs to be installed'"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "# Installing ${APPID} ..."
|
echo "# Installing ${APPID} ..."
|
||||||
|
|
||||||
@@ -175,7 +166,7 @@ if [ "$1" = "1" ] || [ "$1" = "on" ]; then
|
|||||||
sudo wget -O albyhub-server.tar.bz2 https://github.com/getAlby/hub/releases/download/v$VERSION/albyhub-Server-Linux-aarch64.tar.bz2
|
sudo wget -O albyhub-server.tar.bz2 https://github.com/getAlby/hub/releases/download/v$VERSION/albyhub-Server-Linux-aarch64.tar.bz2
|
||||||
else
|
else
|
||||||
echo "# Downloading Alby Hub for x86"
|
echo "# Downloading Alby Hub for x86"
|
||||||
sudo wget -O albyhub-server.tar.bz2 https://github.com/getAlby/hub/releases/download/v$VERSION/albyhub-Server-Linux-x86_64.tar.bz2
|
sudo wget -O albyhub-server.tar.bz2 https://github.com/getAlby/hub/releases/download/v$VERSION/albyhub-Server-Linux-x86_64.tar.bz2
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# extract archives
|
# extract archives
|
||||||
@@ -187,9 +178,9 @@ if [ "$1" = "1" ] || [ "$1" = "on" ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# cleanup
|
# cleanup
|
||||||
rm -f albyhub-server.tar.bz2
|
sudo rm -f albyhub-server.tar.bz2
|
||||||
|
|
||||||
# Setze die Berechtigungen für das Verzeichnis und die Dateien
|
# set permissions
|
||||||
sudo chmod -R 755 /home/${APPID}/lib
|
sudo chmod -R 755 /home/${APPID}/lib
|
||||||
sudo chown -R root:root /home/${APPID}/lib
|
sudo chown -R root:root /home/${APPID}/lib
|
||||||
|
|
||||||
@@ -197,8 +188,40 @@ if [ "$1" = "1" ] || [ "$1" = "on" ]; then
|
|||||||
echo "/home/${APPID}/lib" | sudo tee /etc/ld.so.conf.d/${APPID}.conf
|
echo "/home/${APPID}/lib" | sudo tee /etc/ld.so.conf.d/${APPID}.conf
|
||||||
sudo ldconfig
|
sudo ldconfig
|
||||||
|
|
||||||
|
echo "# Install ${APPID} done"
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
##########################
|
||||||
|
# ON
|
||||||
|
##########################
|
||||||
|
|
||||||
|
if [ "$1" = "1" ] || [ "$1" = "on" ]; then
|
||||||
|
|
||||||
|
# dont run install if already installed
|
||||||
|
if [ ${isInstalled} -eq 1 ]; then
|
||||||
|
echo "# ${APPID}.service is already installed."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# check if lnd service is available (LND is needed as a base)
|
||||||
|
if [ $(sudo ls /etc/systemd/system/lnd.service 2>/dev/null | grep -c 'lnd.service') -eq 0 ]; then
|
||||||
|
echo "error='LND needs to be installed'"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# check if code is already installed
|
||||||
|
isInstalled=$(compgen -u | grep -c ${APPID})
|
||||||
|
if [ "${isInstalled}" == "0" ]; then
|
||||||
|
echo "# Installing code base & dependencies first .."
|
||||||
|
/home/admin/config.scripts/bonus.albyhub.sh install || { echo "error='install failed'"; exit 1; }
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "# ACTIVATE Alby-Hub"
|
||||||
|
|
||||||
# prepare data directory
|
# prepare data directory
|
||||||
sudo mkdir -p /mnt/hdd/app-data/${APPID}
|
sudo mkdir -p /mnt/hdd/app-data/${APPID} 2>/dev/null
|
||||||
sudo chown -R ${APPID}:${APPID} /mnt/hdd/app-data/${APPID}
|
sudo chown -R ${APPID}:${APPID} /mnt/hdd/app-data/${APPID}
|
||||||
|
|
||||||
# open the ports in the firewall
|
# open the ports in the firewall
|
||||||
@@ -207,7 +230,7 @@ if [ "$1" = "1" ] || [ "$1" = "on" ]; then
|
|||||||
sudo ufw allow ${PORT_SSL} comment "${APPID} HTTPS"
|
sudo ufw allow ${PORT_SSL} comment "${APPID} HTTPS"
|
||||||
|
|
||||||
# prepare env file
|
# prepare env file
|
||||||
echo "# prepare env file --> ${ENVFILE}"
|
echo "# prepare env file --> ${ENVFILE}"
|
||||||
sudo touch ${ENVFILE}
|
sudo touch ${ENVFILE}
|
||||||
sudo chown ${APPID}:${APPID} ${ENVFILE}
|
sudo chown ${APPID}:${APPID} ${ENVFILE}
|
||||||
sudo chmod 770 ${ENVFILE}
|
sudo chmod 770 ${ENVFILE}
|
||||||
@@ -229,7 +252,7 @@ ExecStartPre=-/home/admin/config.scripts/bonus.${APPID}.sh prestart
|
|||||||
EnvironmentFile=${ENVFILE}
|
EnvironmentFile=${ENVFILE}
|
||||||
ExecStart=/home/${APPID}/bin/${APPID}
|
ExecStart=/home/${APPID}/bin/${APPID}
|
||||||
# Hack to ensure Alby Hub never uses more than 90% CPU
|
# Hack to ensure Alby Hub never uses more than 90% CPU
|
||||||
CPUQuota=90%sudo
|
CPUQuota=90%sudo
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
@@ -245,8 +268,8 @@ WantedBy=multi-user.target
|
|||||||
# nginx configuration
|
# nginx configuration
|
||||||
# BACKGROUND is that the plain HTTP is served by your web app, but thru the nginx proxy it will be available
|
# BACKGROUND is that the plain HTTP is served by your web app, but thru the nginx proxy it will be available
|
||||||
# with (self-signed) HTTPS and with separate configs for Tor & Tor+HTTPS.
|
# with (self-signed) HTTPS and with separate configs for Tor & Tor+HTTPS.
|
||||||
|
|
||||||
echo "# setup nginx confing"
|
echo "# setup nginx config"
|
||||||
|
|
||||||
# write the HTTPS config
|
# write the HTTPS config
|
||||||
echo "
|
echo "
|
||||||
@@ -317,7 +340,10 @@ server {
|
|||||||
/home/admin/config.scripts/blitz.conf.sh set ${APPID} "on"
|
/home/admin/config.scripts/blitz.conf.sh set ${APPID} "on"
|
||||||
|
|
||||||
echo "# Monitor with: sudo journalctl -f -u ${APPID}"
|
echo "# Monitor with: sudo journalctl -f -u ${APPID}"
|
||||||
echo "# OK install done"
|
echo "# OK actvation done"
|
||||||
|
|
||||||
|
# needed for API/WebUI as signal that install ran thru
|
||||||
|
echo "result='OK'"
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -348,13 +374,6 @@ if [ "$1" = "0" ] || [ "$1" = "off" ]; then
|
|||||||
sudo ufw deny "${PORT_CLEAR}"
|
sudo ufw deny "${PORT_CLEAR}"
|
||||||
sudo ufw deny "${PORT_SSL}"
|
sudo ufw deny "${PORT_SSL}"
|
||||||
|
|
||||||
# remove libraries again
|
|
||||||
sudo rm /etc/ld.so.conf.d/albyhub.conf
|
|
||||||
sudo ldconfig
|
|
||||||
|
|
||||||
echo "# delete user and directories"
|
|
||||||
sudo userdel -rf ${APPID}
|
|
||||||
|
|
||||||
echo "# removing Tor hidden service (if active)"
|
echo "# removing Tor hidden service (if active)"
|
||||||
/home/admin/config.scripts/tor.onion-service.sh off ${APPID}
|
/home/admin/config.scripts/tor.onion-service.sh off ${APPID}
|
||||||
|
|
||||||
@@ -368,6 +387,32 @@ if [ "$1" = "0" ] || [ "$1" = "off" ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
echo "# OK - app should be uninstalled now"
|
echo "# OK - app should be uninstalled now"
|
||||||
|
# needed for API/WebUI as signal that install ran thru
|
||||||
|
echo "result='OK'"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
########################################
|
||||||
|
# UNINSTALL (remove from system)
|
||||||
|
########################################
|
||||||
|
|
||||||
|
if [ "$1" = "uninstall" ]; then
|
||||||
|
|
||||||
|
isActive=$(sudo ls /etc/systemd/system/${APPID}.service 2>/dev/null | grep -c '${APPID}.service')
|
||||||
|
if [ "${isActive}" != "0" ]; then
|
||||||
|
echo "# cannot uninstall if still 'on'"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# remove libraries again
|
||||||
|
sudo rm /etc/ld.so.conf.d/albyhub.conf
|
||||||
|
sudo ldconfig
|
||||||
|
|
||||||
|
# nuke user
|
||||||
|
sudo userdel -rf ${APPID} 2>/dev/null
|
||||||
|
|
||||||
|
echo "# uninstall ${APPID} done"
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
@@ -812,9 +812,6 @@ if [ "$1" = "0" ] || [ "$1" = "off" ]; then
|
|||||||
fi
|
fi
|
||||||
echo "# OK BTCPayServer deactivated."
|
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
|
# needed for API/WebUI as signal that install ran thru
|
||||||
echo "result='OK'"
|
echo "result='OK'"
|
||||||
|
|
||||||
|
|||||||
@@ -226,6 +226,24 @@ Consider adding a IP2TOR Bridge under OPTIONS."
|
|||||||
OPTIONS+=(MIGRATE-DB "Migrate SQLite to PostgreSQL database")
|
OPTIONS+=(MIGRATE-DB "Migrate SQLite to PostgreSQL database")
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Admin UI
|
||||||
|
activatedAdminUI=$(sudo grep -c "LNBITS_ADMIN_UI=true" $lnbitsConfig)
|
||||||
|
if [ ${activatedAdminUI} -eq 0 ]; then
|
||||||
|
OPTIONS+=(ADMINUI "Activate 'Admin UI'")
|
||||||
|
else
|
||||||
|
OPTIONS+=(ADMINUI "Deactivate 'Admin UI'")
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Allow New Accounts (only if AdminUI is OFF)
|
||||||
|
allowNewAccountsFalse=$(sudo grep -c "LNBITS_ALLOW_NEW_ACCOUNTS=false" $lnbitsConfig)
|
||||||
|
if [ ${activatedAdminUI} -eq 0 ]; then
|
||||||
|
if [ ${allowNewAccountsFalse} -eq 0 ]; then
|
||||||
|
OPTIONS+=(NEWACCOUNTS "Disable New Accounts")
|
||||||
|
else
|
||||||
|
OPTIONS+=(NEWACCOUNTS "Enable New Accounts")
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
WIDTH=66
|
WIDTH=66
|
||||||
CHOICE_HEIGHT=$(("${#OPTIONS[@]}/2+1"))
|
CHOICE_HEIGHT=$(("${#OPTIONS[@]}/2+1"))
|
||||||
HEIGHT=$((CHOICE_HEIGHT + 7))
|
HEIGHT=$((CHOICE_HEIGHT + 7))
|
||||||
@@ -286,6 +304,44 @@ Consider adding a IP2TOR Bridge under OPTIONS."
|
|||||||
read key
|
read key
|
||||||
exit 0
|
exit 0
|
||||||
;;
|
;;
|
||||||
|
ADMINUI)
|
||||||
|
clear
|
||||||
|
echo
|
||||||
|
if [ ${activatedAdminUI} -eq 0 ]; then
|
||||||
|
echo "Activate Admin UI"
|
||||||
|
sudo sed -i "/^LNBITS_ADMIN_UI=/d" $lnbitsConfig
|
||||||
|
sudo bash -c "echo 'LNBITS_ADMIN_UI=true' >> ${lnbitsConfig}"
|
||||||
|
else
|
||||||
|
echo "Deactivate Admin UI"
|
||||||
|
sudo sed -i "/^LNBITS_ADMIN_UI=/d" $lnbitsConfig
|
||||||
|
sudo bash -c "echo 'LNBITS_ADMIN_UI=false' >> ${lnbitsConfig}"
|
||||||
|
fi
|
||||||
|
echo "Restarting LNbits to activate new setting ..."
|
||||||
|
sudo systemctl restart lnbits
|
||||||
|
echo "PRESS ENTER to continue"
|
||||||
|
read key
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
NEWACCOUNTS)
|
||||||
|
clear
|
||||||
|
echo
|
||||||
|
if [ ${allowNewAccountsFalse} -eq 0 ]; then
|
||||||
|
echo "Disable New Accounts"
|
||||||
|
sudo sed -i "/^LNBITS_ALLOW_NEW_ACCOUNTS=/d" $lnbitsConfig
|
||||||
|
sudo sed -i "/^# LNBITS_ALLOW_NEW_ACCOUNTS=/d" $lnbitsConfig
|
||||||
|
sudo bash -c "echo 'LNBITS_ALLOW_NEW_ACCOUNTS=false' >> ${lnbitsConfig}"
|
||||||
|
else
|
||||||
|
echo "Enable New Accounts"
|
||||||
|
sudo sed -i "/^LNBITS_ALLOW_NEW_ACCOUNTS=/d" $lnbitsConfig
|
||||||
|
sudo sed -i "/^# LNBITS_ALLOW_NEW_ACCOUNTS=/d" $lnbitsConfig
|
||||||
|
sudo bash -c "echo 'LNBITS_ALLOW_NEW_ACCOUNTS=true' >> ${lnbitsConfig}"
|
||||||
|
fi
|
||||||
|
echo "Restarting LNbits to activate new setting ..."
|
||||||
|
sudo systemctl restart lnbits
|
||||||
|
echo "PRESS ENTER to continue"
|
||||||
|
read key
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
RESTORE)
|
RESTORE)
|
||||||
clear
|
clear
|
||||||
# check if backup exist
|
# check if backup exist
|
||||||
@@ -780,16 +836,17 @@ if [ "$1" = "1" ] || [ "$1" = "on" ]; then
|
|||||||
echo "# preparing env file"
|
echo "# preparing env file"
|
||||||
# delete old .env file or old symbolic link
|
# delete old .env file or old symbolic link
|
||||||
sudo rm /home/lnbits/lnbits/.env 2>/dev/null
|
sudo rm /home/lnbits/lnbits/.env 2>/dev/null
|
||||||
|
|
||||||
# make sure .env file exists at data drive
|
# make sure .env file exists at data drive
|
||||||
sudo -u lnbits touch $lnbitsConfig
|
if [ ! -f $lnbitsConfig ]; then
|
||||||
|
sudo -u lnbits touch $lnbitsConfig
|
||||||
|
sudo bash -c "echo 'LNBITS_ADMIN_UI=true' >> ${lnbitsConfig}"
|
||||||
|
fi
|
||||||
sudo chown lnbits:lnbits $lnbitsConfig
|
sudo chown lnbits:lnbits $lnbitsConfig
|
||||||
|
|
||||||
# crete symbolic link
|
# crete symbolic link
|
||||||
sudo -u lnbits ln -s $lnbitsConfig /home/lnbits/lnbits/.env
|
sudo -u lnbits ln -s $lnbitsConfig /home/lnbits/lnbits/.env
|
||||||
|
|
||||||
# activate admin user
|
|
||||||
sudo sed -i "/^LNBITS_ADMIN_UI=/d" $lnbitsConfig
|
|
||||||
sudo bash -c "echo 'LNBITS_ADMIN_UI=true' >> ${lnbitsConfig}"
|
|
||||||
|
|
||||||
if [ ! -e /mnt/hdd/app-data/LNBits/database.sqlite3 ]; then
|
if [ ! -e /mnt/hdd/app-data/LNBits/database.sqlite3 ]; then
|
||||||
echo "# install database: PostgreSQL"
|
echo "# install database: PostgreSQL"
|
||||||
|
|
||||||
|
|||||||
@@ -35,6 +35,12 @@ if [ "$command" = "1" ] || [ "$command" = "on" ]; then
|
|||||||
sudo apt install -y postgresql-$PG_VERSION
|
sudo apt install -y postgresql-$PG_VERSION
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# make sure en_GB locale is available for now - see #4893
|
||||||
|
echo "# temp fixing locale"
|
||||||
|
sudo sed -i '/^#en_GB.UTF-8 UTF-8/s/^#//' /etc/locale.gen
|
||||||
|
sudo sed -i '/^# en_GB.UTF-8 UTF-8/s/^# //' /etc/locale.gen
|
||||||
|
sudo locale-gen
|
||||||
|
|
||||||
postgres_datadir="/var/lib/postgresql" # default data dir
|
postgres_datadir="/var/lib/postgresql" # default data dir
|
||||||
postgres_confdir="/etc/postgresql" # default conf dir
|
postgres_confdir="/etc/postgresql" # default conf dir
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
# https://lightning.readthedocs.io/
|
# https://lightning.readthedocs.io/
|
||||||
|
|
||||||
# https://github.com/ElementsProject/lightning/releases
|
# https://github.com/ElementsProject/lightning/releases
|
||||||
CLVERSION="v24.08.1"
|
CLVERSION="v24.11"
|
||||||
|
|
||||||
# https://github.com/ElementsProject/lightning/tree/master/contrib/keys
|
# https://github.com/ElementsProject/lightning/tree/master/contrib/keys
|
||||||
# rustyrussell D9200E6CD1ADB8F1
|
# rustyrussell D9200E6CD1ADB8F1
|
||||||
@@ -11,9 +11,9 @@ CLVERSION="v24.08.1"
|
|||||||
# pneuroth (nepet) C3F21EE387FF4CD2
|
# pneuroth (nepet) C3F21EE387FF4CD2
|
||||||
# sfarooqui (ShahanaFarooqui) B56B4453DA8C6DF7FC9BCFCBDCA40B7128DA62A8
|
# sfarooqui (ShahanaFarooqui) B56B4453DA8C6DF7FC9BCFCBDCA40B7128DA62A8
|
||||||
# amyers (endothermicdev) F3BF63F2747436AB
|
# amyers (endothermicdev) F3BF63F2747436AB
|
||||||
PGPsigner="sfarooqui"
|
PGPsigner="rustyrussell"
|
||||||
PGPpubkeyLink="https://raw.githubusercontent.com/ElementsProject/lightning/master/contrib/keys/${PGPsigner}.txt"
|
PGPpubkeyLink="https://raw.githubusercontent.com/ElementsProject/lightning/master/contrib/keys/${PGPsigner}.txt"
|
||||||
PGPpubkeyFingerprint="B56B4453DA8C6DF7FC9BCFCBDCA40B7128DA62A8"
|
PGPpubkeyFingerprint="D9200E6CD1ADB8F1"
|
||||||
|
|
||||||
# help
|
# help
|
||||||
if [ $# -eq 0 ] || [ "$1" = "-h" ] || [ "$1" = "--help" ]; then
|
if [ $# -eq 0 ] || [ "$1" = "-h" ] || [ "$1" = "--help" ]; then
|
||||||
@@ -162,7 +162,7 @@ if [ "$1" = "install" ]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
echo
|
echo
|
||||||
echo "- OK the installation of Core Lightning v${installed} is successful"
|
echo "- OK the installation of Core Lightning ${installed} is successful"
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
@@ -4,17 +4,17 @@
|
|||||||
## based on https://raspibolt.github.io/raspibolt/raspibolt_40_lnd.html#lightning-lnd
|
## based on https://raspibolt.github.io/raspibolt/raspibolt_40_lnd.html#lightning-lnd
|
||||||
## see LND releases: https://github.com/lightningnetwork/lnd/releases
|
## see LND releases: https://github.com/lightningnetwork/lnd/releases
|
||||||
### If you change here - make sure to also change interims version in lnd.update.sh #!
|
### If you change here - make sure to also change interims version in lnd.update.sh #!
|
||||||
lndVersion="0.17.5-beta"
|
lndVersion="0.18.3-beta"
|
||||||
|
|
||||||
# olaoluwa
|
# olaoluwa
|
||||||
# PGPauthor="roasbeef"
|
PGPauthor="roasbeef"
|
||||||
# PGPpkeys="https://raw.githubusercontent.com/lightningnetwork/lnd/master/scripts/keys/roasbeef.asc"
|
PGPpkeys="https://raw.githubusercontent.com/lightningnetwork/lnd/master/scripts/keys/roasbeef.asc"
|
||||||
# PGPcheck="A5B61896952D9FDA83BC054CDC42612E89237182"
|
PGPcheck="A5B61896952D9FDA83BC054CDC42612E89237182"
|
||||||
|
|
||||||
# guggero
|
# guggero
|
||||||
PGPauthor="guggero"
|
# PGPauthor="guggero"
|
||||||
PGPpkeys="https://keybase.io/guggero/pgp_keys.asc"
|
# PGPpkeys="https://keybase.io/guggero/pgp_keys.asc"
|
||||||
PGPcheck="F4FC70F07310028424EFC20A8E4256593F177720"
|
# PGPcheck="F4FC70F07310028424EFC20A8E4256593F177720"
|
||||||
|
|
||||||
# bitconner
|
# bitconner
|
||||||
#PGPauthor="bitconner"
|
#PGPauthor="bitconner"
|
||||||
|
|||||||
@@ -259,6 +259,19 @@ if [ "$2" = "wallet" ]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
ln_pendingbalance=$($lndcli_alias pendingchannels 2>/dev/null)
|
||||||
|
if [ "${ln_pendingbalance}" == "" ]; then
|
||||||
|
echo "error='no data'"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
ln_pendingonchainbalance_sum=$(echo "${ln_pendingbalance}" | jq -r '
|
||||||
|
([ .pending_force_closing_channels[].channel.local_balance,
|
||||||
|
.pending_closing_channels[].channel.local_balance
|
||||||
|
] | map(tonumber) | add // 0)')
|
||||||
|
|
||||||
|
lnd_wallet_onchain_pending=$(( ${lnd_wallet_onchain_pending:-0} + ${ln_pendingonchainbalance_sum:-0} ))
|
||||||
|
|
||||||
# parse data
|
# parse data
|
||||||
lnd_wallet_channels_balance=$(echo "$ln_channelbalance" | jq -r '.balance')
|
lnd_wallet_channels_balance=$(echo "$ln_channelbalance" | jq -r '.balance')
|
||||||
lnd_wallet_channels_pending=$(echo "$ln_channelbalance" | jq -r '.pending_open_balance')
|
lnd_wallet_channels_pending=$(echo "$ln_channelbalance" | jq -r '.pending_open_balance')
|
||||||
|
|||||||
70
toc.sh
70
toc.sh
@@ -1,70 +0,0 @@
|
|||||||
#!/usr/bin/env sh
|
|
||||||
|
|
||||||
## Updated version maintained on https://github.com/nyxnor/scripts/blob/master/toc.sh
|
|
||||||
|
|
||||||
## Produces Table of Contents (ToC) for simple markdown files
|
|
||||||
## Requirement: header is set by hashtag '#'
|
|
||||||
## $1 = FILE.md
|
|
||||||
|
|
||||||
red="\033[31m"
|
|
||||||
nocolor="\033[0m"
|
|
||||||
|
|
||||||
error_msg(){ printf %s"${red}ERROR: ${1}\n${nocolor}" >&2; exit 1; }
|
|
||||||
|
|
||||||
test -f "${1}" || error_msg "file '${1}' doesn't exist"
|
|
||||||
|
|
||||||
trap 'rm -f toc.tmp' EXIT INT
|
|
||||||
|
|
||||||
line_count=0
|
|
||||||
while IFS="$(printf '\n')" read -r line; do
|
|
||||||
line_count=$((line_count+1))
|
|
||||||
## extract code blocks
|
|
||||||
code="${code:-0}"
|
|
||||||
[ "${code}" -eq 0 ] && printf '%s\n' "${line_count}:${line}" | grep "^${line_count}:.*# "
|
|
||||||
case "${line}" in
|
|
||||||
*\`\`\`*)
|
|
||||||
case "${code}" in
|
|
||||||
1) code=0;;
|
|
||||||
0|*) code=1;;
|
|
||||||
esac
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done < "${1}" > toc.tmp
|
|
||||||
|
|
||||||
|
|
||||||
while IFS="$(printf '\n')" read -r line; do
|
|
||||||
## get line number
|
|
||||||
line_number="$(printf '%s\n' "${line}" | cut -d ":" -f1)"
|
|
||||||
## remove hashtag from line to be compared later if it is repeated
|
|
||||||
line_clean="$(printf '%s\n' "${line}" | sed "s/.*\# //")"
|
|
||||||
## save header to cache to check later if it was already printed
|
|
||||||
# shellcheck disable=SC2030
|
|
||||||
line_cache="$(printf '%s\n%s\n' "${line_cache}" "${line}")"
|
|
||||||
## check if header was already printed before and if positive, save all repeated headers
|
|
||||||
## if positive, insert link index
|
|
||||||
line_repeated="$(printf '%s\n' "${line_cache}" | grep -c -- ".*# ${line_clean}$")"
|
|
||||||
line_repeated_index=""
|
|
||||||
## first line does not have '-n', just the first repeated line (second occurence), starting with '-1'. So we consider the occurrence-1.
|
|
||||||
[ "${line_repeated}" -ge 2 ] && line_repeated_index="-$((line_repeated-1))"
|
|
||||||
## if it is the second time line has repeated, save first and second occurrence
|
|
||||||
if [ "${line_repeated}" -eq 2 ]; then
|
|
||||||
line_first_occurrence="$(printf '%s\n' "${line_cache}" | grep -- ".*# ${line_clean}$" | head -n 1)"
|
|
||||||
line_repeated_cache="$(printf '%s\n%s\n' "${line_first_occurrence}" "${line}")"
|
|
||||||
## if it is the third or greater time line has repeated, save lines from before (1st and 2nd occurrence) plus add current lines
|
|
||||||
elif [ "${line_repeated}" -gt 2 ]; then
|
|
||||||
line_repeated_cache="$(printf '%s\n%s\n' "${line_repeated_cache}" "${line}")"
|
|
||||||
fi
|
|
||||||
## clean header that have link reference
|
|
||||||
line_md="$(printf '%s\n' "${line}" | sed "s/${line_number}://;s|](.*||;s|\[||;s/\]//g")"
|
|
||||||
## set header indentation
|
|
||||||
line_md="$(printf '%s\n' "${line_md}" | sed "s|######| -|;s|#####| -|;s|####| -|;s|###| -|;s|##| -|;s|#|-|")"
|
|
||||||
## set link content
|
|
||||||
line_content="$(printf '%s\n' "${line_md}" | sed "s/.*- /#/;s| |-|g;s|'||g;s|]||g;s/|/-/g" | tr "[:upper:]" "[:lower:]" | tr -cd "[:alnum:]-_" | tr -d ".")"
|
|
||||||
## set link reference
|
|
||||||
line_md="$(printf '%s\n' "${line_md}" | sed "s|- |- [|;s|$|](#${line_content}${line_repeated_index})|")"
|
|
||||||
## print header
|
|
||||||
printf '%s\n' "${line_md}"
|
|
||||||
done < toc.tmp
|
|
||||||
|
|
||||||
[ -n "${line_repeated_cache}" ] &&
|
|
||||||
printf %s"\n\nWARN: Some headers are repeated, the hiperlinks are correctly indexed. If you think this is an error, review these lines:headers:\n${line_repeated_cache}\n"
|
|
||||||
Reference in New Issue
Block a user