A simple NodeJS application to backup your PostgreSQL database to S3 via a cron.
- 
AWS_ACCESS_KEY_ID- AWS access key ID. - 
AWS_SECRET_ACCESS_KEY- AWS secret access key, sometimes also called an application key. - 
AWS_S3_BUCKET- The name of the bucket that the access key ID and secret access key are authorized to access. - 
AWS_S3_REGION- The name of the region your bucket is located in, set toautoif unknown. - 
BACKUP_DATABASE_URL- The connection string of the database to backup. - 
BACKUP_CRON_SCHEDULE- The cron schedule to run the backup on. Example:0 5 * * * - 
AWS_S3_ENDPOINT- The S3 custom endpoint you want to use. Applicable for 3-rd party S3 services such as Cloudflare R2 or Backblaze R2. - 
AWS_S3_FORCE_PATH_STYLE- Use path style for the endpoint instead of the default subdomain style, useful for MinIO. Defaultfalse - 
RUN_ON_STARTUP- Run a backup on startup of this application then proceed with making backups on the set schedule. - 
BACKUP_FILE_PREFIX- Add a prefix to the file name. - 
BUCKET_SUBFOLDER- Define a subfolder to place the backup files in. - 
SINGLE_SHOT_MODE- Run a single backup on start and exit when completed. Useful with the platform's native CRON schedular. - 
SUPPORT_OBJECT_LOCK- Enables support for buckets with object lock by providing an MD5 hash with the backup file. - 
BACKUP_OPTIONS- Add any valid pg_dump option, supported pg_dump options can be found here. Example:--exclude-table=pattern - 
NODE_VERSION- Specify a custom Node.js version to override the default version set in the Dockerfile. - 
PG_VERSION- Specify a custom PostgreSQL version to override the default version set in the Dockerfile. 
If backing up a Postgres 17 database imported from Postgres 16, set PG_VERSION=17 and NODE_VERSION=22.