Compare commits

..

31 Commits

Author SHA1 Message Date
openoms
52bc1c9aa4 nodejs update to 22 2025-02-23 11:52:38 +01:00
cdemkos
cfded50575 replace amd with arm in ci/README.md (#4952) 2025-02-04 15:00:57 +01:00
frennkie
142b5197fb Switch to bitcoin user for version verification (#4942)
We normally run bitcoind as user bitcoin.
Running it here as root could potentially at some point cause issues (e.g. if files are created and the ownership is then off).
2025-02-03 14:12:41 +01:00
frennkie
76267f812b Update _background.sh (#4941)
Fix two typoe/switch characters in comments
2025-02-03 10:52:23 +01:00
openoms
61766d8bea amd64 base image update to debian-12.9.0-amd64-netinst.iso (#4928) 2025-01-18 11:41:05 +01:00
/rootzoll
b20e9f0bab Merge pull request #4913 from steepdawn974/fix/add-qrencode-dependency-check
fix: add qrencode dependency check to cl-plugin.clnrest.sh
2025-01-04 14:08:07 +01:00
steepdawn974
5c2bdcb954 fix: add qrencode dependency check to cl-plugin.clnrest.sh
Adds automatic check and installation of qrencode package
if missing to prevent 'command not found' errors when
generating QR codes.
2025-01-04 00:12:40 +01:00
rootzoll
249c00f25b v1.11.4 torrent files 2024-12-24 16:13:28 +01:00
rootzoll
8aba30725f Release CHANGES v1.11.4 2024-12-24 16:12:53 +01:00
/rootzoll
37df1b354d Small Fixes for v1.11.4 (#4890)
* v1.11.4rc1 & AlbyHub 1.12.0
* #4864 Core Lightning 24.11.1
* #4884 revert back to former version
* #4891 account for pending closing balance (#4892)
* #4876 adding Allow New User Switch
* #4882 revert back to CLN v24.11
* #4893 temp re-introduce en_GB for v1.11.4
2024-12-19 19:14:31 +01:00
/rootzoll
ff04883422 #4891 account for pending closing balance (#4892) 2024-12-19 12:54:43 +01:00
HODLmeTight
b79eebf0ff Enhance BBcloseAllChannels.sh to allow LND user selection for channel closing method (#4886)
Enhance BBcloseAllChannels.sh to allow user selection for channel closing method. Users can now choose between COOP for cooperative close and FORCE for forced close
2024-12-18 23:54:31 +01:00
/rootzoll
f48c311401 Small Updates for v1.11.4 (#4889)
* AlbyHub 1.12.0
2024-12-18 23:34:39 +01:00
openoms
805131a922 albyhub: fix typos, formatting, translate comment (#4885) 2024-12-18 23:00:29 +01:00
/rootzoll
d5c010a424 v1.11.4rc1 (#4883) 2024-12-18 13:57:59 +01:00
/rootzoll
3cc6910832 4873 lnd update (#4879)
* #4873-update-lnd
* Added to CHANGES.md
* correct typos
2024-12-18 12:11:29 +01:00
/rootzoll
f4bd395282 #4842 update cln to 24.11 (#4882) 2024-12-18 11:51:23 +01:00
/rootzoll
b74c604934 4876 lnbits (#4877)
* #4878 respect old LNBITS_ADMIN_UI setting
* #4876 lnbits option to switch ADMINUI
* #4876 add no new accounts option
* #4876 remove accounts option again
2024-12-18 11:37:54 +01:00
/rootzoll
f8631ab45a #4559 Improve blitz.release.sh (#4867)
* 4559 fsck on release
* fsck on release
* fsck after expand
* remove toc.sh
* #4861 force locale on release
2024-12-18 11:34:32 +01:00
/rootzoll
7458494cc2 #4727 Prepare bonus.albyhub.sh for WebUI (#4866)
adding needed funtions to albyhub installs script needed for API/WebUI integration
2024-12-18 11:30:47 +01:00
openoms
5d61034626 arm64 base image update to 2024-11-19-raspios-bookworm-arm64 (#4854)
* arm64 base image update to 2024-11-19-raspios-bookworm-arm64
* no network restart on raspberrypi
2024-12-04 16:12:58 +01:00
openoms
3dc1351a8b Fulcrum update to v0.11.1 (#4851)
* fulcrum update to v1.11.1
2024-12-04 13:38:08 +01:00
openoms
6ae2f64b4e cln: set systemd service to Restart=always (#4853)
prevents cln to remain off after dependency failure
2024-12-04 13:28:17 +01:00
openoms
b9f7388d87 amd64 reduce image size to 27GB (#4855) 2024-12-03 21:22:22 +01:00
/rootzoll
360afc810b Fix #4834 Core Lightning Peercount (#4846) 2024-11-30 11:39:03 +01:00
openoms
f4dd97a6a7 add amd64 base image update to CHANGES 2024-11-29 08:38:54 +01:00
openoms
81517e2742 amd64 base image update to debian-12.8.0 (#4849) 2024-11-29 08:32:40 +01:00
openoms
9e8a40642d specter update to 2.0.5 (#4844) 2024-11-29 08:31:03 +01:00
/rootzoll
fe02f757d2 #4727 Add AlbyHub to RaspiBlitz SSH menus (#4848)
* #4727 first draft for install script
* #4727 add x86
* #4727 recover & SSH menu
2024-11-21 16:39:49 +01:00
rootzoll
850f32381e improve mempool install script 2024-11-12 22:37:07 +01:00
rootzoll
1c146b9281 remove "debug=tor" from bitcoin.conf when turning Tor off 2024-11-08 16:37:47 +01:00
34 changed files with 676 additions and 305 deletions

View File

@@ -1,3 +1,33 @@
## What's new in Version 1.12.0 of RaspiBlitz?
Work In Progress
Features:
- Update: RaspberryOS arm64 base image 2024-11-19 (Debian 12 Bookworm) [details](https://downloads.raspberrypi.com/raspios_full_arm64/release_notes.txt)
- Update: amd64 base image: debian-12.8.0-amd64-netinst.iso [details](https://www.debian.org/releases/stable/amd64/release-notes/ch-whats-new.en.html)
- 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)
## 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?
Optimized now to run also on plain debian12 linux for Proxmox/VM & x86 systems.
@@ -23,12 +53,12 @@ Containing Features:
Download RaspberryPi images:
- Minimal:
https://raspiblitz.fulmo.org/images/raspiblitz-min-v1.11.3-2024-11-03.img.gz
- Minimal:
https://raspiblitz.fulmo.org/images/raspiblitz-min-v1.11.3-2024-11-03.img.gz<br>
SHA-256-Checksum: 199fd4e671a49feb39420156031201c9118121d33ec6f9990fb9724de5be02c4
- Fatpack:
https://raspiblitz.fulmo.org/images/raspiblitz-fat-v1.11.3-2024-11-03.img.gz
- Fatpack:
https://raspiblitz.fulmo.org/images/raspiblitz-fat-v1.11.3-2024-11-03.img.gz<br>
SHA-256-Checksum: 65e523562768b21dcda85b96003c559a665015889402a3cea27638e6c5e290bd
## What's new in Version 1.11.2 of RaspiBlitz?

View File

@@ -329,7 +329,9 @@ isDebianInHosts=$(grep -c "debian" /etc/hosts)
if [ ${isDebianInHosts} -eq 0 ]; then
echo "# Adding debian to /etc/hosts"
echo "127.0.1.1 debian" | tee -a /etc/hosts > /dev/null
systemctl restart networking
if [ "${baseimage}" != "raspios_arm64" ]; then
systemctl restart networking
fi
fi
echo "*** Remove unnecessary packages ***"

View File

@@ -34,7 +34,7 @@
## Ready made images for arm64-rpi
* The images are built in GitHub actions
* To see the downloadable artifacts will need to log in to GitHub
* Find the latest successful build of the default amd64 image:
* Find the latest successful build of the default arm64 image:
https://github.com/raspiblitz/raspiblitz/actions/workflows/arm64-rpi-lean-image.yml?query=workflow%3Aarm64-rpi-lean-image-build+is%3Asuccess+branch%3Adev
* unpack the artifact to the same directory
```

View File

@@ -1,5 +1,5 @@
variable "iso_name" { default = "debian-12.7.0-amd64-netinst.iso" }
variable "iso_checksum" { default = "8fde79cfc6b20a696200fc5c15219cf6d721e8feb367e9e0e33a79d1cb68fa83" }
variable "iso_name" { default = "debian-12.9.0-amd64-netinst.iso" }
variable "iso_checksum" { default = "1257373c706d8c07e6917942736a865dfff557d21d76ea3040bb1039eb72a054" }
variable "pack" { default = "lean" }
variable "github_user" { default = "raspiblitz" }
@@ -10,7 +10,7 @@ variable "boot" { default = "uefi" }
variable "preseed_file" { default = "preseed.cfg" }
variable "hostname" { default = "raspiblitz-amd64" }
variable "disk_size" { default = "30000" }
variable "disk_size" { default = "27000" }
variable "memory" { default = "4096" }
variable "cpus" { default = "4" }

View File

@@ -1,8 +1,8 @@
variable "pack" { default = "lean" }
variable "github_user" { default = "raspiblitz" }
variable "branch" { default = "dev" }
variable "image_link" { default = "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2024-03-15/2024-03-15-raspios-bookworm-arm64.img.xz" }
variable "image_checksum" { default = "7e53a46aab92051d523d7283c080532bebb52ce86758629bf1951be9b4b0560f" }
variable "image_link" { default = "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2024-11-19/2024-11-19-raspios-bookworm-arm64.img.xz" }
variable "image_checksum" { default = "ea6e68c48d14c3d78af5471c0b288bbf6522fdd775241f74d8295d106d344300" }
variable "image_size" { default = "24G" }
source "arm" "raspiblitz-arm64-rpi" {

View File

@@ -180,6 +180,9 @@ fi
if [ "${telegraf}" == "on" ]; then
OPTIONS+=(TELEGRAF "Telegraf InfluxDB/Grafana Metrics")
fi
if [ "${albyhub}" == "on" ]; then
OPTIONS+=(ALBYHUB "AlbyHub")
fi
# dont offer to switch to "testnet view for now" - so no wswitch back to mainnet needed
#if [ ${chain} != "main" ]; then
@@ -355,6 +358,9 @@ case $CHOICE in
FINTS)
sudo /home/admin/config.scripts/bonus.fints.sh menu
;;
ALBYHUB)
/home/admin/config.scripts/bonus.albyhub.sh menu
;;
TESTNETS)
/home/admin/00parallelChainsMenu.sh
;;

View File

@@ -32,6 +32,8 @@ if [ ${#fints} -eq 0 ]; then fints="off"; fi
if [ ${#lndk} -eq 0 ]; then lndk="off"; fi
if [ ${#labelbase} -eq 0 ]; then labelbase="off"; fi
if [ ${#publicpool} -eq 0 ]; then publicpool="off"; fi
if [ ${#albyhub} -eq 0 ]; then albyhub="off"; fi
if [ "${albyhub}" == "on" ] && [ $(sudo ls /etc/systemd/system/albyhub.service 2>/dev/null | grep -c 'albyhub.service') -lt 1 ]; then albyhub="off"; fi
# show select dialog
echo "run dialog ..."
@@ -63,6 +65,7 @@ if [ "${lightning}" == "lnd" ] || [ "${lnd}" == "on" ]; then
OPTIONS+=(ra 'LND RTL Webinterface' ${rtlWebinterface})
OPTIONS+=(ta 'LND ThunderHub' ${thunderhub})
OPTIONS+=(la 'LND LIT (loop, pool, faraday)' ${lit})
OPTIONS+=(ah 'LND AlbyHub (App Connector)' ${albyhub})
OPTIONS+=(gb 'LND LNDg (auto-rebalance, auto-fees)' ${lndg})
OPTIONS+=(oa 'LND Balance of Satoshis' ${bos})
OPTIONS+=(ya 'LND PyBLOCK' ${pyblock})
@@ -624,6 +627,31 @@ else
echo "Publicpool setting unchanged."
fi
# albyhub process choice
choice="off"; check=$(echo "${CHOICES}" | grep -c "ah")
if [ ${check} -eq 1 ]; then choice="on"; fi
if [ "${albyhub}" != "${choice}" ]; then
echo "AlbyHub setting changed .."
anychange=1
if [ "${choice}" = "on" ]; then
sudo -u admin /home/admin/config.scripts/bonus.albyhub.sh on
sudo -u admin /home/admin/config.scripts/bonus.albyhub.sh menu
else
whiptail --title "Delete Database?" \
--yes-button "Keep Database" \
--no-button "Delete Database" \
--yesno "AlbyHub is getting uninstalled. If you keep the database, you will be able to reuse the data should you choose to re-install. Do you wish to keep the database?" 10 80
if [ $? -eq 1 ]; then
echo "# Uninstalling AlbyHub AND DELETING DATA ..."
sudo -u admin /home/admin/config.scripts/bonus.albyhub.sh off delete-data
else
echo "# Uninstalling AlbyHub but keeping data ..."
sudo -u admin /home/admin/config.scripts/bonus.albyhub.sh off
fi
fi
else
echo "AlbyHub setting unchanged."
fi
# fints process choice
choice="off"; check=$(echo "${CHOICES}" | grep -c "fn")

View File

@@ -3,93 +3,42 @@
# load raspiblitz config data (with backup from old config)
source /home/admin/raspiblitz.info
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 [ ${#chain} -eq 0 ]; then
chain=$(${network}-cli getblockchaininfo | jq -r '.chain')
fi
source <(/home/admin/config.scripts/network.aliases.sh getvars $1 $2)
if [ $LNTYPE = cl ];then
# https://lightning.readthedocs.io/lightning-close.7.html
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"
# 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 1
fi
command="lncli --chain=${network} --network=${chain}net closeallchannels --force"
clear
echo
echo "# Precheck" # PRECHECK) check if chain is in sync
if [ $LNTYPE = cl ];then
BLOCKHEIGHT=$($bitcoincli_alias getblockchaininfo|grep blocks|awk '{print $2}'|cut -d, -f1)
CLHEIGHT=$($lightningcli_alias getinfo | jq .blockheight)
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 "***********************************"
echo "Closing All Channels (EXPERIMENTAL)"
echo "***********************************"
echo ""
echo "COMMAND LINE: "
echo $command
echo
echo "# RESULT:"
echo ""
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
if [ ${#command} -gt 0 ]; then
if [ $LNTYPE = cl ];then
cl_closeall
elif [ $LNTYPE = lnd ];then
${command}
fi
${command}
fi
echo
echo "# OK - please recheck if channels really closed"
echo ""
echo "OK - please recheck if channels really closed"
sleep 5

View File

@@ -721,7 +721,7 @@ do
fi
###############################
# RAID data check (BRTFS)
# RAID data check (BTRFS)
###############################
# see https://github.com/rootzoll/raspiblitz/issues/360#issuecomment-467698260
@@ -729,7 +729,7 @@ do
recheckRAID=$((($counter % 3600)+1))
if [ ${recheckRAID} -eq 1 ]; then
# check if BTRTFS raid is active & scrub
# check if BTRFS raid is active & scrub
logger -p info "background.sh - RAID data check"
source <(/home/admin/config.scripts/blitz.datadrive.sh status)
if [ "${isBTRFS}" == "1" ] && [ "${isRaid}" == "1" ]; then

View File

@@ -752,6 +752,15 @@ else
echo "Provisioning Publicpool - keep default" >> ${logFile}
fi
# AlbyHub
if [ "${albyhub}" = "on" ]; then
echo "Provisioning AlbyHub - run config script" >> ${logFile}
/home/admin/_cache.sh set message "Setup AlbyHub"
sudo -u admin /home/admin/config.scripts/bonus.albyhub.sh on >> ${logFile} 2>&1
else
echo "Provisioning AlbyHub - keep default" >> ${logFile}
fi
# custom install script from user
customInstallAvailable=$(ls /mnt/hdd/app-data/custom-installs.sh 2>/dev/null | grep -c "custom-installs.sh")
if [ ${customInstallAvailable} -gt 0 ]; then

View File

@@ -1,4 +1,4 @@
# RaspiBlitz Version - always [major].[main].[sub] (sub can be a string like '2rc1')
codeVersion="1.11.3"
codeVersion="1.11.4"
codeRelease="dev"
# keep last line with comment ---> IF YOU HAVE A NEW VERSION BRANCH > EDIT ALSO build_sdcard.sh

View File

@@ -288,7 +288,7 @@ if [ "${mode}" = "tested" ] || [ "${mode}" = "reckless" ] || [ "${mode}" = "cust
tar -xvf ${binaryName}
sudo install -m 0755 -o root -g root -t /usr/local/bin/ bitcoin-${bitcoinVersion}/bin/*
sleep 3
if ! sudo /usr/local/bin/bitcoind --version | grep "${bitcoinVersion}"; then
if ! sudo -u bitcoin /usr/local/bin/bitcoind --version | grep "${bitcoinVersion}"; then
echo
echo "# BUILD FAILED --> Was not able to install bitcoind version(${bitcoinVersion})"
exit 1

View File

@@ -67,23 +67,13 @@ if [ "${action}" == "fsexpand" ]; then
if [ -x ${resizeRaspbian} ]; then
echo "# RUNNING EXPAND RASPBERRYPI: ${resizeRaspbian}"
sudo $resizeRaspbian --expand-rootfs 1>&2
sudo touch /forcefsck
echo "# DONE - please reboot"
else
echo "# FAIL to execute on ${baseimage}: ${resizeRaspbian}"
echo "err='expand failed'"
exit 1
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
echo "#FAIL no implementation for: ${baseimage}"
echo "err='missing implementation'"

View File

@@ -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 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"
/home/admin/config.scripts/bonus.lnbits.sh install || exit 1
echo "* Adding Code&Compile for WEBUI-APP: JAM"

View File

@@ -98,6 +98,25 @@ sudo systemctl disable ssh
sudo rm /etc/ssh/ssh_host_*
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 "Will shutdown now."
echo "Wait until Raspberry LEDs show no activity anymore."

View File

@@ -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

View File

@@ -0,0 +1,421 @@
#!/bin/bash
# This script installs Alby Hub on RaspiBlitz.
# Rename it as `bonus.albyhub.sh` and place it in `/home/admin/config.scripts`.
# id string of your app (short single string unique in raspiblitz)
APPID="albyhub" # one-word lower-case no-specials
# https://github.com/getAlby/hub/releases
VERSION="1.12.0"
# port numbers the app should run on
# delete if not an web app
PORT_CLEAR="8029"
PORT_SSL="8030"
PORT_TOR_CLEAR="8031"
PORT_TOR_SSL="8032"
# BASIC COMMANDLINE OPTIONS
if [ $# -eq 0 ] || [ "$1" = "-h" ] || [ "$1" = "-help" ]; then
echo "# bonus.${APPID}.sh status -> status information (key=value)"
echo "# bonus.${APPID}.sh install -> install 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 prestart -> prestart used by systemd"
exit 1
fi
ENVFILE="/home/${APPID}/config.env"
##########################
# PRESTART
##########################
# background is that this script will be called with `prestart` on every start & restart
if [ "$1" = "prestart" ]; then
# needs to be run as the app user - stop if not run as the app user
# keep in mind that in the prestart section you cannot use `sudo` command
if [ "$USER" != "${APPID}" ]; then
echo "# FAIL: run as user ${APPID}"
exit 1
fi
# see: https://github.com/getAlby/hub/blob/master/.env.example
echo "## PRESTART CONFIG START for ${APPID} (called by systemd prestart)"
echo "# creating dynamic env file --> ${ENVFILE}"
touch ${ENVFILE}
chmod 770 ${ENVFILE}
echo "PORT=${PORT_CLEAR}" > ${ENVFILE}
echo "WORK_DIR=/mnt/hdd/app-data/${APPID}" >> ${ENVFILE}
echo "LN_BACKEND_TYPE=LND" >> ${ENVFILE}
echo "LND_ADDRESS=127.0.0.1:10009" >> ${ENVFILE}
echo "LND_CERT_FILE=/mnt/hdd/app-data/lnd/tls.cert" >> ${ENVFILE}
echo "LND_MACAROON_FILE=/mnt/hdd/app-data/lnd/data/chain/bitcoin/mainnet/admin.macaroon" >> ${ENVFILE}
echo >> ${ENVFILE}
echo "## PRESTART CONFIG DONE for ${APPID}"
exit 0
fi
# echoing comments is useful for logs - but start output with # when not a key=value
echo "# Running: 'bonus.${APPID}.sh $*'"
source /home/admin/raspiblitz.info
source /mnt/hdd/raspiblitz.conf
#########################
# INFO
#########################
# this section is always executed to gather status information that
# all the following commands can use & execute on
# check if app is already installed
isInstalled=$(sudo ls /etc/systemd/system/${APPID}.service 2>/dev/null | grep -c "${APPID}.service")
# check if service is running
isRunning=$(systemctl status ${APPID} 2>/dev/null | grep -c 'active (running)')
if [ "${isInstalled}" == "1" ]; then
# gather address info (whats needed to call the app)
localIP=$(hostname -I | awk '{print $1}')
toraddress=$(sudo cat /mnt/hdd/tor/${APPID}/hostname 2>/dev/null)
fingerprint=$(openssl x509 -in /mnt/hdd/app-data/nginx/tls.cert -fingerprint -noout | cut -d"=" -f2)
fi
# if the action parameter `status` was called - just stop here and output all
# status information as a key=value list
if [ "$1" = "status" ]; then
echo "appID='${APPID}'"
echo "version='${VERSION}'"
echo "installed=${isRunning}" # installed means towards webui on or off
if [ "${isInstalled}" == "1" ]; then
echo "localIP='${localIP}'"
echo "toraddress='${toraddress}'"
echo "fingerprint='${fingerprint}'"
echo "httpPort='${PORT_CLEAR}'"
echo "httpsPort='${PORT_SSL}'"
echo "httpsForced='1'"
echo "httpsSelfsigned='1'"
echo "authMethod='userdefined'"
fi
exit
fi
##########################
# MENU
#########################
# show info menu
if [ "$1" = "menu" ]; then
if [ ${isInstalled} -eq 0 ] && [ "${albyhub}" == "on" ]; then
clear
echo "# AlbyHub needs re-install ..."
/home/admin/config.scripts/bonus.albyhub.sh on
elif [ ${isInstalled} -lt 1 ]; then
echo "error='App not installed'"
exit 1
fi
# set the title for the dialog
dialogTitle=" ${APPID} "
localIP=$(hostname -I | awk '{print $1}')
fingerprint=$(openssl x509 -in /mnt/hdd/app-data/nginx/tls.cert -fingerprint -noout | cut -d"=" -f2)
# basic info text - for a web app how to call with http
dialogText="Open in your local web browser:
http://${localIP}:${PORT_CLEAR}\n
https://${localIP}:${PORT_SSL} with Fingerprint:
${fingerprint}\n
The Alby Hub password is managed separate from RaspiBlitz - make sure to manage it safely.\n
"
# use whiptail to show SSH dialog & exit
whiptail --title "${dialogTitle}" --msgbox "${dialogText}" 15 67
echo "please wait ..."
exit 0
fi
##########################
# INSTALL
##########################
if [ "$1" = "install" ]; then
echo "# Installing ${APPID} ..."
echo "# create user"
sudo adduser --system --group --shell /bin/bash --home /home/${APPID} ${APPID} || exit 1
sudo -u ${APPID} cp -r /etc/skel/. /home/${APPID}/
echo "# add use to special groups"
sudo /usr/sbin/usermod --append --groups lndadmin ${APPID}
# use new app user home as install directory
cd /home/${APPID}
# download Alby Hub
if [ ${cpu} == "aarch64" ]; then
echo "# Downloading Alby Hub for aarch64"
sudo wget -O albyhub-server.tar.bz2 https://github.com/getAlby/hub/releases/download/v$VERSION/albyhub-Server-Linux-aarch64.tar.bz2
else
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
fi
# extract archives
sudo tar -xvf albyhub-server.tar.bz2
if [[ $? -ne 0 ]]; then
echo "# Failed to download & unpack Alby Hub"
echo "error='download & unpack failed'"
exit 1
fi
# cleanup
sudo rm -f albyhub-server.tar.bz2
# set permissions
sudo chmod -R 755 /home/${APPID}/lib
sudo chown -R root:root /home/${APPID}/lib
# make libs available
echo "/home/${APPID}/lib" | sudo tee /etc/ld.so.conf.d/${APPID}.conf
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
sudo mkdir -p /mnt/hdd/app-data/${APPID} 2>/dev/null
sudo chown -R ${APPID}:${APPID} /mnt/hdd/app-data/${APPID}
# open the ports in the firewall
echo "# updating Firewall"
sudo ufw allow ${PORT_CLEAR} comment "${APPID} HTTP"
sudo ufw allow ${PORT_SSL} comment "${APPID} HTTPS"
# prepare env file
echo "# prepare env file --> ${ENVFILE}"
sudo touch ${ENVFILE}
sudo chown ${APPID}:${APPID} ${ENVFILE}
sudo chmod 770 ${ENVFILE}
# create systemd service
echo "# create systemd service: ${APPID}.service"
echo "
[Unit]
Description=AlbyHub
Wants=lnd.service
After=lnd.service
[Service]
Type=simple
Restart=always
RestartSec=1
User=${APPID}
ExecStartPre=-/home/admin/config.scripts/bonus.${APPID}.sh prestart
EnvironmentFile=${ENVFILE}
ExecStart=/home/${APPID}/bin/${APPID}
# Hack to ensure Alby Hub never uses more than 90% CPU
CPUQuota=90%sudo
[Install]
WantedBy=multi-user.target
" | sudo tee /etc/systemd/system/${APPID}.service
sudo chown root:root /etc/systemd/system/${APPID}.service
# when tor is set on also install the hidden service
if [ "${runBehindTor}" = "on" ]; then
# activating tor hidden service
/home/admin/config.scripts/tor.onion-service.sh ${APPID} 80 ${PORT_TOR_CLEAR} 443 ${PORT_TOR_SSL}
fi
# nginx configuration
# 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.
echo "# setup nginx config"
# write the HTTPS config
echo "
server {
listen ${PORT_SSL} ssl;
listen [::]:${PORT_SSL} ssl;
server_name _;
include /etc/nginx/snippets/ssl-params.conf;
include /etc/nginx/snippets/ssl-certificate-app-data.conf;
access_log /var/log/nginx/access_${APPID}.log;
error_log /var/log/nginx/error_${APPID}.log;
location / {
proxy_pass http://127.0.0.1:${PORT_CLEAR};
include /etc/nginx/snippets/ssl-proxy-params.conf;
}
}
" | sudo tee /etc/nginx/sites-available/${APPID}_ssl.conf
sudo ln -sf /etc/nginx/sites-available/${APPID}_ssl.conf /etc/nginx/sites-enabled/
# write the Tor config
echo "
server {
listen ${PORT_TOR_CLEAR};
server_name _;
access_log /var/log/nginx/access_${APPID}.log;
error_log /var/log/nginx/error_${APPID}.log;
location / {
proxy_pass http://127.0.0.1:${PORT_CLEAR};
include /etc/nginx/snippets/ssl-proxy-params.conf;
}
}
" | sudo tee /etc/nginx/sites-available/${APPID}_tor.conf
sudo ln -sf /etc/nginx/sites-available/${APPID}_tor.conf /etc/nginx/sites-enabled/
# write the Tor+HTTPS config
echo "
server {
listen ${PORT_TOR_SSL} ssl;
server_name _;
include /etc/nginx/snippets/ssl-params.conf;
include /etc/nginx/snippets/ssl-certificate-app-data-tor.conf;
access_log /var/log/nginx/access_${APPID}.log;
error_log /var/log/nginx/error_${APPID}.log;
location / {
proxy_pass http://127.0.0.1:${PORT_CLEAR};
include /etc/nginx/snippets/ssl-proxy-params.conf;
}
}
" | sudo tee /etc/nginx/sites-available/${APPID}_tor_ssl.conf
sudo ln -sf /etc/nginx/sites-available/${APPID}_tor_ssl.conf /etc/nginx/sites-enabled/
# test nginx config & activate thru reload
sudo nginx -t
sudo systemctl reload nginx
# enable app up thru systemd
sudo systemctl enable ${APPID}
echo "# OK - the ${APPID}.service is now enabled"
# start app (only when blitz is ready)
source <(/home/admin/_cache.sh get state)
if [ "${state}" == "ready" ]; then
sudo systemctl start ${APPID}
echo "# OK - the ${APPID}.service is now started"
fi
echo "# mark app as installed in raspiblitz config"
/home/admin/config.scripts/blitz.conf.sh set ${APPID} "on"
echo "# Monitor with: sudo journalctl -f -u ${APPID}"
echo "# OK actvation done"
# needed for API/WebUI as signal that install ran thru
echo "result='OK'"
exit 0
fi
###########################################
# OFF / UNINSTALL
# call with parameter `delete-data` to also
# delete the persistent data directory
###########################################
if [ "$1" = "0" ] || [ "$1" = "off" ]; then
echo "# stop & remove systemd service"
sudo systemctl stop ${APPID} 2>/dev/null
sudo systemctl disable ${APPID}.service
sudo rm /etc/systemd/system/${APPID}.service
echo "# remove nginx symlinks"
sudo rm -f /etc/nginx/sites-enabled/${APPID}_ssl.conf 2>/dev/null
sudo rm -f /etc/nginx/sites-enabled/${APPID}_tor.conf 2>/dev/null
sudo rm -f /etc/nginx/sites-enabled/${APPID}_tor_ssl.conf 2>/dev/null
sudo rm -f /etc/nginx/sites-available/${APPID}_ssl.conf 2>/dev/null
sudo rm -f /etc/nginx/sites-available/${APPID}_tor.conf 2>/dev/null
sudo rm -f /etc/nginx/sites-available/${APPID}_tor_ssl.conf 2>/dev/null
sudo nginx -t
sudo systemctl reload nginx
echo "# close ports on firewall"
sudo ufw deny "${PORT_CLEAR}"
sudo ufw deny "${PORT_SSL}"
echo "# removing Tor hidden service (if active)"
/home/admin/config.scripts/tor.onion-service.sh off ${APPID}
echo "# mark app as uninstalled in raspiblitz config"
/home/admin/config.scripts/blitz.conf.sh set ${APPID} "off"
# only if 'delete-data' is an additional parameter then also the data directory gets deleted
if [ "$(echo "$@" | grep -c delete-data)" -gt 0 ]; then
echo "# found 'delete-data' parameter --> also deleting the app-data"
sudo rm -r /mnt/hdd/app-data/${APPID}
fi
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
fi
# just a basic error message when unknown action parameter was given
echo "# FAIL - Unknown Parameter $1"
exit 1

View File

@@ -812,9 +812,6 @@ if [ "$1" = "0" ] || [ "$1" = "off" ]; then
fi
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'"

View File

@@ -1,7 +1,7 @@
#!/bin/bash
# https://github.com/cculianu/Fulcrum/releases
fulcrumVersion="1.10.0"
fulcrumVersion="1.11.1"
portTCP="50021"
portSSL="50022"

View File

@@ -226,6 +226,24 @@ Consider adding a IP2TOR Bridge under OPTIONS."
OPTIONS+=(MIGRATE-DB "Migrate SQLite to PostgreSQL database")
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
CHOICE_HEIGHT=$(("${#OPTIONS[@]}/2+1"))
HEIGHT=$((CHOICE_HEIGHT + 7))
@@ -286,6 +304,44 @@ Consider adding a IP2TOR Bridge under OPTIONS."
read key
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)
clear
# check if backup exist
@@ -780,16 +836,17 @@ if [ "$1" = "1" ] || [ "$1" = "on" ]; then
echo "# preparing env file"
# delete old .env file or old symbolic link
sudo rm /home/lnbits/lnbits/.env 2>/dev/null
# 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
# crete symbolic link
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
echo "# install database: PostgreSQL"

View File

@@ -202,11 +202,20 @@ if [ "$1" = "1" ] || [ "$1" = "on" ]; then
if [ "${isInstalled}" == "0" ]; then
echo "# Install code base first ...."
if ! /home/admin/config.scripts/bonus.mempool.sh install; then
/home/admin/config.scripts/bonus.mempool.sh uninstall 2>/dev/null
echo "FAIL - install did not run correctly, aborting"
exit 1
fi
fi
# check if /home/mempool/mempool exists
if [ ! -d "/home/mempool/mempool" ]; then
/home/admin/config.scripts/bonus.mempool.sh uninstall 2>/dev/null
echo "error='mempool code base install failed'"
echo "# please run manually first: /home/admin/config.scripts/bonus.mempool.sh install"
exit 1
fi
echo "# *** Activate MEMPOOL ***"
# make sure mariadb is running
@@ -233,6 +242,7 @@ if [ "$1" = "1" ] || [ "$1" = "on" ]; then
RPC_USER=$(sudo cat /mnt/hdd/${network}/${network}.conf | grep rpcuser | cut -c 9-)
PASSWORD_B=$(sudo cat /mnt/hdd/${network}/${network}.conf | grep rpcpassword | cut -c 13-)
sudo rm /var/cache/raspiblitz/mempool-config.json 2>/dev/null
touch /var/cache/raspiblitz/mempool-config.json
chmod 600 /var/cache/raspiblitz/mempool-config.json || exit 1
cat >/var/cache/raspiblitz/mempool-config.json <<EOF

View File

@@ -2,7 +2,7 @@
# follows https://github.com/nodesource/distributions/blob/master/README.md#manual-installation
VERSION="20"
VERSION="22"
# command info
if [ $# -eq 0 ] || [ "$1" = "-h" ] || [ "$1" = "-help" ]; then

View File

@@ -35,6 +35,12 @@ if [ "$command" = "1" ] || [ "$command" = "on" ]; then
sudo apt install -y postgresql-$PG_VERSION
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_confdir="/etc/postgresql" # default conf dir

View File

@@ -1,7 +1,7 @@
#!/bin/bash
# https://github.com/cryptoadvance/specter-desktop
pinnedVersion="2.0.4"
pinnedVersion="2.0.5"
# command info
if [ $# -eq 0 ] || [ "$1" = "-h" ] || [ "$1" = "-help" ]; then

View File

@@ -11,6 +11,12 @@ fi
# check and load raspiblitz config to know which network is running
source /mnt/hdd/raspiblitz.conf
# check and install qrencode if not present
if [ $(dpkg-query -l | grep "ii qrencode" | wc -l) = 0 ]; then
echo "# Installing qrencode..."
sudo apt-get install -y qrencode >/dev/null 2>&1
fi
echo "# Running: 'cl-plugin.clnrest.sh $*'"
source <(/home/admin/config.scripts/network.aliases.sh getvars cl $2)

View File

@@ -60,16 +60,14 @@ ExecStartPost=-/home/admin/config.scripts/cl.check.sh poststart $CHAIN
# Creates /run/lightningd owned by bitcoin
RuntimeDirectory=lightningd
User=bitcoin
Group=bitcoin
# Type=forking hangs on restart
Type=simple
PIDFile=/run/lightningd/${netprefix}lightningd.pid
Restart=on-failure
Restart=always
RestartSec=60
TimeoutSec=240
RestartSec=30
StandardOutput=null
StandardError=journal

View File

@@ -2,7 +2,7 @@
# https://lightning.readthedocs.io/
# https://github.com/ElementsProject/lightning/releases
CLVERSION="v24.08.1"
CLVERSION="v24.11"
# https://github.com/ElementsProject/lightning/tree/master/contrib/keys
# rustyrussell D9200E6CD1ADB8F1
@@ -11,9 +11,9 @@ CLVERSION="v24.08.1"
# pneuroth (nepet) C3F21EE387FF4CD2
# sfarooqui (ShahanaFarooqui) B56B4453DA8C6DF7FC9BCFCBDCA40B7128DA62A8
# amyers (endothermicdev) F3BF63F2747436AB
PGPsigner="sfarooqui"
PGPsigner="rustyrussell"
PGPpubkeyLink="https://raw.githubusercontent.com/ElementsProject/lightning/master/contrib/keys/${PGPsigner}.txt"
PGPpubkeyFingerprint="B56B4453DA8C6DF7FC9BCFCBDCA40B7128DA62A8"
PGPpubkeyFingerprint="D9200E6CD1ADB8F1"
# help
if [ $# -eq 0 ] || [ "$1" = "-h" ] || [ "$1" = "--help" ]; then
@@ -162,7 +162,7 @@ if [ "$1" = "install" ]; then
exit 1
fi
echo
echo "- OK the installation of Core Lightning v${installed} is successful"
echo "- OK the installation of Core Lightning ${installed} is successful"
exit 0
fi

View File

@@ -185,8 +185,8 @@ if [ "$2" = "info" ]; then
cl_address="${pubkey}@${address}:${port}"
cl_tor=$(echo "${cl_address}" | grep -c ".onion")
cl_channels_pending=$(echo "${ln_getInfo}" | jq -r '.num_pending_channels')
cl_channels_active=$(echo "${ln_listpeers}" | jq -r '[.peers[] | select(.connected == true)] | length')
cl_channels_inactive=$(echo "${ln_listpeers}" | jq -r '[.peers[] | select(.connected == false)] | length')
cl_channels_active=$(echo "${ln_getInfo}" | jq -r '.num_active_channels')
cl_channels_inactive=$(echo "${ln_getInfo}" | jq -r '.num_inactive_channels')
cl_channels_total=$((cl_channels_active + cl_channels_inactive))
cl_peers=$(echo "${ln_getInfo}" | jq -r '.num_peers')
cl_fees_collected_msat=$(echo "${ln_getInfo}" | jq -r '.fees_collected_msat')

View File

@@ -4,17 +4,17 @@
## based on https://raspibolt.github.io/raspibolt/raspibolt_40_lnd.html#lightning-lnd
## see LND releases: https://github.com/lightningnetwork/lnd/releases
### 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
# PGPauthor="roasbeef"
# PGPpkeys="https://raw.githubusercontent.com/lightningnetwork/lnd/master/scripts/keys/roasbeef.asc"
# PGPcheck="A5B61896952D9FDA83BC054CDC42612E89237182"
PGPauthor="roasbeef"
PGPpkeys="https://raw.githubusercontent.com/lightningnetwork/lnd/master/scripts/keys/roasbeef.asc"
PGPcheck="A5B61896952D9FDA83BC054CDC42612E89237182"
# guggero
PGPauthor="guggero"
PGPpkeys="https://keybase.io/guggero/pgp_keys.asc"
PGPcheck="F4FC70F07310028424EFC20A8E4256593F177720"
# PGPauthor="guggero"
# PGPpkeys="https://keybase.io/guggero/pgp_keys.asc"
# PGPcheck="F4FC70F07310028424EFC20A8E4256593F177720"
# bitconner
#PGPauthor="bitconner"

View File

@@ -259,6 +259,19 @@ if [ "$2" = "wallet" ]; then
exit 1
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
lnd_wallet_channels_balance=$(echo "$ln_channelbalance" | jq -r '.balance')
lnd_wallet_channels_pending=$(echo "$ln_channelbalance" | jq -r '.pending_open_balance')

View File

@@ -167,6 +167,9 @@ EOF
# setting value in raspi blitz config
/home/admin/config.scripts/blitz.conf.sh set runBehindTor "off"
# remove "debug=tor" from bitcoin.conf
sudo sed -i '/^debug=tor$/d' /mnt/hdd/bitcoin/bitcoin.conf
# deactivate bitcoin over tor (function call)
deactivateBitcoinOverTor
echo

70
toc.sh
View File

@@ -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"