cln: activate the backup plugin on every install

This commit is contained in:
openoms 2021-07-18 20:29:07 +01:00
parent ae3adc7a32
commit 588e394b46
2 changed files with 42 additions and 15 deletions

View file

@ -3,10 +3,13 @@
function help(){ function help(){
echo echo
echo "Install the backup plugin for C-lightning" echo "Install the backup plugin for C-lightning"
echo "Replicates the lightningd.sqlite3 database on the SDcard"
echo
echo "Usage:" echo "Usage:"
echo "cln-plugin.backup.sh [on] [testnet|mainnet|signet]" echo "cln-plugin.backup.sh [on|off] [testnet|mainnet|signet]"
echo "cln-plugin.backup.sh [restore] [testnet|mainnet|signet] [force]" echo "cln-plugin.backup.sh [restore] [testnet|mainnet|signet] [force]"
echo "cln-plugin.backup.sh [backup-compact] [testnet|mainnet|signet]" echo "cln-plugin.backup.sh [backup-compact] [testnet|mainnet|signet]"
echo
echo "https://github.com/lightningd/plugins/tree/master/backup" echo "https://github.com/lightningd/plugins/tree/master/backup"
echo echo
exit 1 exit 1
@ -20,21 +23,25 @@ fi
source <(/home/admin/config.scripts/network.aliases.sh getvars cln $2) source <(/home/admin/config.scripts/network.aliases.sh getvars cln $2)
plugin="backup" plugin="backup"
plugindir="/home/bitcoin/cln-plugins-available" plugindir="/home/bitcoin/cln-plugins-available/plugins"
function install() { function install() {
if [ ! -f "/home/bitcoin/cln-plugins-available/plugins/${plugin}/${plugin}.py" ]; then if [ ! -f "${plugindir}/${plugin}/${plugin}.py" ]; then
cd /home/bitcoin/cln-plugins-available || exit 1 cd /home/bitcoin/cln-plugins-available || exit 1
sudo -u bitcoin git clone https://github.com/lightningd/plugins.git sudo -u bitcoin git clone https://github.com/lightningd/plugins.git
fi fi
if [ $($lightningcli_alias plugin list | grep "${plugin}") -eq 0 ];then if [ $($lightningcli_alias plugin list | grep -c "${plugin}") -eq 0 ];then
echo "# Starting the ${plugin} plugin" echo "# Checking dependencies"
sudo -u bitcoin pip install --user -r ${plugindir}/${plugin}/requirements.txt sudo -u bitcoin pip install --user -r ${plugindir}/${plugin}/requirements.txt 1>/dev/null
if [ $(echo $PATH | grep -c "/home/bitcoin/.local/bin") -eq 0 ]; then
export PATH=$PATH:/home/bitcoin/.local/bin
echo "PATH=\$PATH:/home/bitcoin/.local/bin" | sudo tee -a /etc/profile
fi
sudo chmod +x ${plugindir}/${plugin}/${plugin}.py sudo chmod +x ${plugindir}/${plugin}/${plugin}.py
# symlink to the default plugin dir # symlink to the default plugin dir
if [ ! -L /home/bitcoin/${netprefix}cln-plugins-enabled/backup ];then if [ ! -L /home/bitcoin/${netprefix}cln-plugins-enabled/backup ];then
sudo ln -s /home/bitcoin/cln-plugins-available/plugins/backup \ sudo ln -s ${plugindir}/backup \
/home/bitcoin/${netprefix}cln-plugins-enabled/ /home/bitcoin/${netprefix}cln-plugins-enabled/
fi fi
fi fi
@ -44,14 +51,27 @@ if [ $1 = on ];then
install install
# initialize # don't overwrite old backup
if [ -f /home/bitcoin/${netprefix}lightningd.sqlite3.backup ];then
echo "# Backup the existing old backup on the SDcard"
now=$(date +"%Y_%m_%d_%H%M%S")
sudo mv /home/bitcoin/${netprefix}lightningd.sqlite3.backup \
/home/bitcoin/${netprefix}lightningd.sqlite3.backup.${now} || exit 1
fi
# init plugin
if [ ! -f /home/bitcoin/.lightning/${CLNETWORK}/backup.lock ];then if [ ! -f /home/bitcoin/.lightning/${CLNETWORK}/backup.lock ];then
# https://github.com/lightningd/plugins/tree/master/backup#setup # https://github.com/lightningd/plugins/tree/master/backup#setup
/home/bitcoin/${netprefix}cln-plugins-enabled/backup/backup-cli init\ echo "# Initialize the backup plugin"
sudo -u bitcoin /home/bitcoin/${netprefix}cln-plugins-enabled/backup/backup-cli init\
--lightning-dir /home/bitcoin/.lightning/${CLNETWORK} \ --lightning-dir /home/bitcoin/.lightning/${CLNETWORK} \
file:///home/bitcoin/${netprefix}lightningd.sqlite3.backup file:///home/bitcoin/${netprefix}lightningd.sqlite3.backup
fi fi
elif [ $1 = off ];then
echo "# Removing the backup plugin"
sudo rm -f /home/bitcoin/${netprefix}cln-plugins-enabled/backup
elif [ $1 = restore ];then elif [ $1 = restore ];then
@ -68,7 +88,9 @@ elif [ $1 = restore ];then
# make sure to not overwrite old database # make sure to not overwrite old database
if [ -f /home/bitcoin/.lightning/${CLNETWORK}/lightningd.sqlite3 ];then if [ -f /home/bitcoin/.lightning/${CLNETWORK}/lightningd.sqlite3 ];then
now=$(date +"%Y_%m_%d_%H%M%S") now=$(date +"%Y_%m_%d_%H%M%S")
sudo cp /home/bitcoin/.lightning/${CLNETWORK}/lightningd.sqlite3.backup.${now} || exit 1 echo "# Backup the existing old database on the disk"
sudo cp /home/bitcoin/.lightning/${CLNETWORK}/lightningd.sqlite3 \
/home/bitcoin/.lightning/${CLNETWORK}/lightningd.sqlite3.backup.${now} || exit 1
if [ "$(echo "$@" | grep -c "force")" -gt 0 ];then if [ "$(echo "$@" | grep -c "force")" -gt 0 ];then
sudo rm /home/bitcoin/.lightning/${CLNETWORK}/lightningd.sqlite3 sudo rm /home/bitcoin/.lightning/${CLNETWORK}/lightningd.sqlite3
fi fi
@ -90,7 +112,7 @@ elif [ $1 = backup-compact ];then
$lightning-cli backup-compact $lightning-cli backup-compact
else else
echo "# No /home/bitcoin/.lightning/${CLNETWORK}/lightningd.sqlite3 present" echo "# No /home/bitcoin/.lightning/${CLNETWORK}/lightningd.sqlite3 is present"
echo "# Run 'config.scripts/cln-plugin.backup.sh on ${CLNETWORK}' first" echo "# Run 'config.scripts/cln-plugin.backup.sh on ${CLNETWORK}' first"
fi fi

View file

@ -163,6 +163,11 @@ always-use-proxy=true
sudo chown -R bitcoin:bitcoin /mnt/hdd/app-data/.lightning sudo chown -R bitcoin:bitcoin /mnt/hdd/app-data/.lightning
sudo chown -R bitcoin:bitcoin /home/bitcoin/ sudo chown -R bitcoin:bitcoin /home/bitcoin/
#################
# Backup plugin #
#################
/home/admin/config.scripts/cln-plugin.backup.sh on $CHAIN
################### ###################
# Systemd service # # Systemd service #
################### ###################