mirror of
https://github.com/rootzoll/raspiblitz.git
synced 2024-11-19 18:00:22 +01:00
4fd3247386
* Add new Service LightningTipBot A tip bot and Bitcoin Lightning wallet on Telegram based on LNBits https://github.com/LightningTipBot/LightningTipBot * mention config file in menu * Add version in CHANGES Co-authored-by: /rootzoll <christian@geektank.de>
213 lines
6.2 KiB
Bash
213 lines
6.2 KiB
Bash
#!/bin/bash
|
|
|
|
# https://github.com/LightningTipBot/LightningTipBot/
|
|
BOTVERSION="v0.5"
|
|
|
|
# command info
|
|
if [ $# -eq 0 ] || [ "$1" = "-h" ] || [ "$1" = "-help" ]; then
|
|
echo
|
|
echo "config script to install or uninstall LightningTipBot"
|
|
echo "bonus.LightningTipBot.sh [on|off|update|menu]"
|
|
echo
|
|
echo "Version to be installed by default: $BOTVERSION"
|
|
echo "Source: https://github.com/LightningTipBot/LightningTipBot/"
|
|
echo
|
|
exit 1
|
|
fi
|
|
|
|
source /mnt/hdd/raspiblitz.conf
|
|
|
|
isInstalled=$(sudo ls /etc/systemd/system/lightningtipbot.service 2>/dev/null | grep -c 'lightningtipbot.service')
|
|
|
|
# switch on
|
|
if [ "$1" = "menu" ]; then
|
|
if [ ${isInstalled} -eq 1 ]; then
|
|
whiptail --title " LightningTipBot " --msgbox "A tip bot and Bitcoin Lightning wallet on Telegram.\n
|
|
Its a service running in the background - use to monitor:
|
|
sudo journalctl -fu lightningtipbot\n
|
|
For more details and further information see:
|
|
https://github.com/LightningTipBot/LightningTipBot/blob/$BOTVERSION/README.md\n
|
|
Config file: /mnt/hdd/app-data/LightningTipBot/config.yaml" 15 78
|
|
clear
|
|
else
|
|
echo "# LightningTipBot is not installed."
|
|
fi
|
|
exit 0
|
|
fi
|
|
|
|
# stop service
|
|
echo "making sure the LightningTipBot service is not running"
|
|
sudo systemctl stop lightningtipbot 2>/dev/null
|
|
|
|
# install
|
|
if [ "$1" = "1" ] || [ "$1" = "on" ]; then
|
|
echo "*** INSTALL LightningTipBot ***"
|
|
|
|
if [ ${isInstalled} -eq 0 ]; then
|
|
|
|
# install Go
|
|
/home/admin/config.scripts/bonus.go.sh on
|
|
|
|
# get Go vars
|
|
source /etc/profile
|
|
|
|
# create dedicated user
|
|
sudo adduser --disabled-password --gecos "" lightningtipbot
|
|
|
|
# install from source
|
|
cd /home/lightningtipbot
|
|
sudo -u lightningtipbot git clone https://github.com/LightningTipBot/LightningTipBot.git
|
|
cd LightningTipBot
|
|
sudo -u lightningtipbot git reset --hard $BOTVERSION
|
|
|
|
# Remove the old binary
|
|
sudo rm -f LightningTipBot 2>/dev/null
|
|
# Build the new binary
|
|
sudo -u lightningtipbot /usr/local/go/bin/go build . || exit 1
|
|
|
|
# set database path to HDD data so that its survives updates and migrations
|
|
sudo mkdir /mnt/hdd/app-data/LightningTipBot 2>/dev/null
|
|
|
|
# check if data exists
|
|
dataExists=$(ls /mnt/hdd/app-data/LightningTipBot/config.yaml 2>/dev/null | grep -c "config.yaml")
|
|
if [ "${dataExists}" == "0" ]; then
|
|
sudo cp config.yaml.example /mnt/hdd/app-data/LightningTipBot/config.yaml
|
|
sudo cp -r data/ /mnt/hdd/app-data/LightningTipBot/
|
|
fi
|
|
|
|
# backup just in case
|
|
sudo mv data/ data.old
|
|
sudo mv config.yaml config.yaml.old
|
|
|
|
# set permissions on data
|
|
sudo chown lightningtipbot:lightningtipbot -R /mnt/hdd/app-data/LightningTipBot
|
|
|
|
# create symbolic links
|
|
sudo ln -s /mnt/hdd/app-data/LightningTipBot/config.yaml /home/lightningtipbot/LightningTipBot/config.yaml
|
|
sudo ln -s /mnt/hdd/app-data/LightningTipBot/data/ /home/lightningtipbot/LightningTipBot/
|
|
|
|
echo "
|
|
[Unit]
|
|
Description=LightningTipBot Service
|
|
After=lnd.service
|
|
|
|
[Service]
|
|
WorkingDirectory=/home/lightningtipbot/LightningTipBot
|
|
ExecStart=/home/lightningtipbot/LightningTipBot/LightningTipBot
|
|
User=lightningtipbot
|
|
Group=lightningtipbot
|
|
Type=simple
|
|
TimeoutSec=60
|
|
Restart=always
|
|
RestartSec=60
|
|
|
|
# Hardening measures
|
|
PrivateTmp=true
|
|
ProtectSystem=full
|
|
NoNewPrivileges=true
|
|
PrivateDevices=true
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
" | sudo tee -a /etc/systemd/system/lightningtipbot.service
|
|
sudo systemctl enable lightningtipbot
|
|
echo "# OK - the LightningTipBot service is now enabled"
|
|
else
|
|
echo "# The LightningTipBot service is already installed."
|
|
fi
|
|
|
|
isInstalled=$(sudo ls /home/lightningtipbot/LightningTipBot/ 2>/dev/null | grep -c LightningTipBot)
|
|
if [ ${isInstalled} -gt 0 ] ; then
|
|
echo "# Find info on how to use on https://github.com/LightningTipBot/LightningTipBot/tree/$BOTVERSION#set-up-lnbits"
|
|
echo "Please edit your config file: sudo nano /home/lightningtipbot/LightningTipBot/config.yaml"
|
|
echo "Start the service when done: sudo systemctl start lightningtipbot"
|
|
# setting value in raspi blitz config
|
|
/home/admin/config.scripts/blitz.conf.sh set lightningtipbot "on"
|
|
else
|
|
echo "# Failed to build LightningTipBot"
|
|
exit 1
|
|
fi
|
|
|
|
exit 0
|
|
fi
|
|
|
|
|
|
# switch off
|
|
if [ "$1" = "0" ] || [ "$1" = "off" ]; then
|
|
|
|
# check for second parameter: should data be deleted?
|
|
deleteData=0
|
|
if [ "$2" = "--delete-data" ]; then
|
|
deleteData=1
|
|
elif [ "$2" = "--keep-data" ]; then
|
|
deleteData=0
|
|
else
|
|
if (whiptail --title " DELETE DATA? " --yesno "Do you want to delete\nthe LightningTipBot config and data?" 8 30); then
|
|
deleteData=1
|
|
else
|
|
deleteData=0
|
|
fi
|
|
fi
|
|
echo "# deleteData(${deleteData})"
|
|
|
|
isInstalled=$(sudo ls /etc/systemd/system/lightningtipbot.service 2>/dev/null | grep -c 'lightningtipbot.service')
|
|
if [ ${isInstalled} -eq 1 ]; then
|
|
echo "# Removing the LightningTipBot service"
|
|
# remove the systemd service
|
|
sudo systemctl disable lightningtipbot
|
|
sudo rm /etc/systemd/system/lightningtipbot.service
|
|
# delete user and it's home directory
|
|
sudo userdel -rf lightningtipbot
|
|
echo "# OK, the LightningTipBot Service is removed."
|
|
|
|
if [ ${deleteData} -eq 1 ]; then
|
|
echo "# deleting data"
|
|
sudo rm -R /mnt/hdd/app-data/LightningTipBot
|
|
else
|
|
echo "# keeping data"
|
|
fi
|
|
|
|
else
|
|
echo "# LightningTipBot is not installed."
|
|
fi
|
|
|
|
# setting value in raspi blitz config
|
|
/home/admin/config.scripts/blitz.conf.sh set lightningtipbot "off"
|
|
|
|
exit 0
|
|
fi
|
|
|
|
# update
|
|
if [ "$1" = "update" ]; then
|
|
echo "# Updating LightningTipBot"
|
|
cd /home/lightningtipbot/LightningTipBot
|
|
|
|
# fetch latest master
|
|
sudo -u lightningtipbot git fetch
|
|
|
|
# unset $1
|
|
set --
|
|
UPSTREAM=${1:-'@{u}'}
|
|
LOCAL=$(git rev-parse @)
|
|
REMOTE=$(git rev-parse "$UPSTREAM")
|
|
if [ $LOCAL = $REMOTE ]; then
|
|
echo "# LightningTipBot is up-to-date"
|
|
else
|
|
echo "# Pulling latest changes..."
|
|
sudo -u lightningtipbot git pull -p
|
|
|
|
# Remove the old binary
|
|
sudo rm -f LightningTipBot 2>/dev/null
|
|
echo "# Build the new binary"
|
|
sudo -u lightningtipbot /usr/local/go/bin/go build . || exit 1
|
|
fi
|
|
|
|
echo "# Start service"
|
|
sudo systemctl start lightningtipbot
|
|
echo "# Monitor with: 'sudo journalctl -fu lightningtipbot'"
|
|
exit 0
|
|
fi
|
|
|
|
echo "FAIL - Unknown Parameter $1"
|
|
exit
|