mirror of
https://github.com/rootzoll/raspiblitz.git
synced 2025-02-24 22:58:43 +01:00
259 lines
8.2 KiB
Bash
259 lines
8.2 KiB
Bash
#!/bin/bash
|
|
|
|
# https://github.com/bastienwirtz/homer
|
|
|
|
installVersion="v22.06.1"
|
|
remoteVersion=$(curl -s https://api.github.com/repos/bastienwirtz/homer/releases/latest|grep tag_name|head -1|cut -d '"' -f4)
|
|
|
|
# command info
|
|
if [ $# -eq 0 ] || [ "$1" = "-h" ] || [ "$1" = "-help" ]; then
|
|
echo "# small config script to switch Homer on or off"
|
|
echo "# installs the $installVersion by default"
|
|
echo "# bonus.homer.sh [status|on|off|update]"
|
|
exit 1
|
|
fi
|
|
|
|
source /mnt/hdd/raspiblitz.conf
|
|
|
|
# show info menu
|
|
if [ "$1" = "menu" ]; then
|
|
|
|
# get status
|
|
echo "# collecting status info ... (please wait)"
|
|
source <(sudo /home/admin/config.scripts/bonus.homer.sh status)
|
|
|
|
# get network info
|
|
localip=$(ip addr | grep 'state UP' -A2 | egrep -v 'docker0' | grep 'eth0\|wlan0' | tail -n1 | awk '{print $2}' | cut -f1 -d'/')
|
|
toraddress=$(sudo cat /mnt/hdd/tor/homer/hostname 2>/dev/null)
|
|
fingerprint=$(openssl x509 -in /mnt/hdd/app-data/nginx/tls.cert -fingerprint -noout | cut -d"=" -f2)
|
|
|
|
additionalInfo="Config file: /mnt/hdd/app-data/homer/config.yml"
|
|
|
|
if [ "${runBehindTor}" = "on" ] && [ ${#toraddress} -gt 0 ]; then
|
|
|
|
# TOR
|
|
/home/admin/config.scripts/blitz.display.sh qr "${toraddress}"
|
|
whiptail --title " Homer " --msgbox "Open in your local web browser & accept self-signed cert:
|
|
https://${localip}:4091\n
|
|
SHA1 Thumb/Fingerprint:
|
|
${fingerprint}\n
|
|
Hidden Service address for TOR Browser (QR see LCD):
|
|
${toraddress}\n
|
|
${additionalInfo}
|
|
" 16 67
|
|
/home/admin/config.scripts/blitz.display.sh hide
|
|
else
|
|
|
|
# IP + Domain
|
|
whiptail --title " Homer " --msgbox "Open in your local web browser & accept self-signed cert:
|
|
https://${localip}:4091\n
|
|
SHA1 Thumb/Fingerprint:
|
|
${fingerprint}\n
|
|
Activate TOR to access the web block explorer from outside your local network.\n
|
|
${additionalInfo}
|
|
" 16 54
|
|
fi
|
|
|
|
echo "please wait ..."
|
|
exit 0
|
|
fi
|
|
|
|
# add default value to raspi config if needed
|
|
if ! grep -Eq "^homer=" /mnt/hdd/raspiblitz.conf; then
|
|
echo "homer=off" >> /mnt/hdd/raspiblitz.conf
|
|
fi
|
|
|
|
# status
|
|
if [ "$1" = "status" ]; then
|
|
|
|
if [ "${homer}" = "on" ]; then
|
|
echo "configured=1"
|
|
else
|
|
echo "configured=0"
|
|
fi
|
|
exit 0
|
|
fi
|
|
|
|
# Update (quick hack)
|
|
# Stores configuration and assets found in /var/www/homer
|
|
if [ "$1" = "update" ]; then
|
|
|
|
cd /home/homer/homer
|
|
sudo -u homer git fetch
|
|
# Comment out until official release that fixes issue #206
|
|
# sudo -u homer git reset --hard $remoteVersion
|
|
|
|
# Save config file
|
|
sudo cp /var/www/homer/assets/config.yml /mnt/hdd/app-data/homer/config.yml
|
|
|
|
# Save any icons
|
|
sudo rsync -av /var/www/homer/assets/icons/ /mnt/hdd/app-data/homer/icons
|
|
|
|
# Install Homer
|
|
sudo -u homer NG_CLI_ANALYTICS=false npm install
|
|
if ! [ $? -eq 0 ]; then
|
|
echo "FAIL - npm install did not run correctly, aborting"
|
|
exit 1
|
|
fi
|
|
sudo -u homer NG_CLI_ANALYTICS=false npm run build
|
|
if ! [ $? -eq 0 ]; then
|
|
echo "FAIL - npm run build did not run correctly, aborting"
|
|
exit 1
|
|
fi
|
|
|
|
# remove conf link
|
|
sudo rm /var/www/homer/assets/config.yml
|
|
|
|
# copy new dist over to nginx
|
|
sudo rsync -av --delete dist/ /var/www/homer/
|
|
|
|
# link config again
|
|
sudo -u www-data ln -s /mnt/hdd/app-data/homer/config.yml /var/www/homer/assets/config.yml
|
|
|
|
#restore saved icons
|
|
sudo rsync -av /mnt/hdd/app-data/homer/icons/ /var/www/homer/assets/icons/
|
|
sudo chown -R www-data:www-data /var/www/homer/
|
|
|
|
echo "# OK - Homer should now be serving latest code from Version $remoteVersion"
|
|
exit 0
|
|
|
|
fi
|
|
|
|
# switch on
|
|
if [ "$1" = "1" ] || [ "$1" = "on" ]; then
|
|
|
|
echo "# *** INSTALL Homer ***"
|
|
|
|
isInstalled=$(sudo ls /var/www/homer/assets/config.yml.dist 2>/dev/null | grep -c 'config.yml.dist')
|
|
if [ ${isInstalled} -eq 0 ]; then
|
|
|
|
# add homer user
|
|
sudo adduser --disabled-password --gecos "" homer
|
|
|
|
# install homer
|
|
cd /home/homer
|
|
sudo -u homer git clone https://github.com/bastienwirtz/homer.git
|
|
cd homer
|
|
# sudo -u homer git reset --hard $installVersion
|
|
|
|
sudo -u homer NG_CLI_ANALYTICS=false npm install
|
|
if ! [ $? -eq 0 ]; then
|
|
echo "FAIL - npm install did not run correctly, aborting"
|
|
exit 1
|
|
fi
|
|
sudo -u homer NG_CLI_ANALYTICS=false npm run build
|
|
if ! [ $? -eq 0 ]; then
|
|
echo "FAIL - npm run build did not run correctly, aborting"
|
|
exit 1
|
|
fi
|
|
|
|
sudo mkdir -p /var/www/homer
|
|
sudo rsync -av --delete dist/ /var/www/homer/
|
|
sudo chown -R www-data:www-data /var/www/homer
|
|
|
|
# if no persistent data exists - create data dir & use standard config
|
|
oldConfigExists=$(ls /mnt/hdd/app-data/homer/config.yml 2>/dev/null | grep -c 'config.yml')
|
|
if [ "${oldConfigExists}" == "0" ]; then
|
|
sudo -u homer cp /home/homer/homer/dist/assets/config.yml.dist /home/homer/homer/dist/assets/config.yml
|
|
sudo mkdir -p /mnt/hdd/app-data/homer
|
|
sudo cp /home/homer/homer/dist/assets/config.yml.dist /mnt/hdd/app-data/homer/config.yml
|
|
fi
|
|
|
|
# link config into nginx directory
|
|
sudo chown www-data:www-data /mnt/hdd/app-data/homer/config.yml
|
|
sudo -u www-data ln -s /mnt/hdd/app-data/homer/config.yml /var/www/homer/assets/config.yml
|
|
|
|
##################
|
|
# NGINX
|
|
##################
|
|
|
|
if ! [ -f /etc/nginx/sites-available/homer_ssl.conf ]; then
|
|
sudo cp /home/admin/assets/nginx/sites-available/homer_ssl.conf /etc/nginx/sites-available/homer_ssl.conf
|
|
fi
|
|
if ! [ -f /etc/nginx/sites-available/homer_tor.conf ]; then
|
|
sudo cp /home/admin/assets/nginx/sites-available/homer_tor.conf /etc/nginx/sites-available/homer_tor.conf
|
|
fi
|
|
if ! [ -f /etc/nginx/sites-available/homer_tor_ssl.conf ]; then
|
|
sudo cp /home/admin/assets/nginx/sites-available/homer_tor_ssl.conf /etc/nginx/sites-available/homer_tor_ssl.conf
|
|
fi
|
|
sudo ln -sf /etc/nginx/sites-available/homer_ssl.conf /etc/nginx/sites-enabled/
|
|
sudo ln -sf /etc/nginx/sites-available/homer_tor.conf /etc/nginx/sites-enabled/
|
|
sudo ln -sf /etc/nginx/sites-available/homer_tor_ssl.conf /etc/nginx/sites-enabled/
|
|
|
|
sudo nginx -t
|
|
sudo systemctl restart nginx
|
|
|
|
# open the firewall
|
|
echo "*** Updating Firewall ***"
|
|
sudo ufw allow from any to any port 4090 comment 'allow homer HTTP'
|
|
sudo ufw allow from any to any port 4091 comment 'allow homer HTTPS'
|
|
echo ""
|
|
|
|
else
|
|
echo "# homer is already installed."
|
|
fi
|
|
|
|
# start the service if ready
|
|
source /home/admin/raspiblitz.info
|
|
|
|
# setting value in raspi blitz config
|
|
sudo sed -i "s/^homer=.*/homer=on/g" /mnt/hdd/raspiblitz.conf
|
|
|
|
# Hidden Service for Mempool if Tor is active
|
|
source /mnt/hdd/raspiblitz.conf
|
|
if [ "${runBehindTor}" = "on" ]; then
|
|
# make sure to keep in sync with internet.tor.sh script
|
|
/home/admin/config.scripts/tor.onion-service.sh homer 80 4092 443 4093
|
|
fi
|
|
exit 0
|
|
fi
|
|
|
|
|
|
# switch off
|
|
# Stores configuration on persistent disk for quick restore
|
|
if [ "$1" = "0" ] || [ "$1" = "off" ]; then
|
|
|
|
# setting value in raspi blitz config
|
|
sudo sed -i "s/^homer=.*/homer=off/g" /mnt/hdd/raspiblitz.conf
|
|
|
|
isInstalled=$(sudo ls /var/www/homer/assets/config.yml.dist 2>/dev/null | grep -c 'config.yml.dist')
|
|
if [ ${isInstalled} -eq 1 ]; then
|
|
|
|
echo "Saving assets to external drive. If you no longer require these files, it is safe delete from persistent disk at /mnt/hdd/app-data/homer."
|
|
sudo cp /var/www/homer/assets/config.yml /mnt/hdd/app-data/homer/config.yml
|
|
sudo rsync -av --delete /var/www/homer/assets/icons/ /mnt/hdd/app-data/homer/icons/
|
|
|
|
|
|
echo "# *** REMOVING homer ***"
|
|
# delete user and home directory
|
|
sudo userdel -rf homer
|
|
sudo rm -rf /var/www/homer
|
|
|
|
# remove nginx symlinks
|
|
sudo rm -f /etc/nginx/sites-enabled/homer_ssl.conf
|
|
sudo rm -f /etc/nginx/sites-enabled/homer_tor.conf
|
|
sudo rm -f /etc/nginx/sites-enabled/homer_tor_ssl.conf
|
|
sudo rm -f /etc/nginx/sites-available/homer_ssl.conf
|
|
sudo rm -f /etc/nginx/sites-available/homer_tor.conf
|
|
sudo rm -f /etc/nginx/sites-available/homer_tor_ssl.conf
|
|
sudo nginx -t
|
|
sudo systemctl reload nginx
|
|
|
|
# Hidden Service if Tor is active
|
|
if [ "${runBehindTor}" = "on" ]; then
|
|
# make sure to keep in sync with internet.tor.sh script
|
|
/home/admin/config.scripts/tor.onion-service.sh off homer
|
|
fi
|
|
|
|
echo "# OK Homer removed."
|
|
|
|
else
|
|
echo "# Homer is not installed."
|
|
fi
|
|
|
|
exit 0
|
|
fi
|
|
|
|
echo "error='unknown parameter'"
|
|
exit 1
|
|
|