For DevelopersServices
Backup Cron Service (crons/backup)
Daily PostgreSQL backup to S3 storage. Gzips output; runs on Railway schedule.
What it does
- Runs
pg_dumpagainstDB_PRIMARY_CONNECTION_STRING - Gzips dump, uploads to
pg-backups/in private S3 storage - Sentry traces + errors
Environment (src/env.ts)
SENTRY_DSN_CRON_BACKUP,RAILWAY_ENVIRONMENT,DB_PRIMARY_CONNECTION_STRING,S3_ACCESS_KEY_ID,S3_SECRET_ACCESS_KEY,S3_REGION,S3_BUCKET,S3_ENDPOINT
Implementation (src/index.ts)
- Spawns
pg_dump(PostgreSQL 16 client installed in Dockerfile) - Compress → upload via
S3Client - Flushes Sentry on success/error, exits with proper code
Docker image (crons/backup/Dockerfile)
- Bun base; installs PostgreSQL client; prod deps only; runs as non-root
Railway (crons/backup/railway.json)
- Schedule:
0 5 * * * - 1 replica, CPU 4, 16GB mem