#!/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."