mirror of
https://github.com/rootzoll/raspiblitz.git
synced 2025-02-25 15:10:38 +01:00
When the mempool fills up to around 500MB, this causes the mempool.space backend to crash on RPI due to OOM. Additionally, raising this above 300MB on a local RPI node arguably isn't a good idea anyway, because: * If you have a 512MB mempool and all your peers have 300MB, you'll broadcast transactions that fit in your mempool but are rejected by all of your peers * If you connect an SPV wallet to your node, your wallet will think the TX is "in the mempool" despite actually being purged from the entire Bitcoin P2P network, and never attempt to rebroadcast the purged TX * In any case, the RPI has very limited RAM, so no point in wasting RAM on having such a large sized mempool for bitcoind
643 lines
26 KiB
Bash
Executable file
643 lines
26 KiB
Bash
Executable file
#!/bin/bash
|
||
|
||
# This script gets called from a fresh SD card
|
||
# starting up that has an config file on HDD
|
||
# from old RaspiBlitz or manufacturer to
|
||
# to install and config services
|
||
|
||
# LOGFILE - store debug logs of bootstrap
|
||
logFile="/home/admin/raspiblitz.log"
|
||
|
||
# INFOFILE - state data from bootstrap
|
||
infoFile="/home/admin/raspiblitz.info"
|
||
|
||
# CONFIGFILE - configuration of RaspiBlitz
|
||
configFile="/mnt/hdd/raspiblitz.conf"
|
||
|
||
# debug info
|
||
echo "STARTED Provisioning --> see logs in ${logFile}"
|
||
echo "STARTED Provisioning from preset config file" >> ${logFile}
|
||
sudo sed -i "s/^message=.*/message='Provisioning from Config'/g" ${infoFile}
|
||
|
||
# check if there is a config file
|
||
configExists=$(ls ${configFile} 2>/dev/null | grep -c '.conf')
|
||
if [ ${configExists} -eq 0 ]; then
|
||
echo "FAIL: no config file (${configFile}) found to run provision!" >> ${logFile}
|
||
exit 1
|
||
fi
|
||
|
||
# check that default parameter exist in config
|
||
parameterExists=$(cat /mnt/hdd/raspiblitz.conf | grep -c "lndExtraParameter=")
|
||
if [ ${parameterExists} -eq 0 ]; then
|
||
echo "lndExtraParameter=''" >> ${configFile}
|
||
fi
|
||
|
||
# check if file system was expanded to full capacity and sd card is bigger than 8GB
|
||
# see: https://github.com/rootzoll/raspiblitz/issues/936
|
||
echo "CHECK IF SD CARD NEEDS EXPANSION" >> ${logFile}
|
||
source ${infoFile}
|
||
isRaspbian=$(echo $baseimage | grep -c 'raspbian')
|
||
isArmbian=$(echo $baseimage | grep -c 'armbian')
|
||
resizeRaspbian="/usr/bin/raspi-config"
|
||
resizeArmbian="/usr/lib/armbian/armbian-resize-filesystem"
|
||
|
||
minimumSizeByte=8192000000
|
||
rootPartition=$(sudo mount | grep " / " | cut -d " " -f 1 | cut -d "/" -f 3)
|
||
rootPartitionBytes=$(lsblk -b -o NAME,SIZE | grep "${rootPartition}" | tr -s ' ' | cut -d " " -f 2)
|
||
|
||
echo "rootPartition(${rootPartition})" >> ${logFile}
|
||
echo "rootPartitionBytes(${rootPartitionBytes})" >> ${logFile}
|
||
|
||
if [ ${#rootPartition} -gt 0 ]; then
|
||
echo "### CHECKING ROOT PARTITION SIZE ###" >> ${logFile}
|
||
sudo sed -i "s/^message=.*/message='Checking Disk size'/g" ${infoFile}
|
||
echo "Size in Bytes is: ${rootPartitionBytes} bytes on ($rootPartition)" >> ${logFile}
|
||
if [ $rootPartitionBytes -lt $minimumSizeByte ]; then
|
||
echo "Disk filesystem is smaller than ${minimumSizeByte} byte." >> ${logFile}
|
||
if [ ${fsexpanded} -eq 1 ]; then
|
||
echo "There was already an attempt to expand the fs, but still not bigger than 8GB." >> ${logFile}
|
||
echo "SD card seems to small - at least a 16GB disk is needed. Display on LCD to user." >> ${logFile}
|
||
sudo sed -i "s/^state=.*/state=sdtoosmall/g" ${infoFile}
|
||
sudo sed -i "s/^message=.*/message='Min 16GB SD card needed'/g" ${infoFile}
|
||
exit 1
|
||
else
|
||
echo "Try to expand SD card FS, display info and reboot." >> ${logFile}
|
||
sudo sed -i "s/^state=.*/state=reboot/g" ${infoFile}
|
||
sudo sed -i "s/^message=.*/message='Expanding SD Card'/g" ${infoFile}
|
||
sudo sed -i "s/^fsexpanded=.*/fsexpanded=1/g" ${infoFile}
|
||
if [ "${cpu}" == "x86_64" ]; then
|
||
echo "Please expand disk size." >> ${logFile}
|
||
# TODO: Expand disk size on x86_64
|
||
elif [ ${isRaspbian} -gt 0 ]; then
|
||
if [ -x ${resizeRaspbian} ]; then
|
||
echo "RUNNING EXPAND: ${resizeRaspbian}" >> ${logFile}
|
||
sudo $resizeRaspbian --expand-rootfs
|
||
else
|
||
echo "FAIL to execute: ${resizeRaspbian}" >> ${logFile}
|
||
fi
|
||
elif [ ${isArmbian} -gt 0 ]; then
|
||
if [ -x ${resizeArmbian} ]; then
|
||
echo "RUNNING EXPAND: ${resizeArmbian}" >> ${logFile}
|
||
sudo $resizeArmbian start
|
||
else
|
||
echo "FAIL to execute: ${resizeArmbian}" >> ${logFile}
|
||
fi
|
||
fi
|
||
sleep 6
|
||
sudo shutdown -r now
|
||
exit 0
|
||
fi
|
||
else
|
||
echo "Size looks good. Bigger than ${minimumSizeByte} byte disk is used." >> ${logFile}
|
||
fi
|
||
else
|
||
echo "Disk of root partition ('$rootPartition') not detected, skipping the size check." >> ${logFile}
|
||
fi
|
||
|
||
# import config values
|
||
sudo chmod 777 ${configFile}
|
||
source ${configFile}
|
||
|
||
# check if the system was configured for HDMI and needs switch
|
||
# keep as one of the first so that user can see video output
|
||
if [ "${lcd2hdmi}" == "on" ]; then
|
||
echo "RaspiBlitz has config to run with HDMI video outout." >> ${logFile}
|
||
# check that raspiblitz.info shows that confing script was not run yet
|
||
switchScriptNotRunYet=$(sudo cat /home/admin/raspiblitz.info | grep -c "lcd2hdmi=off")
|
||
if [ ${switchScriptNotRunYet} -eq 1 ]; then
|
||
echo "--> Switching to HDMI video output & rebooting" >> ${logFile}
|
||
sudo /home/admin/config.scripts/blitz.lcd.sh hdmi on
|
||
else
|
||
echo "OK RaspiBlitz was already switched to HDMI output." >> ${logFile}
|
||
fi
|
||
fi
|
||
|
||
##########################
|
||
# BASIC SYSTEM SETTINGS
|
||
##########################
|
||
|
||
echo "### BASIC SYSTEM SETTINGS ###" >> ${logFile}
|
||
sudo sed -i "s/^message=.*/message='Setup System .'/g" ${infoFile}
|
||
|
||
# install litecoin (just if needed)
|
||
if [ "${network}" = "litecoin" ]; then
|
||
echo "Installing Litecoin ..." >> ${logFile}
|
||
/home/admin/config.scripts/blitz.litecoin.sh on >> ${logFile}
|
||
fi
|
||
|
||
# set hostname data
|
||
echo "Setting lightning alias: ${hostname}" >> ${logFile}
|
||
sudo sed -i "s/^alias=.*/alias=${hostname}/g" /home/admin/assets/lnd.${network}.conf >> ${logFile} 2>&1
|
||
|
||
# link old SSH PubKeys
|
||
# so that client ssh_known_hosts is not complaining after update
|
||
if [ -d "/mnt/hdd/ssh" ]; then
|
||
echo "Old SSH PubKey exists on HDD > copy them HDD to SD card for next start" >> ${logFile}
|
||
sudo cp -r /mnt/hdd/ssh/* /etc/ssh/ >> ${logFile} 2>&1
|
||
else
|
||
echo "No SSH PubKey exists on HDD > copy from SD card to HDD as backup" >> ${logFile}
|
||
sudo cp -r /etc/ssh /mnt/hdd/ssh >> ${logFile} 2>&1
|
||
fi
|
||
# just copy - dont link anymore so that sshd will also start without HDD connected
|
||
# see: https://github.com/rootzoll/raspiblitz/issues/1798
|
||
#sudo rm -rf /etc/ssh >> ${logFile} 2>&1
|
||
#sudo ln -s /mnt/hdd/ssh /etc/ssh >> ${logFile} 2>&1
|
||
#sudo /home/admin/config.scripts/blitz.systemd.sh update-sshd >> ${logFile} 2>&1
|
||
|
||
# optimze if RAM >1GB
|
||
kbSizeRAM=$(cat /proc/meminfo | grep "MemTotal" | sed 's/[^0-9]*//g')
|
||
if [ ${kbSizeRAM} -gt 1500000 ]; then
|
||
echo "Detected RAM >1GB --> optimizing ${network}.conf"
|
||
sudo sed -i "s/^dbcache=.*/dbcache=1024/g" /mnt/hdd/${network}/${network}.conf
|
||
sudo sed -i "s/^maxmempool=.*/maxmempool=300/g" /mnt/hdd/${network}/${network}.conf
|
||
fi
|
||
if [ ${kbSizeRAM} -gt 3500000 ]; then
|
||
echo "Detected RAM >3GB --> optimizing ${network}.conf"
|
||
sudo sed -i "s/^maxmempool=.*/maxmempool=300/g" /mnt/hdd/${network}/${network}.conf
|
||
fi
|
||
|
||
# link and copy HDD content into new OS on sd card
|
||
echo "Copy HDD content for user admin" >> ${logFile}
|
||
sudo mkdir /home/admin/.${network} >> ${logFile} 2>&1
|
||
sudo cp /mnt/hdd/${network}/${network}.conf /home/admin/.${network}/${network}.conf >> ${logFile} 2>&1
|
||
sudo mkdir /home/admin/.lnd >> ${logFile} 2>&1
|
||
sudo cp /mnt/hdd/lnd/lnd.conf /home/admin/.lnd/lnd.conf >> ${logFile} 2>&1
|
||
sudo cp /mnt/hdd/lnd/tls.cert /home/admin/.lnd/tls.cert >> ${logFile} 2>&1
|
||
sudo mkdir /home/admin/.lnd/data >> ${logFile} 2>&1
|
||
sudo cp -r /mnt/hdd/lnd/data/chain /home/admin/.lnd/data/chain >> ${logFile} 2>&1
|
||
sudo chown -R admin:admin /home/admin/.${network} >> ${logFile} 2>&1
|
||
sudo chown -R admin:admin /home/admin/.lnd >> ${logFile} 2>&1
|
||
sudo cp /home/admin/assets/${network}d.service /etc/systemd/system/${network}d.service >> ${logFile} 2>&1
|
||
sed -i "5s/.*/Wants=${network}d.service/" /home/admin/assets/lnd.service >> ${logFile} 2>&1
|
||
sed -i "6s/.*/After=${network}d.service/" /home/admin/assets/lnd.service >> ${logFile} 2>&1
|
||
sudo cp /home/admin/assets/lnd.service /etc/systemd/system/lnd.service >> ${logFile} 2>&1
|
||
|
||
sudo cp /home/admin/assets/tmux.conf.local /mnt/hdd/.tmux.conf.local >> ${logFile} 2>&1
|
||
sudo chown admin:admin /mnt/hdd/.tmux.conf.local >> ${logFile} 2>&1
|
||
sudo ln -s -f /mnt/hdd/.tmux.conf.local /home/admin/.tmux.conf.local >> ${logFile} 2>&1
|
||
|
||
# backup LND dir (especially for macaroons and tlscerts)
|
||
# https://github.com/rootzoll/raspiblitz/issues/324
|
||
echo "*** Make backup of LND directory" >> ${logFile}
|
||
sudo rm -r /mnt/hdd/backup_lnd
|
||
sudo cp -r /mnt/hdd/lnd /mnt/hdd/backup_lnd >> ${logFile} 2>&1
|
||
numOfDiffers=$(sudo diff -arq /mnt/hdd/lnd /mnt/hdd/backup_lnd | grep -c "differ")
|
||
if [ ${numOfDiffers} -gt 0 ]; then
|
||
echo "FAIL: Backup was not successfull" >> ${logFile}
|
||
sudo diff -arq /mnt/hdd/lnd /mnt/hdd/backup_lnd >> ${logFile} 2>&1
|
||
echo "removing backup dir to prevent false override" >> ${logFile}
|
||
else
|
||
echo "OK Backup is valid." >> ${logFile}
|
||
fi
|
||
echo "" >> ${logFile}
|
||
|
||
# finish setup (SWAP, Benus, Firewall, Update, ..)
|
||
sudo sed -i "s/^message=.*/message='Setup System ..'/g" ${infoFile}
|
||
/home/admin/90finishSetup.sh >> ${logFile} 2>&1
|
||
|
||
##########################
|
||
# PROVISIONING SERVICES
|
||
##########################
|
||
sudo sed -i "s/^message=.*/message='Installing Services'/g" ${infoFile}
|
||
|
||
echo "### RUNNING PROVISIONING SERVICES ###" >> ${logFile}
|
||
|
||
# BLITZ WEB SERVICE
|
||
echo "Provisioning BLITZ WEB SERVICE - run config script" >> ${logFile}
|
||
/home/admin/config.scripts/blitz.web.sh on >> ${logFile} 2>&1
|
||
|
||
# LND INTERIMS UPDATE
|
||
if [ ${#lndInterimsUpdate} -gt 0 ]; then
|
||
sudo sed -i "s/^message=.*/message='Provisioning LND update'/g" ${infoFile}
|
||
if [ "${lndInterimsUpdate}" == "reckless" ]; then
|
||
# recklessly update LND to latest release on GitHub (just for test & dev nodes)
|
||
echo "Provisioning LND reckless interims update" >> ${logFile}
|
||
sudo /home/admin/config.scripts/lnd.update.sh reckless >> ${logFile}
|
||
else
|
||
# when installing the same sd image - this will re-trigger the secure interims update
|
||
# if this a update with a newer RaspiBlitz version .. interims update will be ignored
|
||
# because standard LND version is most more up to date
|
||
echo "Provisioning LND verified interims update" >> ${logFile}
|
||
sudo /home/admin/config.scripts/lnd.update.sh verified ${lndInterimsUpdate} >> ${logFile}
|
||
fi
|
||
else
|
||
echo "Provisioning LND interims update - keep default" >> ${logFile}
|
||
fi
|
||
|
||
# TESTNET
|
||
if [ "${chain}" = "test" ]; then
|
||
echo "Provisioning TESTNET - run config script" >> ${logFile}
|
||
sudo sed -i "s/^message=.*/message='Provisioning Testnet'/g" ${infoFile}
|
||
sudo /home/admin/config.scripts/network.chain.sh testnet >> ${logFile} 2>&1
|
||
else
|
||
echo "Provisioning TESTNET - keep default" >> ${logFile}
|
||
fi
|
||
|
||
# TOR
|
||
if [ "${runBehindTor}" = "on" ]; then
|
||
echo "Provisioning TOR - run config script" >> ${logFile}
|
||
sudo sed -i "s/^message=.*/message='Setup Tor (takes time)'/g" ${infoFile}
|
||
sudo /home/admin/config.scripts/internet.tor.sh on >> ${logFile} 2>&1
|
||
else
|
||
echo "Provisioning TOR - keep default" >> ${logFile}
|
||
fi
|
||
|
||
# AUTO PILOT
|
||
if [ "${autoPilot}" = "on" ]; then
|
||
echo "Provisioning AUTO PILOT - run config script" >> ${logFile}
|
||
sudo sed -i "s/^message=.*/message='Setup AutoPilot'/g" ${infoFile}
|
||
sudo /home/admin/config.scripts/lnd.autopilot.sh on >> ${logFile} 2>&1
|
||
else
|
||
echo "Provisioning AUTO PILOT - keep default" >> ${logFile}
|
||
fi
|
||
|
||
# NETWORK UPNP
|
||
if [ "${networkUPnP}" = "on" ]; then
|
||
echo "Provisioning NETWORK UPnP - run config script" >> ${logFile}
|
||
sudo sed -i "s/^message=.*/message='Setup UPnP'/g" ${infoFile}
|
||
sudo /home/admin/config.scripts/network.upnp.sh on >> ${logFile} 2>&1
|
||
else
|
||
echo "Provisioning NETWORK UPnP - keep default" >> ${logFile}
|
||
fi
|
||
|
||
# LND AUTO NAT DISCOVERY
|
||
if [ "${autoNatDiscovery}" = "on" ]; then
|
||
echo "Provisioning LND AUTO NAT DISCOVERY - run config script" >> ${logFile}
|
||
sudo sed -i "s/^message=.*/message='Setup AutoNAT'/g" ${infoFile}
|
||
sudo /home/admin/config.scripts/lnd.autonat.sh on >> ${logFile} 2>&1
|
||
else
|
||
echo "Provisioning AUTO NAT DISCOVERY - keep default" >> ${logFile}
|
||
fi
|
||
|
||
# DYNAMIC DOMAIN
|
||
if [ "${#dynDomain}" -gt 0 ]; then
|
||
echo "Provisioning DYNAMIC DOMAIN - run config script" >> ${logFile}
|
||
sudo sed -i "s/^message=.*/message='Setup DynamicDomain'/g" ${infoFile}
|
||
sudo /home/admin/config.scripts/internet.dyndomain.sh on ${dynDomain} ${dynUpdateUrl} >> ${logFile} 2>&1
|
||
else
|
||
echo "Provisioning DYNAMIC DOMAIN - keep default" >> ${logFile}
|
||
fi
|
||
|
||
# RTL
|
||
if [ "${rtlWebinterface}" = "on" ]; then
|
||
echo "Provisioning RTL - run config script" >> ${logFile}
|
||
sudo sed -i "s/^message=.*/message='Setup RTL (takes time)'/g" ${infoFile}
|
||
sudo -u admin /home/admin/config.scripts/bonus.rtl.sh on >> ${logFile} 2>&1
|
||
sudo systemctl disable RTL # will get enabled after recover dialog
|
||
else
|
||
echo "Provisioning RTL - keep default" >> ${logFile}
|
||
fi
|
||
|
||
#LOOP
|
||
if [ "${loop}" = "on" ]; then
|
||
echo "Provisioning Lightning Loop - run config script" >> ${logFile}
|
||
sudo sed -i "s/^message=.*/message='Setup Lightning Loop'/g" ${infoFile}
|
||
sudo -u admin /home/admin/config.scripts/bonus.loop.sh on >> ${logFile} 2>&1
|
||
sudo systemctl disable loopd # will get enabled after recover dialog
|
||
else
|
||
echo "Provisioning Lightning Loop - keep default" >> ${logFile}
|
||
fi
|
||
|
||
#BTC RPC EXPLORER
|
||
if [ "${BTCRPCexplorer}" = "on" ]; then
|
||
echo "Provisioning BTCRPCexplorer - run config script" >> ${logFile}
|
||
sudo sed -i "s/^message=.*/message='Setup BTCRPCexplorer (takes time)'/g" ${infoFile}
|
||
sudo -u admin /home/admin/config.scripts/bonus.btc-rpc-explorer.sh on >> ${logFile} 2>&1
|
||
sudo systemctl disable btc-rpc-explorer # will get enabled after recover dialog
|
||
else
|
||
echo "Provisioning BTCRPCexplorer - keep default" >> ${logFile}
|
||
fi
|
||
|
||
#ELECTRS
|
||
if [ "${ElectRS}" = "on" ]; then
|
||
echo "Provisioning ElectRS - run config script" >> ${logFile}
|
||
sudo sed -i "s/^message=.*/message='Setup ElectRS (takes time)'/g" ${infoFile}
|
||
sudo -u admin /home/admin/config.scripts/bonus.electrs.sh on >> ${logFile} 2>&1
|
||
sudo systemctl disable electrs # will get enabled after recover dialog
|
||
else
|
||
echo "Provisioning ElectRS - keep default" >> ${logFile}
|
||
fi
|
||
|
||
# BTCPAYSERVER
|
||
if [ "${BTCPayServer}" = "on" ]; then
|
||
|
||
echo "Provisioning BTCPAYSERVER on TOR - running setup" >> ${logFile}
|
||
sudo sed -i "s/^message=.*/message='Setup BTCPay (takes time)'/g" ${infoFile}
|
||
sudo -u admin /home/admin/config.scripts/bonus.btcpayserver.sh on >> ${logFile} 2>&1
|
||
|
||
#echo "Provisioning BTCPAYSERVER on TOR - run on after bootup script" >> ${logFile}
|
||
# because BTCPAY server freezes during recovery .. it will get installed after reboot
|
||
#echo "sudo -u admin /home/admin/config.scripts/bonus.btcpayserver.sh on" >> /home/admin/setup.sh
|
||
#sudo chmod +x /home/admin/setup.sh >> ${logFile}
|
||
#sudo ls -la /home/admin/setup.sh >> ${logFile}
|
||
|
||
else
|
||
echo "Provisioning BTCPayServer - keep default" >> ${logFile}
|
||
fi
|
||
|
||
# LNDMANAGE
|
||
if [ "${lndmanage}" = "on" ]; then
|
||
echo "Provisioning lndmanage - run config script" >> ${logFile}
|
||
sudo sed -i "s/^message=.*/message='Setup lndmanage '/g" ${infoFile}
|
||
sudo -u admin /home/admin/config.scripts/bonus.lndmanage.sh on >> ${logFile} 2>&1
|
||
else
|
||
echo "Provisioning lndmanage - not active" >> ${logFile}
|
||
fi
|
||
|
||
# CUSTOM PORT
|
||
echo "Provisioning LND Port" >> ${logFile}
|
||
if [ ${#lndPort} -eq 0 ]; then
|
||
lndPort=$(sudo cat /mnt/hdd/lnd/lnd.conf | grep "^listen=*" | cut -f2 -d':')
|
||
fi
|
||
if [ ${#lndPort} -gt 0 ]; then
|
||
if [ "${lndPort}" != "9735" ]; then
|
||
echo "User is running custom LND port: ${lndPort}" >> ${logFile}
|
||
sudo /home/admin/config.scripts/lnd.setport.sh ${lndPort} >> ${logFile} 2>&1
|
||
else
|
||
echo "User is running standard LND port: ${lndPort}" >> ${logFile}
|
||
fi
|
||
else
|
||
echo "Was not able to get LND port from config." >> ${logFile}
|
||
fi
|
||
|
||
# DNS Server
|
||
if [ ${#dnsServer} -gt 0 ]; then
|
||
echo "Provisioning DNS Server - Setting DNS Server" >> ${logFile}
|
||
sudo /home/admin/config.scripts/internet.dns.sh ${dnsServer} >> ${logFile} 2>&1
|
||
else
|
||
echo "Provisioning DNS Server - keep default" >> ${logFile}
|
||
fi
|
||
|
||
# ROOT SSH KEYS
|
||
# check if a backup on HDD exists – if so, restore it
|
||
backupRootSSH=$(sudo ls /mnt/hdd/ssh/root_backup 2>/dev/null | grep -c "id_rsa")
|
||
if [ ${backupRootSSH} -gt 0 ]; then
|
||
echo "Provisioning Root SSH Keys - RESTORING from HDD" >> ${logFile}
|
||
sudo cp -r /mnt/hdd/ssh/root_backup /root/.ssh
|
||
sudo chown -R root:root /root/.ssh
|
||
else
|
||
echo "Provisioning Root SSH Keys - keep default" >> ${logFile}
|
||
fi
|
||
|
||
# SSH TUNNEL
|
||
if [ "${#sshtunnel}" -gt 0 ]; then
|
||
echo "Provisioning SSH Tunnel - run config script" >> ${logFile}
|
||
sudo sed -i "s/^message=.*/message='Setup SSH Tunnel'/g" ${infoFile}
|
||
sudo /home/admin/config.scripts/internet.sshtunnel.py restore ${sshtunnel} >> ${logFile} 2>&1
|
||
else
|
||
echo "Provisioning SSH Tunnel - not active" >> ${logFile}
|
||
fi
|
||
|
||
# ZEROTIER
|
||
if [ "${#zerotier}" -gt 0 ] && [ "${zerotier}" != "off" ]; then
|
||
echo "Provisioning ZeroTier - run config script" >> ${logFile}
|
||
sudo sed -i "s/^message=.*/message='Setup ZeroTier'/g" ${infoFile}
|
||
sudo /home/admin/config.scripts/bonus.zerotier.sh on ${zerotier} >> ${logFile} 2>&1
|
||
else
|
||
echo "Provisioning ZeroTier - not active" >> ${logFile}
|
||
fi
|
||
|
||
# LCD ROTATE
|
||
if [ "${#lcdrotate}" -eq 0 ]; then
|
||
# when upgrading from an old raspiblitz - enforce lcdrotate = 0
|
||
lcdrotate=0
|
||
fi
|
||
echo "Provisioning LCD rotate - run config script" >> ${logFile}
|
||
sudo sed -i "s/^message=.*/message='LCD Rotate'/g" ${infoFile}
|
||
sudo /home/admin/config.scripts/blitz.lcd.sh rotate ${lcdrotate} >> ${logFile} 2>&1
|
||
|
||
# TOUCHSCREEN
|
||
if [ "${#touchscreen}" -gt 0 ]; then
|
||
echo "Provisioning Touchscreen - run config script" >> ${logFile}
|
||
sudo sed -i "s/^message=.*/message='Setup Touchscreen'/g" ${infoFile}
|
||
sudo /home/admin/config.scripts/blitz.touchscreen.sh ${touchscreen} >> ${logFile} 2>&1
|
||
else
|
||
echo "Provisioning Touchscreen - not active" >> ${logFile}
|
||
fi
|
||
|
||
# UPS
|
||
if [ "${#ups}" -gt 0 ]; then
|
||
echo "Provisioning UPS - run config script" >> ${logFile}
|
||
sudo sed -i "s/^message=.*/message='Setup UPS'/g" ${infoFile}
|
||
sudo /home/admin/config.scripts/blitz.ups.sh on ${ups} >> ${logFile} 2>&1
|
||
else
|
||
echo "Provisioning UPS - not active" >> ${logFile}
|
||
fi
|
||
|
||
# LNbits
|
||
if [ "${LNBits}" = "on" ]; then
|
||
echo "Provisioning LNbits - run config script" >> ${logFile}
|
||
sudo sed -i "s/^message=.*/message='Setup LNbits '/g" ${infoFile}
|
||
sudo -u admin /home/admin/config.scripts/bonus.lnbits.sh on >> ${logFile} 2>&1
|
||
else
|
||
echo "Provisioning LNbits - keep default" >> ${logFile}
|
||
fi
|
||
|
||
# JoinMarket
|
||
if [ "${joinmarket}" = "on" ]; then
|
||
echo "Provisioning JoinMarket - run config script" >> ${logFile}
|
||
sudo sed -i "s/^message=.*/message='Setup JoinMarket'/g" ${infoFile}
|
||
sudo /home/admin/config.scripts/bonus.joinmarket.sh on >> ${logFile} 2>&1
|
||
else
|
||
echo "Provisioning JoinMarket - keep default" >> ${logFile}
|
||
fi
|
||
|
||
# Specter
|
||
if [ "${specter}" = "on" ]; then
|
||
echo "Provisioning Specter - run config script" >> ${logFile}
|
||
sudo sed -i "s/^message=.*/message='Setup Specter'/g" ${infoFile}
|
||
sudo -u admin /home/admin/config.scripts/bonus.cryptoadvance-specter.sh on >> ${logFile} 2>&1
|
||
else
|
||
echo "Provisioning Specter - keep default" >> ${logFile}
|
||
fi
|
||
|
||
# Faraday
|
||
if [ "${faraday}" = "on" ]; then
|
||
echo "Provisioning Faraday - run config script" >> ${logFile}
|
||
sudo sed -i "s/^message=.*/message='Setup Faraday'/g" ${infoFile}
|
||
sudo -u admin /home/admin/config.scripts/bonus.faraday.sh on >> ${logFile} 2>&1
|
||
else
|
||
echo "Provisioning Faraday - keep default" >> ${logFile}
|
||
fi
|
||
|
||
# BOS
|
||
if [ "${bos}" = "on" ]; then
|
||
echo "Provisioning Balance of Satoshis - run config script" >> ${logFile}
|
||
sudo sed -i "s/^message=.*/message='Setup Balance of Satoshis'/g" ${infoFile}
|
||
sudo -u admin /home/admin/config.scripts/bonus.bos.sh on >> ${logFile} 2>&1
|
||
else
|
||
echo "Provisioning Balance of Satoshis - keep default" >> ${logFile}
|
||
fi
|
||
|
||
# thunderhub
|
||
if [ "${thunderhub}" = "on" ]; then
|
||
echo "Provisioning ThunderHub - run config script" >> ${logFile}
|
||
sudo sed -i "s/^message=.*/message='Setup ThunderHub'/g" ${infoFile}
|
||
sudo -u admin /home/admin/config.scripts/bonus.thunderhub.sh on >> ${logFile} 2>&1
|
||
else
|
||
echo "Provisioning ThunderHub - keep default" >> ${logFile}
|
||
fi
|
||
|
||
# mempool space
|
||
if [ "${mempoolExplorer}" = "on" ]; then
|
||
echo "Provisioning MempoolSpace - run config script" >> ${logFile}
|
||
sudo sed -i "s/^message=.*/message='Setup Mempool Space'/g" ${infoFile}
|
||
sudo -u admin /home/admin/config.scripts/bonus.mempool.sh on >> ${logFile} 2>&1
|
||
else
|
||
echo "Provisioning Mempool Explorer - keep default" >> ${logFile}
|
||
fi
|
||
|
||
# letsencrypt
|
||
if [ "${letsencrypt}" = "on" ]; then
|
||
echo "Provisioning letsencrypt - run config script" >> ${logFile}
|
||
sudo sed -i "s/^message=.*/message='Setup letsencrypt'/g" ${infoFile}
|
||
sudo -u admin /home/admin/config.scripts/bonus.letsencrypt.sh on >> ${logFile} 2>&1
|
||
else
|
||
echo "Provisioning letsencrypt - keep default" >> ${logFile}
|
||
fi
|
||
|
||
# kindle-display
|
||
if [ "${kindleDisplay}" = "on" ]; then
|
||
echo "Provisioning kindle-display - run config script" >> ${logFile}
|
||
sudo sed -i "s/^message=.*/message='Setup kindle-display'/g" ${infoFile}
|
||
sudo -u admin /home/admin/config.scripts/bonus.kindle-display.sh on >> ${logFile} 2>&1
|
||
else
|
||
echo "Provisioning kindle-display - keep default" >> ${logFile}
|
||
fi
|
||
|
||
# pyblock
|
||
if [ "${pyblock}" = "on" ]; then
|
||
echo "Provisioning pyblock - run config script" >> ${logFile}
|
||
sudo sed -i "s/^message=.*/message='Setup pyblock'/g" ${infoFile}
|
||
sudo -u admin /home/admin/config.scripts/bonus.pyblock.sh on >> ${logFile} 2>&1
|
||
else
|
||
echo "Provisioning pyblock - keep default" >> ${logFile}
|
||
fi
|
||
|
||
# stacking-sats-kraken
|
||
if [ "${stackingSatsKraken}" = "on" ]; then
|
||
echo "Provisioning Stacking Sats Kraken - run config script" >> ${logFile}
|
||
sudo sed -i "s/^message=.*/message='Setup Stacking Sats Kraken'/g" ${infoFile}
|
||
sudo -u admin /home/admin/config.scripts/bonus.stacking-sats-kraken.sh on >> ${logFile} 2>&1
|
||
else
|
||
echo "Provisioning Stacking Sats Kraken - keep default" >> ${logFile}
|
||
fi
|
||
|
||
# pool
|
||
if [ "${pool}" = "on" ]; then
|
||
echo "Provisioning Pool - run config script" >> ${logFile}
|
||
sudo sed -i "s/^message=.*/message='Setup Pool'/g" ${infoFile}
|
||
sudo -u admin /home/admin/config.scripts/bonus.pool.sh on >> ${logFile} 2>&1
|
||
else
|
||
echo "Provisioning Pool - keep default" >> ${logFile}
|
||
fi
|
||
|
||
# sphinxrelay
|
||
if [ "${sphinxrelay}" = "on" ]; then
|
||
echo "Sphinx-Relay - run config script" >> ${logFile}
|
||
sudo sed -i "s/^message=.*/message='Setup Sphinx-Relay'/g" ${infoFile}
|
||
sudo -u admin /home/admin/config.scripts/bonus.sphinxrelay.sh on >> ${logFile} 2>&1
|
||
else
|
||
echo "Sphinx-Relay - keep default" >> ${logFile}
|
||
fi
|
||
|
||
# circuitbreaker
|
||
if [ "${circuitbreaker}" = "on" ]; then
|
||
echo "Provisioning CircuitBreaker - run config script" >> ${logFile}
|
||
sudo sed -i "s/^message=.*/message='Setup CircuitBreaker'/g" ${infoFile}
|
||
sudo -u admin /home/admin/config.scripts/bonus.circuitbreaker.sh on >> ${logFile} 2>&1
|
||
else
|
||
echo "Provisioning CircuitBreaker - keep default" >> ${logFile}
|
||
fi
|
||
|
||
# custom install script from user
|
||
customInstallAvailable=$(sudo ls /mnt/hdd/app-data/custom-installs.sh 2>/dev/null | grep -c "custom-installs.sh")
|
||
if [ ${customInstallAvailable} -gt 0 ]; then
|
||
echo "Running the custom install script .." >> ${logFile}
|
||
# copy script over to admin (in case HDD is not allowing exec)
|
||
sudo cp -av /mnt/hdd/app-data/custom-installs.sh /home/admin/custom-install.sh >> ${logFile}
|
||
# make sure script is executable
|
||
sudo chmod +x /home/admin/custom-install.sh >> ${logFile}
|
||
# run it & delete it again
|
||
sudo /home/admin/custom-install.sh >> ${logFile}
|
||
sudo rm /home/admin/custom-install.sh >> ${logFile}
|
||
echo "Done" >> ${logFile}
|
||
else
|
||
echo "No custom install script ... adding the placeholder." >> ${logFile}
|
||
sudo cp /home/admin/assets/custom-installs.sh /mnt/hdd/app-data/custom-installs.sh
|
||
fi
|
||
|
||
# replay backup LND conf & tlscerts
|
||
# https://github.com/rootzoll/raspiblitz/issues/324
|
||
echo "" >> ${logFile}
|
||
echo "*** Replay backup of LND conf/tls" >> ${logFile}
|
||
if [ -d "/mnt/hdd/backup_lnd" ]; then
|
||
|
||
echo "Copying TLS ..." >> ${logFile}
|
||
sudo cp /mnt/hdd/backup_lnd/tls.cert /mnt/hdd/lnd/tls.cert >> ${logFile} 2>&1
|
||
sudo cp /mnt/hdd/backup_lnd/tls.key /mnt/hdd/lnd/tls.key >> ${logFile} 2>&1
|
||
sudo chown -R bitcoin:bitcoin /mnt/hdd/lnd >> ${logFile} 2>&1
|
||
echo "On next final restart admin creds will be updated by _boostrap.sh" >> ${logFile}
|
||
|
||
echo "DONE" >> ${logFile}
|
||
else
|
||
echo "No BackupDir so skipping that step." >> ${logFile}
|
||
fi
|
||
echo "" >> ${logFile}
|
||
|
||
# repair Bitcoin conf if needed
|
||
echo "*** Repair Bitcioin Conf (if needed)" >> ${logFile}
|
||
confExists="$(sudo ls /mnt/hdd/${network} | grep -c "${network}.conf")"
|
||
if [ ${confExists} -eq 0 ]; then
|
||
echo "Doing init of ${network}.conf" >> ${logFile}
|
||
sudo cp /home/admin/assets/bitcoin.conf /mnt/hdd/bitcoin/bitcoin.conf
|
||
sudo chown bitcoin:bitcoin /mnt/hdd/bitcoin/bitcoin.conf
|
||
fi
|
||
echo "Aligning lnd.conf & ${network}.conf" >> ${logFile}
|
||
rpcpass=$(sudo cat /mnt/hdd/lnd/lnd.conf | grep "${network}d.rpcpass" | cut -d "=" -f2)
|
||
sudo sed -i "s/^rpcpassword=.*/rpcpassword=${rpcpass}/g" /mnt/hdd/bitcoin/bitcoin.conf 2>/dev/null
|
||
|
||
# singal setup done
|
||
sudo sed -i "s/^message=.*/message='Setup Done'/g" ${infoFile}
|
||
|
||
# set the local network hostname (just if set in config - will not be set anymore by default in newer version)
|
||
# have at the end - see https://github.com/rootzoll/raspiblitz/issues/462
|
||
# see also https://github.com/rootzoll/raspiblitz/issues/819
|
||
if [ ${#hostname} -gt 0 ]; then
|
||
hostnameSanatized=$(echo "${hostname}"| tr -dc '[:alnum:]\n\r')
|
||
if [ ${#hostnameSanatized} -gt 0 ]; then
|
||
# by default set hostname for older versions on update
|
||
if [ ${#setnetworkname} -eq 0 ]; then
|
||
setnetworkname=1
|
||
fi
|
||
if [ "${setnetworkname}" = "1" ]; then
|
||
echo "Setting new network hostname '$hostnameSanatized'" >> ${logFile}
|
||
sudo raspi-config nonint do_hostname ${hostnameSanatized} >> ${logFile} 2>&1
|
||
else
|
||
echo "Not setting local network hostname" >> ${logFile}
|
||
fi
|
||
else
|
||
echo "WARNING: hostname in raspiblitz.conf contains just special chars" >> ${logFile}
|
||
fi
|
||
else
|
||
echo "No hostname set." >> ${logFile}
|
||
fi
|
||
|
||
# PERMANENT MOUNT OF HDD/SSD
|
||
# always at the end, because data drives will be just available again after a reboot
|
||
echo "Prepare fstab for permanent data drive mounting .." >> ${logFile}
|
||
# get info on data drive
|
||
source <(sudo /home/admin/config.scripts/blitz.datadrive.sh status)
|
||
# update /etc/fstab
|
||
echo "datadisk --> ${datadisk}" >> ${logFile}
|
||
echo "datapartition --> ${datapartition}" >> ${logFile}
|
||
if [ ${isBTRFS} -eq 0 ]; then
|
||
sudo /home/admin/config.scripts/blitz.datadrive.sh fstab ${datapartition} >> ${logFile}
|
||
else
|
||
sudo /home/admin/config.scripts/blitz.datadrive.sh fstab ${datadisk} >> ${logFile}
|
||
fi
|
||
|
||
echo "DONE - Give raspi some cool off time after hard building .... 5 secs sleep" >> ${logFile}
|
||
sleep 5
|
||
|
||
echo "END Provisioning" >> ${logFile}
|