Railway

Deploy Postgres PITR

Postgres with WAL archiving to a bucket for PITR

Deploy Postgres PITR

/var/lib/postgresql/data

Postgres-PITR

Bucket

Just deployed

Deploy and Host Postgres PITR on Railway

PostgreSQL with point-in-time recovery powered by pgBackRest. Every committed transaction is continuously archived to a Railway Bucket, letting you restore your database to any specific timestamp within your retention window — down to the second.

About Hosting Postgres PITR

Hosting Postgres PITR on Railway provisions a Railway Bucket alongside your existing Postgres service and streams WAL (Write-Ahead Log) segments to it continuously using pgBackRest's async archiver. pgBackRest ships pre-installed in the Postgres image and activates automatically when `WAL_ARCHIVE_BUCKET` is detected on startup — no manual installation or configuration needed. Railway's Backups panel handles the full restore workflow: pick a target timestamp, and Railway provisions a new volume from the nearest base snapshot, replays WAL to your target, and promotes the database. Residual failover RPO is 60 seconds (`archive_timeout`) plus failover-detection time.

Common Use Cases

  • Recovering from accidental `DROP TABLE`, `DELETE`, or row-level data corruption
  • Rolling back a failed migration to a known-good state before changes were applied
  • Meeting compliance or audit requirements for point-in-time data recoverability
  • Debugging production incidents by inspecting the exact database state at any past moment
  • Creating a safety net before major schema changes or Postgres version upgrades

Dependencies for Postgres PITR Hosting

  • Postgres — A running Railway Postgres service (standalone). HA clusters use a dedicated rolling-restart flow to enable PITR without disrupting quorum.
  • Railway Bucket — Provisioned automatically by this template; stores WAL segments and full base backups.
  • pgBackRest — Pre-installed in the `ghcr.io/railwayapp-templates/postgres-ssl` image; no separate installation required.

Deployment Dependencies

Implementation Details

This template overlays six `WAL_ARCHIVE_*` environment variables onto your existing Postgres service. The image detects `WAL_ARCHIVE_BUCKET` on startup, writes `archive_mode = on` and `archive_command` into the Postgres configuration, runs `stanza-create` once, and begins pushing WAL segments asynchronously. A 5 GiB local spool buffer absorbs brief S3 outages without stalling Postgres. To restore, select a target timestamp in the Backups panel — Railway identifies the nearest base backup, provisions a new volume, and replays WAL forward using `pgbackrest archive-get` until the target time.

Why Deploy Postgres PITR on Railway?

Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to vertically and horizontally scale it.

By deploying Postgres PITR on Railway, you are one step closer to supporting a complete full-stack application with minimal burden. Host your servers, databases, AI agents, and more on Railway.


Template Content

More templates in this category

View Template
Garage S3 Storage
Ultra-light S3 server: fast, open-source, plug-and-play 🚀

PROJETOS
View Template
Postgres Backup to Cloudflare R2 (S3-Compatible)
Automated PostgreSQL backups to S3-compatible storage with encryption

Artour
View Template
ReadySet
A lightweight caching engine for Postgres

Milo