diff --git a/home.admin/00prepareSystem.sh b/home.admin/00prepareSystem.sh new file mode 100755 index 000000000..e09dc26c8 --- /dev/null +++ b/home.admin/00prepareSystem.sh @@ -0,0 +1,11 @@ +#!/bin/bash + + +# TODO: ON BASIC BITCOIN CONFIG +###### OPTIMIZE 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=512/g" /home/admin/assets/bitcoin.conf + sudo sed -i "s/^maxmempool=.*/maxmempool=300/g" /home/admin/assets/bitcoin.conf +fi \ No newline at end of file diff --git a/home.admin/00provisionDialog.sh b/home.admin/00provisionDialog.sh new file mode 100755 index 000000000..e6129b2f8 --- /dev/null +++ b/home.admin/00provisionDialog.sh @@ -0,0 +1,157 @@ +#!/bin/bash +_temp=$(mktemp -p /dev/shm/) + +## get basic info +INFOFILE +source /home/admin/raspiblitz.info + +# CHECK BASICS HDD info and react to no or too small HDD + +# prepare the config file (what will later become the raspiblitz.config) +source /home/admin/_version.info +CONFIGFILE="/home/admin/raspiblitz.config.tmp" +rm $CONFIGFILE 2>/dev/null +echo "# RASPIBLITZ CONFIG FILE" > $CONFIGFILE +echo "raspiBlitzVersion='${codeVersion}'" >> $CONFIGFILE +echo "lcdrotate=1" >> $CONFIGFILE + +# prepare the setup file (that constains info just needed for the rest of setup process) +SETUPFILE="/home/admin/raspiblitz.setup.tmp" +rm $SETUPFILE 2>/dev/null +echo "# RASPIBLITZ SETUP FILE" > $SETUPFILE + +# choose blockchain or select migration +OPTIONS=() +OPTIONS+=(BITCOIN "Setup BITCOIN and Lightning (DEFAULT)") +OPTIONS+=(LITECOIN "Setup LITECOIN and Lightning (EXPERIMENTAL)") +OPTIONS+=(MIGRATION "Upload a Migration File from old RaspiBlitz") +CHOICE=$(dialog --clear \ + --backtitle "RaspiBlitz ${codeVersion} - Setup" \ + --title "⚡ Welcome to your RaspiBlitz ⚡" \ + --menu "\nChoose how you want to setup your RaspiBlitz: \n " \ + 12 64 6 \ + "${OPTIONS[@]}" \ + 2>&1 >/dev/tty) +clear +network="" +migration="raspiblitz" +case $CHOICE in + CLOSE) + # TODO: check if case every comes up + echo "CLOSE" + exit 1; + ;; + BITCOIN) + network="bitcoin" + echo "network=bitcoin" >> $CONFIGFILE + ;; + LITECOIN) + network="litecoin" + echo "network=litecoin" >> $CONFIGFILE + ;; + MIGRATION) + migration=raspiblitz + echo "migration=raspiblitz" >> $SETUPFILE + ;; +esac + +if [ "${migration}" == "raspiblitz" ]; then + + + +fi + + +sudo /home/admin/config.scripts/blitz.migration.sh "import-gui" +# on error clean & repeat +if [ "$?" = "1" ]; then + echo + echo "# clean and unmount for next try" + sudo rm -f ${defaultZipPath}/raspiblitz-*.tar.gz 2>/dev/null + sudo umount /mnt/hdd 2>/dev/null + sudo umount /mnt/storage 2>/dev/null + sudo umount /mnt/temp 2>/dev/null + sleep 2 + /home/admin/00raspiblitz.sh +fi +exit 0 + + +################### +# ENTER NAME +################### + +# welcome and ask for name of RaspiBlitz +result="" +while [ ${#result} -eq 0 ] + do + l1="Please enter the name of your new RaspiBlitz:\n" + l2="one word, keep characters basic & not too long" + dialog --backtitle "RaspiBlitz - Setup (${network}/${chain})" --inputbox "$l1$l2" 11 52 2>$_temp + result=$( cat $_temp | tr -dc '[:alnum:]-.' | tr -d ' ' ) + shred -u $_temp + echo "processing ..." + sleep 3 + done + +# set lightning alias +sed -i "s/^alias=.*/alias=${result}/g" /home/admin/assets/lnd.${network}.conf + +# store hostname for later - to be set right before the next reboot +# work around - because without a reboot the hostname seems not updates in the whole system +valueExistsInInfoFile=$(sudo cat /home/admin/raspiblitz.info | grep -c "hostname=") +if [ ${valueExistsInInfoFile} -eq 0 ]; then + # add + echo "hostname=${result}" >> /home/admin/raspiblitz.info +else + # update + sed -i "s/^hostname=.*/hostname=${result}/g" /home/admin/raspiblitz.info +fi + +################### +# ENTER PASSWORDS +################### + +# show password info dialog +dialog --backtitle "RaspiBlitz - Setup (${network}/${chain})" --msgbox "RaspiBlitz uses 4 different passwords. +Referenced as password A, B, C and D. + +A) Master User Password +B) Blockchain RPC Password +C) LND Wallet Password +D) LND Seed Password + +Choose now 4 new passwords - all min 8 chars, +no spaces and only special characters - or . +Write them down & store them in a safe place. +" 15 52 + +# call set password a script +sudo /home/admin/config.scripts/blitz.setpassword.sh a + +# sucess info dialog +dialog --backtitle "RaspiBlitz" --msgbox "OK - password A was set\nfor all users pi, admin, root & bitcoin" 6 52 + +# call set password b script +sudo /home/admin/config.scripts/blitz.setpassword.sh b + +# success info dialog +dialog --backtitle "RaspiBlitz" --msgbox "OK - RPC password changed \n\nNow starting the Setup of your RaspiBlitz." 7 52 + +################### +# TOR BY DEFAULT +# https://github.com/rootzoll/raspiblitz/issues/592 +# +################### +echo "runBehindTor=on" >> /home/admin/raspiblitz.info +#whiptail --title ' Privacy Level - How do you want to run your node? ' --yes-button='Public IP' --no-button='TOR NETWORK' --yesno "Running your Lightning node with your Public IP is common and faster, but might reveal your personal identity and location.\n +#You can better protect your privacy with running your lightning node as a TOR Hidden Service from the start, but it can make it harder to connect with other non-TOR nodes and remote mobile apps later on. +# " 12 75 +#if [ $? -eq 1 ]; then +# echo "runBehindTor=on" >> /home/admin/raspiblitz.info +#fi + +# set SetupState +sudo sed -i "s/^setupStep=.*/setupStep=20/g" /home/admin/raspiblitz.info + +clear \ No newline at end of file diff --git a/home.admin/00provisionInfo.sh b/home.admin/00provisionInfo.sh new file mode 100755 index 000000000..a2796a09c --- /dev/null +++ b/home.admin/00provisionInfo.sh @@ -0,0 +1,14 @@ +#!/bin/bash +_temp=$(mktemp -p /dev/shm/) + +## get basic info +source /home/admin/raspiblitz.info 2>/dev/null + +################### +# CHECK IF DNS NEEDS SETTING DURING SETUP +# https://github.com/rootzoll/raspiblitz/issues/787 +################### +sudo /home/admin/config.scripts/internet.dns.sh test + +# TODO: if DNS is not working --> ask in provision dialog +# TODO: get size of sd card & free space on sd card \ No newline at end of file