Backity is a web service for automatically downloading backups of your games from external clients such as GOG.

For instructions on how to use Backity, consult the Wiki.

⚠️Warning: Backity is not yet production-ready! Anything may break at any time.⚠️

The information below is aimed at developers who want to extend this project's functionality.


Getting Started

First, clone this repository.

Then, build it locally with:

mvn clean install

You can run the project with the following command:

cd backend
mvn spring-boot:run

As a result, you should be able to visit the home page on http://localhost:8080/:

home page screenshot

Configuration

To customize the application, use the -Dspring-boot.run.arguments flag to pass custom property values, e.g.:

cd backend
mvn spring-boot:run -Dspring-boot.run.arguments="--some-property-1=value1 --some-property-2=value2"

Advanced configuration

The following advanced properties can be customized:

  • backity.file-backup-queue-scheduler - how often the file copy queue should be checked
  • backity.gog-auth-scheduler - how often the system should check if GOG authentication should be refreshed

S3 support

By default, Backity uses the local file system to store files.

To enable S3 support, backity.filesystem.s3.enabled must be set to true.

Further properties should also be configured:

  • backity.filesystem.s3.bucket - the bucket to use for storing file copies
  • spring.cloud.aws.s3.endpoint - the S3 endpoint
  • spring.cloud.aws.s3.region.static - the S3 region
  • spring.cloud.aws.credentials.access-key - optionally, the access key
  • spring.cloud.aws.credentials.secret-key - optionally, the secret key

Check the Spring Cloud AWS documentation for more advanced configuration options.

The following optional properties are also available:

Application Behavior

The following information is useful to know about the application's functionality:

  • If downloading a file would result in overwriting an existing file, an exception will be thrown. This helps to protect the existing file and prevents multiple FileCopy aggregates from pointing to the same physical file.