All Templates / Automation

Postgres S3 backups

Postgres S3 backups

A simple NodeJS app to back up your PostgreSQL database to S3 via a cron

Deploy Postgres S3 backups

Backup CRON

railwayapp-templates/postgres-s3-backups

Just deployed

Overview

The template uses node-cron or Railway cron, written in TypeScript to dump your PostgreSQL data to a file and then upload the file to S3.

Highlights

  • Configurable backup schedule: By default, the cron runs at 5 AM every day but is configurable via the BACKUP_CRON_SCHEDULE environment variable.

  • Support for custom buckets: The script also supports using a AWS_S3_ENDPOINT environment variable to use any S3 compliant storage bucket (eg: Wasabi).

Configuration

  • 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 to auto if 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. Default false

  • 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


Template Content

Deploy Now

Details

Railway Templates

Created on Sep 1, 2022

792 total projects

287 active projects

96% success on recent deploys

TypeScript, Dockerfile

Automation



More templates in this category

View Template
Tier

Tier

A single tool to configure,orchestrate and manage your entire pricing stack


View Template
Trigger.dev

Trigger.dev

Open source background jobs framework for TypeScript.


Jan Henning

View Template
Mixpost Pro

Mixpost Pro

Self-hosted social media management


Brody Over