diff --git a/deploy.sh b/deploy.sh index a7caa2d..89d1d01 100755 --- a/deploy.sh +++ b/deploy.sh @@ -24,20 +24,18 @@ if ! lsb_release -d | grep -q "Ubuntu 22.04"; then fi DOMAIN_NAME= - VPS_HOSTING_TARGET=lxd RUN_CERT_RENEWAL=false +SKIP_WWW=false RESTORE_WWW=false BACKUP_CERTS=true -BACKUP_APPS=false -BACKUP_BTCPAY=false - +BACKUP_APPS=true +BACKUP_BTCPAY=true RESTORE_BTCPAY=false BTCPAY_RESTORE_ARCHIVE_PATH= - +BTCPAY_LOCAL_BACKUP_PATH= MIGRATE_WWW=false MIGRATE_BTCPAY=false -SKIP_WWW=false SKIP_BTCPAY=false UPDATE_BTCPAY=false RECONFIGURE_BTCPAY_SERVER=false @@ -106,6 +104,7 @@ for i in "$@"; do ;; --migrate-btcpay) MIGRATE_BTCPAY=true + BACKUP_BTCPAY=true RUN_CERT_RENEWAL=false shift ;; @@ -125,6 +124,12 @@ for i in "$@"; do done +# do some CLI checking. +if [ "$RESTORE_BTCPAY" = true ] && [ ! -f "$BTCPAY_RESTORE_ARCHIVE_PATH" ]; then + echo "ERROR: The restoration archive is not specified. Ensure --restore-archive= is set on the command line." + exit 1 +fi + # set up our default paths. source ./defaults.sh @@ -326,7 +331,9 @@ function instantiate_vms { export VIRTUAL_MACHINE="$VIRTUAL_MACHINE" export REMOTE_CERT_DIR="$REMOTE_CERT_BASE_DIR/$FQDN" export MAC_ADDRESS_TO_PROVISION="$MAC_ADDRESS_TO_PROVISION" - + export BTCPAY_LOCAL_BACKUP_PATH="$SITE_PATH/backups/btcpayserver/$BACKUP_TIMESTAMP" + export BTCPAY_LOCAL_BACKUP_ARCHIVE_PATH="$BTCPAY_LOCAL_BACKUP_PATH/$UNIX_BACKUP_TIMESTAMP.tar.gz" + # This next section of if statements is our sanity checking area. if [ "$VPS_HOSTING_TARGET" = aws ]; then # we require DDNS on AWS to set the public DNS to the right host. @@ -381,12 +388,12 @@ function instantiate_vms { fi else if [ "$MIGRATE_VPS" = true ]; then - echo "INFO: User has indicated to delete the machine, but it doesn't exist." - echo " Going to create it anyway." + echo "INFO: User has indicated a migration, but it doesn't exist. Try removing some command line arguments." + exit 1 fi # The machine does not exist. Let's bring it into existence, restoring from latest backup. - echo "Machine does not exist." + echo "Machine does not exist. Creating." ./deployment/deploy_vms.sh fi diff --git a/deployment/btcpayserver/backup_btcpay.sh b/deployment/btcpayserver/backup_btcpay.sh index 7af6a97..f65e51a 100755 --- a/deployment/btcpayserver/backup_btcpay.sh +++ b/deployment/btcpayserver/backup_btcpay.sh @@ -1,33 +1,28 @@ #!/bin/bash -set -exo +set -ex cd "$(dirname "$0")" # take the services down, create a backup archive, then pull it down. # the script executed here from the BTCPAY repo will automatically take services down # and bring them back up. -echo "INFO!!!!!!!!!!! IN BTCPAY BACKUP SCRIPT." -sleep 4 +echo "INFO: Starting BTCPAY Backup script for host '$BTCPAY_FQDN'." - -ssh "$FQDN" "mkdir -p $REMOTE_HOME/backups; cd $REMOTE_HOME/; sudo BTCPAY_BASE_DIRECTORY=$REMOTE_HOME bash -c $BTCPAY_SERVER_APPPATH/btcpay-down.sh" +ssh "$BTCPAY_FQDN" "mkdir -p $REMOTE_HOME/backups; cd $REMOTE_HOME/; sudo BTCPAY_BASE_DIRECTORY=$REMOTE_HOME bash -c $BTCPAY_SERVER_APPPATH/btcpay-down.sh" # TODO enable encrypted archives # TODO switch to btcpay-backup.sh when on LXD fully. -scp ./remote_scripts/btcpay-backup.sh "$FQDN:$REMOTE_HOME/btcpay-backup.sh" -ssh "$FQDN" "sudo cp $REMOTE_HOME/btcpay-backup.sh $BTCPAY_SERVER_APPPATH/btcpay-backup.sh && sudo chmod 0755 $BTCPAY_SERVER_APPPATH/btcpay-backup.sh" -ssh "$FQDN" "cd $REMOTE_HOME/; sudo BTCPAY_BASE_DIRECTORY=$REMOTE_HOME BTCPAY_DOCKER_COMPOSE=$REMOTE_HOME/btcpayserver-docker/Generated/docker-compose.generated.yml bash -c $BTCPAY_SERVER_APPPATH/btcpay-backup.sh" +scp ./remote_scripts/btcpay-backup.sh "$BTCPAY_FQDN:$REMOTE_HOME/btcpay-backup.sh" +ssh "$BTCPAY_FQDN" "sudo cp $REMOTE_HOME/btcpay-backup.sh $BTCPAY_SERVER_APPPATH/btcpay-backup.sh && sudo chmod 0755 $BTCPAY_SERVER_APPPATH/btcpay-backup.sh" +ssh "$BTCPAY_FQDN" "cd $REMOTE_HOME/; sudo BTCPAY_BASE_DIRECTORY=$REMOTE_HOME BTCPAY_DOCKER_COMPOSE=$REMOTE_HOME/btcpayserver-docker/Generated/docker-compose.generated.yml bash -c $BTCPAY_SERVER_APPPATH/btcpay-backup.sh" # next we pull the resulting backup archive down to our management machine. -ssh "$FQDN" "sudo cp /var/lib/docker/volumes/backup_datadir/_data/backup.tar.gz $REMOTE_HOME/backups/btcpay.tar.gz" -ssh "$FQDN" "sudo chown ubuntu:ubuntu $REMOTE_HOME/backups/btcpay.tar.gz" +ssh "$BTCPAY_FQDN" "sudo cp /var/lib/docker/volumes/backup_datadir/_data/backup.tar.gz $REMOTE_HOME/backups/btcpay.tar.gz" +ssh "$BTCPAY_FQDN" "sudo chown ubuntu:ubuntu $REMOTE_HOME/backups/btcpay.tar.gz" +mkdir -p "$BTCPAY_LOCAL_BACKUP_PATH" +scp "$BTCPAY_FQDN:$REMOTE_HOME/backups/btcpay.tar.gz" "$BTCPAY_LOCAL_BACKUP_ARCHIVE_PATH" -LOCAL_BACKUP_PATH="$SITE_PATH/backups/btcpayserver/$BACKUP_TIMESTAMP" -mkdir -p "$LOCAL_BACKUP_PATH" -scp "$FQDN:$REMOTE_HOME/backups/btcpay.tar.gz" "$LOCAL_BACKUP_PATH/$UNIX_BACKUP_TIMESTAMP.tar.gz" - -sleep 5 -echo "EXITING SCRIPT" \ No newline at end of file +echo "INFO: Created backup archive '$BTCPAY_LOCAL_BACKUP_ARCHIVE_PATH' for host '$BTCPAY_FQDN'." diff --git a/deployment/btcpayserver/remote_scripts/btcpay-restore.sh b/deployment/btcpayserver/remote_scripts/btcpay-restore.sh index 111d4c7..061b8f7 100644 --- a/deployment/btcpayserver/remote_scripts/btcpay-restore.sh +++ b/deployment/btcpayserver/remote_scripts/btcpay-restore.sh @@ -67,9 +67,6 @@ fi cd "$btcpay_dir" . helpers.sh -#echo "INFO: Stopping BTCPay Server." -#btcpay_down - cd "$restore_dir" { diff --git a/deployment/deploy_vms.sh b/deployment/deploy_vms.sh index cc89a87..38438dd 100755 --- a/deployment/deploy_vms.sh +++ b/deployment/deploy_vms.sh @@ -61,7 +61,7 @@ elif [ "$VPS_HOSTING_TARGET" = lxd ]; then # create a base image if needed and instantiate a VM. if [ -z "$MAC_ADDRESS_TO_PROVISION" ]; then echo "ERROR: You MUST define a MAC Address for all your machines by setting WWW_SERVER_MAC_ADDRESS, BTCPAYSERVER_MAC_ADDRESS in your site defintion." - echo "INFO: IMPORTANT! You MUST have DHCP Reservations for these MAC addresses. You also need static DNS entries." + echo "INFO: IMPORTANT! You MUST have DHCP Reservations for these MAC addresses. You also need records established the DNS." exit 1 fi