diff --git a/forgejo/forgejo-backup.sh b/forgejo/forgejo-backup.sh new file mode 100755 index 0000000..8447fa2 --- /dev/null +++ b/forgejo/forgejo-backup.sh @@ -0,0 +1,45 @@ +#!/bin/bash +SCRIPT_ABS_LOCATION=$(realpath "$(dirname "${0}")") + +source $SCRIPT_ABS_LOCATION/forgejo-backup.env +source $SCRIPT_ABS_LOCATION/../logger.sh + +# Container Names +APP_CONTAINER="forgejo" +BACKUP_CONTAINER="duplicati" + +SOURCE_DIR="/mnt/data/forgejo" +BACKUP_DESTINATION="$BACKUP_DESTINATION" +BACKUP_ENCR_PASSPHRASE="$BACKUP_ENCR_PASSPHRASE" + +# Cloud Storage Authentication +SFTP_USERNAME="$SFTP_USERNAME" +SFTP_PASSWORD="$SFTP_PASSWORD" +SFTP_FINGERPRINT="$SFTP_FINGERPRINT" + +# Log file +LOG_FILE="$SCRIPT_ABS_LOCATION/forgejo-backup.log" + +# Stop forgejo container +log "Stopping forgejo container..." +docker stop $APP_CONTAINER || { log "Error: Failed to stop forgejo."; exit 1; } + +# Backup all files to target destination +log "Backing up forgejo files (including the SQLite database)..." +docker exec $BACKUP_CONTAINER \ + duplicati-cli backup \ + ssh://$BACKUP_DESTINATION \ + $SOURCE_DIR \ + --backup-name="forgejo backup" \ + --keep-versions=7 \ + --auth-username=$SFTP_USERNAME \ + --auth-password=$SFTP_PASSWORD \ + --passphrase=$BACKUP_ENCR_PASSPHRASE \ + --ssh-fingerprint="$SFTP_FINGERPRINT" \ + --prefix="forgejo" || { log "Error: Failed to backup forgejo files and database."; exit 1; } + +# Turn off Maintenance Mode +log "Starting forgejo container..." +docker start $APP_CONTAINER || { log "Error: Failed to start forgejo container."; exit 1; } + +log "Forgejo backup completed successfully." diff --git a/full-backup.sh b/full-backup.sh index 27792ce..cc8fecb 100755 --- a/full-backup.sh +++ b/full-backup.sh @@ -3,7 +3,7 @@ SCRIPT_ABS_LOCATION=$(realpath "$(dirname "${0}")") # Define an array of application names -declare -a apps=("cryptpad" "immich" "duplicati" "nextcloud" "vaultwarden") +declare -a apps=("cryptpad" "immich" "duplicati" "nextcloud" "vaultwarden" "forgejo") # Function to execute the backup script for each application backup_app() {