mynode/rootfs/standard/usr/bin/mynode_startup.sh

544 lines
18 KiB
Bash
Raw Normal View History

2019-06-15 23:02:44 +00:00
#!/bin/bash
set -e
set -x
shopt -s nullglob
2019-06-15 23:02:44 +00:00
source /usr/share/mynode/mynode_config.sh
source /usr/share/mynode/mynode_app_versions.sh
2019-06-15 23:02:44 +00:00
# Verify FS is mounted as R/W
if [ ! -w / ]; then
2020-04-09 01:42:49 +00:00
touch /tmp/sd_rw_error
2019-06-15 23:02:44 +00:00
mount -o remount,rw /;
fi
2020-04-07 17:08:38 +00:00
# Set sticky bit on /tmp
chmod +t /tmp
2020-01-16 02:53:50 +00:00
# Make sure resolv.conf is a symlink to so resolvconf works
2020-01-20 03:25:45 +00:00
# if [ ! -h /etc/resolv.conf ]; then
# rm -f /etc/resolv.conf
2020-01-21 01:33:58 +00:00
# mkdir -p /etc/resolvconf/run/
2020-01-20 03:25:45 +00:00
# touch /etc/resolvconf/run/resolv.conf
# ln -s /etc/resolvconf/run/resolv.conf /etc/resolv.conf
# sync
# reboot
# sleep 10s
# exit 1
# fi
2020-04-07 17:08:38 +00:00
2020-01-20 03:25:45 +00:00
# Add some DNS servers to make domain lookup more likely
echo '' >> /etc/resolv.conf
echo '# Added at myNode startup' >> /etc/resolv.conf
echo 'nameserver 8.8.8.8' >> /etc/resolv.conf
echo 'nameserver 8.8.4.4' >> /etc/resolv.conf
echo 'nameserver 1.1.1.1' >> /etc/resolv.conf
2019-09-24 01:50:02 +00:00
# Disable autosuspend for USB drives
if [ -d /sys/bus/usb/devices/ ]; then
for dev in /sys/bus/usb/devices/*/power/control; do echo "on" > $dev; done
fi
2019-09-24 01:50:02 +00:00
2019-11-30 03:42:34 +00:00
# Verify SD card permissions and folders are OK
mkdir -p /home/admin/.config/
chown -R admin:admin /home/admin/.config/
2019-06-15 23:02:44 +00:00
# Expand Root FS
mkdir -p /var/lib/mynode
if [ ! -f /var/lib/mynode/.expanded_rootfs ]; then
if [ $IS_RASPI -eq 1 ]; then
2019-06-15 23:02:44 +00:00
raspi-config --expand-rootfs
touch /var/lib/mynode/.expanded_rootfs
fi
2019-12-17 03:49:25 +00:00
if [ $IS_ROCK64 = 1 ] || [ $IS_ROCKPRO64 = 1 ]; then
/usr/lib/armbian/armbian-resize-filesystem start
2019-07-06 01:48:38 +00:00
touch /var/lib/mynode/.expanded_rootfs
fi
2019-06-15 23:02:44 +00:00
fi
2020-05-01 01:37:17 +00:00
# Customize logo for resellers
2020-07-19 03:16:51 +00:00
if [ -f /opt/mynode/custom/logo_custom.png ]; then
cp -f /opt/mynode/custom/logo_custom.png /var/www/mynode/static/images/logo_custom.png
fi
if [ -f /opt/mynode/custom/logo_dark_custom.png ]; then
cp -f /opt/mynode/custom/logo_dark_custom.png /var/www/mynode/static/images/logo_dark_custom.png
2020-05-01 01:37:17 +00:00
fi
2020-01-17 04:22:31 +00:00
# Verify we are in a clean state
if [ $IS_RASPI -eq 1 ] || [ $IS_ROCK64 -eq 1 ] || [ $IS_ROCKPRO64 -eq 1 ]; then
2019-06-15 23:02:44 +00:00
dphys-swapfile swapoff || true
dphys-swapfile uninstall || true
fi
umount /mnt/hdd || true
2019-12-12 01:34:34 +00:00
# Check drive
set +e
2020-03-04 18:41:52 +00:00
if [ $IS_X86 = 0 ]; then
touch /tmp/repairing_drive
for d in /dev/sd*1 /dev/hd*1 /dev/vd*1 /dev/nvme*p1; do
2020-03-04 18:41:52 +00:00
echo "Repairing drive $d ...";
fsck -y $d > /tmp/fsck_results 2>&1
RC=$?
2020-07-10 04:23:13 +00:00
echo "" >> /tmp/fsck_results
echo "Code: $RC" >> /tmp/fsck_results
if [ "$RC" -ne 0 ] && [ "$RC" -ne 8 ] ; then
2020-03-04 18:41:52 +00:00
touch /tmp/fsck_error
fi
done
fi
2019-12-22 03:27:14 +00:00
rm -f /tmp/repairing_drive
2019-12-12 01:34:34 +00:00
set -e
2019-06-15 23:02:44 +00:00
# Mount HDD (format if necessary)
while [ ! -f /mnt/hdd/.mynode ]
do
2020-03-25 01:07:45 +00:00
# Clear status
2020-08-21 18:31:47 +00:00
rm -f $MYNODE_STATUS_FILE
2019-06-15 23:02:44 +00:00
mount_drive.tcl || true
2020-03-30 02:04:42 +00:00
sleep 5
2019-06-15 23:02:44 +00:00
done
2020-03-24 17:19:18 +00:00
# Check for docker reset
if [ -f /home/bitcoin/reset_docker ]; then
rm -rf /mnt/hdd/mynode/docker
rm /home/bitcoin/reset_docker
sync
reboot
sleep 60s
exit 0
fi
2019-06-15 23:02:44 +00:00
# Setup Drive
mkdir -p /mnt/hdd/mynode
mkdir -p /mnt/hdd/mynode/settings
mkdir -p /mnt/hdd/mynode/.config
2019-06-15 23:02:44 +00:00
mkdir -p /mnt/hdd/mynode/bitcoin
mkdir -p /mnt/hdd/mynode/lnd
2020-11-17 00:55:20 +00:00
mkdir -p /mnt/hdd/mynode/loop
mkdir -p /mnt/hdd/mynode/pool
2019-06-15 23:02:44 +00:00
mkdir -p /mnt/hdd/mynode/quicksync
mkdir -p /mnt/hdd/mynode/redis
mkdir -p /mnt/hdd/mynode/mongodb
mkdir -p /mnt/hdd/mynode/electrs
2019-11-12 03:20:10 +00:00
mkdir -p /mnt/hdd/mynode/docker
2020-07-16 04:33:32 +00:00
mkdir -p /mnt/hdd/mynode/rtl
2020-01-26 21:57:48 +00:00
mkdir -p /mnt/hdd/mynode/rtl_backup
2020-06-10 02:50:03 +00:00
mkdir -p /mnt/hdd/mynode/whirlpool
mkdir -p /mnt/hdd/mynode/lnbits
2020-07-08 04:16:10 +00:00
mkdir -p /mnt/hdd/mynode/specter
mkdir -p /tmp/flask_uploads
2020-08-21 18:31:47 +00:00
echo "drive_mounted" > $MYNODE_STATUS_FILE
chmod 777 $MYNODE_STATUS_FILE
2019-06-15 23:02:44 +00:00
rm -rf $MYNODE_DIR/.mynode_bitcoind_synced
# Setup SD Card (if necessary)
2019-11-17 04:20:23 +00:00
mkdir -p /run/tor
mkdir -p /var/run/tor
mkdir -p /home/bitcoin/.mynode/
2019-06-15 23:02:44 +00:00
mkdir -p /home/admin/.bitcoin/
chown admin:admin /home/admin/.bitcoin/
rm -rf /etc/motd # Remove simple motd for update-motd.d
2019-06-15 23:02:44 +00:00
# Sync product key (SD preferred)
cp -f /home/bitcoin/.mynode/.product_key* /mnt/hdd/mynode/settings/ || true
cp -f /mnt/hdd/mynode/settings/.product_key* home/bitcoin/.mynode/ || true
2019-08-10 01:08:50 +00:00
# Make any users we need to
useradd -m -s /bin/bash pivpn || true
2019-06-15 23:02:44 +00:00
# Regen SSH keys (check if force regen or keys are missing / empty)
while [ ! -f /home/bitcoin/.mynode/.gensshkeys ] ||
[ ! -f /etc/ssh/ssh_host_ecdsa_key.pub ] ||
[ ! -s /etc/ssh/ssh_host_ecdsa_key.pub ] ||
[ ! -f /etc/ssh/ssh_host_ed25519_key.pub ] ||
[ ! -s /etc/ssh/ssh_host_ed25519_key.pub ] ||
[ ! -f /etc/ssh/ssh_host_rsa_key.pub ] ||
[ ! -s /etc/ssh/ssh_host_rsa_key.pub ]
do
sleep 10s
2019-06-15 23:02:44 +00:00
rm -rf /etc/ssh/ssh_host_*
dpkg-reconfigure openssh-server
systemctl restart ssh
touch /home/bitcoin/.mynode/.gensshkeys
2019-10-24 04:18:46 +00:00
sync
sleep 5s
done
2019-06-15 23:02:44 +00:00
2020-01-26 00:21:09 +00:00
# Gen RSA keys
sudo -u admin mkdir -p /home/admin/.ssh
chown -R admin:admin /home/admin/.ssh
2020-01-26 00:21:09 +00:00
if [ ! -f /home/admin/.ssh/id_rsa ]; then
sudo -u admin ssh-keygen -t rsa -f /home/admin/.ssh/id_rsa -N ""
fi
2020-01-28 01:46:43 +00:00
sudo -u admin touch /home/admin/.ssh/authorized_keys || true
2020-01-26 00:21:09 +00:00
if [ ! -f /root/.ssh/id_rsa_btcpay ]; then
2020-01-28 03:39:12 +00:00
sudo rm -rf /root/.ssh/id_rsa_btcpay
2020-01-26 00:21:09 +00:00
ssh-keygen -t rsa -f /root/.ssh/id_rsa_btcpay -q -P "" -m PEM
echo "# Key used by BTCPay Server" >> /root/.ssh/authorized_keys
cat /root/.ssh/id_rsa_btcpay.pub >> /root/.ssh/authorized_keys
fi
2019-06-15 23:02:44 +00:00
# Randomize RPC password
while [ ! -f /mnt/hdd/mynode/settings/.btcrpcpw ] || [ ! -s /mnt/hdd/mynode/settings/.btcrpcpw ]
do
2019-06-15 23:02:44 +00:00
# Write random pw to .btcrpcpw
sleep 10s
< /dev/urandom tr -dc A-Za-z0-9 | head -c${1:-24} > /mnt/hdd/mynode/settings/.btcrpcpw
chown bitcoin:bitcoin /mnt/hdd/mynode/settings/.btcrpcpw
chmod 600 /mnt/hdd/mynode/settings/.btcrpcpw
done
2019-06-15 23:02:44 +00:00
2019-10-24 04:18:46 +00:00
# Default QuickSync
if [ ! -f /mnt/hdd/mynode/settings/.setquicksyncdefault ]; then
# Default x86 to no QuickSync
if [ $IS_X86 = 1 ]; then
touch /mnt/hdd/mynode/settings/quicksync_disabled
fi
2020-01-26 00:21:09 +00:00
# Default RockPro64 to no QuickSync
if [ $IS_ROCKPRO64 = 1 ]; then
touch /mnt/hdd/mynode/settings/quicksync_disabled
fi
2019-10-24 04:18:46 +00:00
# Default SSD to no QuickSync
DRIVE=$(cat /tmp/.mynode_drive)
HDD=$(lsblk $DRIVE -o ROTA | tail -n 1 | tr -d '[:space:]')
if [ "$HDD" = "0" ]; then
touch /mnt/hdd/mynode/settings/quicksync_disabled
fi
# If there is a USB->SATA adapter, assume we have an SSD and default to no QS
2020-02-27 00:27:42 +00:00
set +e
lsusb | grep "SATA 6Gb/s bridge"
RC=$?
2020-02-27 00:27:42 +00:00
set -e
if [ "$RC" = "0" ]; then
touch /mnt/hdd/mynode/settings/quicksync_disabled
fi
# Default small drives to no QuickSync
DRIVE_SIZE=$(df /mnt/hdd | grep /dev | awk '{print $2}')
if (( ${DRIVE_SIZE} <= 800000000 )); then
touch /mnt/hdd/mynode/settings/quicksync_disabled
fi
2019-10-24 04:18:46 +00:00
touch /mnt/hdd/mynode/settings/.setquicksyncdefault
fi
2019-06-15 23:02:44 +00:00
# BTC Config
2019-11-04 04:50:47 +00:00
source /usr/bin/mynode_gen_bitcoin_config.sh
# LND Config
2019-11-04 04:50:47 +00:00
source /usr/bin/mynode_gen_lnd_config.sh
# Loop Config (symlink so admin user can run loop commands)
if [ ! -L /home/admin/.loop ]; then
mv /home/admin/.loop /home/admin/.loop_backup || true
ln -s /mnt/hdd/mynode/loop /home/admin/.loop
fi
# Pool Config (symlink so admin user can run pool commands)
if [ ! -L /home/admin/.pool ]; then
mv /home/admin/.pool /home/admin/.pool_backup || true
ln -s /mnt/hdd/mynode/pool /home/admin/.pool
fi
# RTL config
2020-07-16 04:33:32 +00:00
sudo -u bitcoin mkdir -p /opt/mynode/RTL
sudo -u bitcoin mkdir -p /mnt/hdd/mynode/rtl
chown -R bitcoin:bitcoin /mnt/hdd/mynode/rtl
chown -R bitcoin:bitcoin /mnt/hdd/mynode/rtl_backup
# If local settings file is not a symlink, delete and setup symlink to HDD
if [ ! -L /opt/mynode/RTL/RTL-Config.json ]; then
rm -f /opt/mynode/RTL/RTL-Config.json
sudo -u bitcoin ln -s /mnt/hdd/mynode/rtl/RTL-Config.json /opt/mynode/RTL/RTL-Config.json
2020-05-07 03:20:49 +00:00
fi
2020-07-16 04:33:32 +00:00
# If config file on HDD does not exist, create it
if [ ! -f /mnt/hdd/mynode/rtl/RTL-Config.json ]; then
cp -f /usr/share/mynode/RTL-Config.json /mnt/hdd/mynode/rtl/RTL-Config.json
fi
# Force update of RTL config file (increment to force new update)
RTL_CONFIG_UPDATE_NUM=1
if [ ! -f /mnt/hdd/mynode/rtl/update_settings_$RTL_CONFIG_UPDATE_NUM ]; then
cp -f /usr/share/mynode/RTL-Config.json /mnt/hdd/mynode/rtl/RTL-Config.json
touch /mnt/hdd/mynode/rtl/update_settings_$RTL_CONFIG_UPDATE_NUM
fi
2020-07-16 04:33:32 +00:00
# Update RTL config file to use mynode pw
2019-07-28 23:34:08 +00:00
if [ -f /home/bitcoin/.mynode/.hashedpw ]; then
HASH=$(cat /home/bitcoin/.mynode/.hashedpw)
2020-07-16 04:33:32 +00:00
sed -i "s/\"multiPassHashed\":.*/\"multiPassHashed\": \"$HASH\",/g" /mnt/hdd/mynode/rtl/RTL-Config.json
2019-07-28 23:34:08 +00:00
fi
2019-10-05 01:30:56 +00:00
# BTC RPC Explorer Config
cp /usr/share/mynode/btc_rpc_explorer_env /opt/mynode/btc-rpc-explorer/.env
chown bitcoin:bitcoin /opt/mynode/btc-rpc-explorer/.env
2020-06-28 02:12:54 +00:00
# LNBits Config
if [ -d /opt/mynode/lnbits ]; then
cp /usr/share/mynode/lnbits.env /opt/mynode/lnbits/.env
chown bitcoin:bitcoin /opt/mynode/lnbits/.env
fi
2020-06-28 02:12:54 +00:00
2020-07-08 04:16:10 +00:00
# Setup Specter
2020-07-08 04:33:57 +00:00
if [ -d /home/bitcoin/.specter ] && [ ! -L /home/bitcoin/.specter ] ; then
2020-07-08 04:16:10 +00:00
# Migrate to HDD
cp -r -f /home/bitcoin/.specter/* /mnt/hdd/mynode/specter/
chown -R bitcoin:bitcoin /mnt/hdd/mynode/specter
rm -rf /home/bitcoin/.specter
sync
fi
if [ ! -L /home/bitcoin/.specter ]; then
# Setup symlink to HDD
sudo -u bitcoin ln -s /mnt/hdd/mynode/specter /home/bitcoin/.specter
fi
if [ -f /mnt/hdd/mynode/specter/config.json ]; then
# Setup config file to point to local bitcoin instance
BTCRPCPW=$(cat /mnt/hdd/mynode/settings/.btcrpcpw)
sed -i "s#\"datadir\": .*#\"datadir\": \"/home/bitcoin/.bitcoin\",#g" /mnt/hdd/mynode/specter/config.json
sed -i "s#\"user\": .*#\"user\": \"mynode\",#g" /mnt/hdd/mynode/specter/config.json
sed -i "s#\"password\": .*#\"password\": \"$BTCRPCPW\",#g" /mnt/hdd/mynode/specter/config.json
sed -i "s#\"port\": .*#\"port\": \"8332\",#g" /mnt/hdd/mynode/specter/config.json
sed -i "s#\"host\": .*#\"host\": \"localhost\",#g" /mnt/hdd/mynode/specter/config.json
sed -i "s#\"protocol\": .*#\"protocol\": \"http\"#g" /mnt/hdd/mynode/specter/config.json
fi
2020-07-08 04:16:10 +00:00
# Setup Thunderhub
mkdir -p /mnt/hdd/mynode/thunderhub/
if [ ! -f /mnt/hdd/mynode/thunderhub/.env.local ]; then
cp -f /usr/share/mynode/thunderhub.env /mnt/hdd/mynode/thunderhub/.env.local
fi
if [ ! -f /mnt/hdd/mynode/thunderhub/thub_config.yaml ]; then
cp -f /usr/share/mynode/thub_config.yaml /mnt/hdd/mynode/thunderhub/thub_config.yaml
fi
if [ -f /mnt/hdd/mynode/thunderhub/thub_config.yaml ]; then
if [ -f /home/bitcoin/.mynode/.hashedpw_bcrypt ]; then
HASH_BCRYPT=$(cat /home/bitcoin/.mynode/.hashedpw_bcrypt)
sed -i "s#masterPassword:.*#masterPassword: \"thunderhub-$HASH_BCRYPT\"#g" /mnt/hdd/mynode/thunderhub/thub_config.yaml
fi
fi
chown -R bitcoin:bitcoin /mnt/hdd/mynode/thunderhub
2020-07-08 03:13:01 +00:00
# Setup udev
chown root:root /etc/udev/rules.d/* || true
udevadm trigger
udevadm control --reload-rules
groupadd plugdev || true
sudo usermod -aG plugdev bitcoin
# Update other files that need RPC password (needed if upgrades overwrite files)
BTCRPCPW=$(cat /mnt/hdd/mynode/settings/.btcrpcpw)
2019-06-15 23:02:44 +00:00
if [ -f /opt/mynode/LndHub/config.js ]; then
2020-01-26 19:59:38 +00:00
cp -f /usr/share/mynode/lndhub-config.js /opt/mynode/LndHub/config.js
sed -i "s/mynode:.*@/mynode:$BTCRPCPW@/g" /opt/mynode/LndHub/config.js
2020-01-26 19:59:38 +00:00
chown bitcoin:bitcoin /opt/mynode/LndHub/config.js
2019-06-15 23:02:44 +00:00
fi
if [ -f /opt/mynode/btc-rpc-explorer/.env ]; then
sed -i "s/BTCEXP_BITCOIND_PASS=.*/BTCEXP_BITCOIND_PASS=$BTCRPCPW/g" /opt/mynode/btc-rpc-explorer/.env
2019-06-15 23:02:44 +00:00
fi
echo "BTC_RPC_PASSWORD=$BTCRPCPW" > /mnt/hdd/mynode/settings/.btcrpc_environment
chown bitcoin:bitcoin /mnt/hdd/mynode/settings/.btcrpc_environment
2019-06-15 23:02:44 +00:00
if [ -f /mnt/hdd/mynode/bitcoin/bitcoin.conf ]; then
sed -i "s/rpcauth=.*/$RPCAUTH/g" /mnt/hdd/mynode/bitcoin/bitcoin.conf
2019-06-15 23:02:44 +00:00
fi
cp -f /mnt/hdd/mynode/bitcoin/bitcoin.conf /home/admin/.bitcoin/bitcoin.conf
chown admin:admin /home/admin/.bitcoin/bitcoin.conf
2019-06-15 23:02:44 +00:00
# Reset BTCARGS
echo "BTCARGS=" > /mnt/hdd/mynode/bitcoin/env
# Set proper permissions on drive
USER=$(stat -c '%U' /mnt/hdd/mynode/quicksync)
if [ "$USER" != "bitcoin" ]; then
chown -R bitcoin:bitcoin /mnt/hdd/mynode/quicksync
fi
USER=$(stat -c '%U' /mnt/hdd/mynode/settings)
if [ "$USER" != "bitcoin" ]; then
chown -R bitcoin:bitcoin /mnt/hdd/mynode/settings
fi
USER=$(stat -c '%U' /mnt/hdd/mynode/.config)
if [ "$USER" != "bitcoin" ]; then
chown -R bitcoin:bitcoin /mnt/hdd/mynode/.config
fi
2019-06-15 23:02:44 +00:00
USER=$(stat -c '%U' /mnt/hdd/mynode/bitcoin)
if [ "$USER" != "bitcoin" ]; then
chown -R bitcoin:bitcoin /mnt/hdd/mynode/bitcoin
fi
USER=$(stat -c '%U' /home/bitcoin)
if [ "$USER" != "bitcoin" ]; then
chown -R --no-dereference bitcoin:bitcoin /home/bitcoin
fi
USER=$(stat -c '%U' /home/bitcoin/.mynode)
if [ "$USER" != "bitcoin" ]; then
chown -R bitcoin:bitcoin /home/bitcoin/.mynode
fi
USER=$(stat -c '%U' /mnt/hdd/mynode/lnd)
if [ "$USER" != "bitcoin" ]; then
chown -R bitcoin:bitcoin /mnt/hdd/mynode/lnd
fi
2020-11-17 00:55:20 +00:00
USER=$(stat -c '%U' /mnt/hdd/mynode/loop)
if [ "$USER" != "bitcoin" ]; then
chown -R bitcoin:bitcoin /mnt/hdd/mynode/loop
fi
USER=$(stat -c '%U' /mnt/hdd/mynode/pool)
if [ "$USER" != "bitcoin" ]; then
chown -R bitcoin:bitcoin /mnt/hdd/mynode/pool
fi
2020-06-10 02:50:03 +00:00
USER=$(stat -c '%U' /mnt/hdd/mynode/whirlpool)
if [ "$USER" != "bitcoin" ]; then
chown -R bitcoin:bitcoin /mnt/hdd/mynode/whirlpool
fi
USER=$(stat -c '%U' /mnt/hdd/mynode/lnbits)
if [ "$USER" != "bitcoin" ]; then
chown -R bitcoin:bitcoin /mnt/hdd/mynode/lnbits
fi
2020-07-16 04:33:32 +00:00
USER=$(stat -c '%U' /mnt/hdd/mynode/rtl)
if [ "$USER" != "bitcoin" ]; then
chown -R bitcoin:bitcoin /mnt/hdd/mynode/rtl
fi
2020-07-08 04:16:10 +00:00
USER=$(stat -c '%U' /mnt/hdd/mynode/specter)
if [ "$USER" != "bitcoin" ]; then
chown -R bitcoin:bitcoin /mnt/hdd/mynode/specter
fi
2019-06-15 23:02:44 +00:00
USER=$(stat -c '%U' /mnt/hdd/mynode/redis)
if [ "$USER" != "redis" ]; then
chown -R redis:redis /mnt/hdd/mynode/redis
fi
chown -R redis:redis /etc/redis/
#USER=$(stat -c '%U' /mnt/hdd/mynode/mongodb)
#if [ "$USER" != "mongodb" ]; then
# chown -R mongodb:mongodb /mnt/hdd/mynode/mongodb
#fi
2019-06-15 23:02:44 +00:00
USER=$(stat -c '%U' /mnt/hdd/mynode/electrs)
if [ "$USER" != "bitcoin" ]; then
chown -R bitcoin:bitcoin /mnt/hdd/mynode/electrs
fi
chown bitcoin:bitcoin /mnt/hdd/
chown bitcoin:bitcoin /mnt/hdd/mynode/
# Setup swap on new HDD
if [ ! -f /mnt/hdd/mynode/settings/swap_size ]; then
# Set defaults
touch /mnt/hdd/mynode/settings/swap_size
echo "2" > /mnt/hdd/mynode/settings/swap_size
sed -i "s|CONF_SWAPSIZE=.*|CONF_SWAPSIZE=2048|" /etc/dphys-swapfile
else
# Update swap config file in case upgrade overwrote file
SWAP=$(cat /mnt/hdd/mynode/settings/swap_size)
SWAP_MB=$(($SWAP * 1024))
sed -i "s|CONF_SWAPSIZE=.*|CONF_SWAPSIZE=$SWAP_MB|" /etc/dphys-swapfile
fi
if [ $IS_RASPI -eq 1 ] || [ $IS_ROCK64 -eq 1 ] || [ $IS_ROCKPRO64 -eq 1 ]; then
SWAP=$(cat /mnt/hdd/mynode/settings/swap_size)
if [ "$SWAP" -ne "0" ]; then
dphys-swapfile install
dphys-swapfile swapon
2019-06-15 23:02:44 +00:00
fi
fi
# Make sure every enabled service is really enabled
# This can happen from full-SD card upgrades
STARTUP_MODIFIED=0
if [ -f $ELECTRS_ENABLED_FILE ]; then
if systemctl status electrs | grep "disabled;"; then
systemctl enable electrs
STARTUP_MODIFIED=1
fi
fi
if [ -f $LNDHUB_ENABLED_FILE ]; then
if systemctl status lndhub | grep "disabled;"; then
systemctl enable lndhub
STARTUP_MODIFIED=1
fi
fi
if [ -f $BTCRPCEXPLORER_ENABLED_FILE ]; then
if systemctl status btc_rpc_explorer | grep "disabled;"; then
systemctl enable btc_rpc_explorer
STARTUP_MODIFIED=1
fi
fi
2020-01-17 04:22:31 +00:00
if [ -f $MEMPOOLSPACE_ENABLED_FILE ]; then
if systemctl status mempoolspace | grep "disabled;"; then
systemctl enable mempoolspace
STARTUP_MODIFIED=1
fi
fi
if [ -f $BTCPAYSERVER_ENABLED_FILE ]; then
if systemctl status btcpayserver | grep "disabled;"; then
systemctl enable btcpayserver
STARTUP_MODIFIED=1
fi
fi
if [ -f $VPN_ENABLED_FILE ]; then
if systemctl status vpn | grep "disabled;"; then
systemctl enable vpn
systemctl enable openvpn || true
STARTUP_MODIFIED=1
fi
fi
if [ $STARTUP_MODIFIED -eq 1 ]; then
sync
reboot
exit 0
fi
2020-08-11 04:08:38 +00:00
# Generate certificates
echo "Generating certificates..."
/usr/bin/mynode_gen_cert.sh https 825
/usr/bin/mynode_gen_cert_electrs.sh
# Setup nginx HTTPS proxy
mkdir -p /var/log/nginx || true
mkdir -p /etc/nginx || true
rm -f /etc/nginx/modules-enabled/50-mod-* || true # Remove unnecessary files
echo "gen_dhparam" > $MYNODE_STATUS_FILE
2020-08-13 01:42:41 +00:00
/usr/bin/mynode_gen_dhparam.sh
echo "drive_mounted" > $MYNODE_STATUS_FILE
2020-08-11 04:08:38 +00:00
cp -f /usr/share/mynode/nginx.conf /etc/nginx/nginx.conf
systemctl restart nginx || true
# Update latest version files
echo $BTC_VERSION > $BTC_LATEST_VERSION_FILE
echo $LND_VERSION > $LND_LATEST_VERSION_FILE
echo $LOOP_VERSION > $LOOP_LATEST_VERSION_FILE
2020-11-26 19:22:50 +00:00
echo $POOL_VERSION > $POOL_LATEST_VERSION_FILE
echo $ELECTRS_VERSION > $ELECTRS_LATEST_VERSION_FILE
echo $LNDHUB_VERSION > $LNDHUB_LATEST_VERSION_FILE
echo $CARAVAN_VERSION > $CARAVAN_LATEST_VERSION_FILE
echo $CORSPROXY_VERSION > $CORSPROXY_LATEST_VERSION_FILE
echo $JOINMARKET_VERSION > $JOINMARKET_LATEST_VERSION_FILE
echo $WHIRLPOOL_VERSION > $WHIRLPOOL_LATEST_VERSION_FILE
echo $RTL_VERSION > $RTL_LATEST_VERSION_FILE
echo $BTCRPCEXPLORER_VERSION > $BTCRPCEXPLORER_LATEST_VERSION_FILE
echo $LNBITS_VERSION > $LNBITS_LATEST_VERSION_FILE
echo $SPECTER_VERSION > $SPECTER_LATEST_VERSION_FILE
echo $THUNDERHUB_VERSION > $THUNDERHUB_LATEST_VERSION_FILE
echo $LNDCONNECT_VERSION > $LNDCONNECT_LATEST_VERSION_FILE
# Weird hacks
chmod +x /usr/bin/electrs || true # Once, a device didn't have the execute bit set for electrs
2020-03-04 18:50:30 +00:00
timedatectl set-ntp True || true # Make sure NTP is enabled for Tor and Bitcoin
2020-07-02 20:07:47 +00:00
rm -f /var/swap || true # Remove old swap file to save SD card space
systemctl enable check_in || true
2020-08-11 04:08:38 +00:00
2019-07-28 21:02:56 +00:00
# Check for new versions
2020-10-30 03:19:07 +00:00
torify wget $LATEST_VERSION_URL --timeout=30 -O /usr/share/mynode/latest_version || true
torify wget $LATEST_BETA_VERSION_URL --timeout=30 -O /usr/share/mynode/latest_beta_version || true
2019-06-15 23:02:44 +00:00
# Update current state
if [ -f $QUICKSYNC_DIR/.quicksync_complete ]; then
2020-08-21 18:31:47 +00:00
echo "stable" > $MYNODE_STATUS_FILE
2019-06-15 23:02:44 +00:00
fi