This site is under active development. Some services and pages may not be fully ready yet.

All documentation

Backup & Recovery

PostgreSQL dump backups, Redis RDB snapshots, storage archives, and restore procedures.

Backups run nightly from the scheduler. What is captured is controlled by BACKUP_POSTGRES_ENABLED, BACKUP_REDIS_ENABLED and BACKUP_STORAGE_ENABLED, written under BACKUP_ROOT and pruned after BACKUP_RETENTION_DAYS.

What is backed up

ComponentContentsMatters because
PostgreSQLFull logical dumpAll clients, invoices, services and tickets.
RedisRDB snapshotQueued jobs and sessions. Losing it is survivable.
StorageArchive of the storage directoryUploads, generated documents, release archives.

Restoring the database

gunzip -c backup-2026-01-01.sql.gz | docker compose -f docker-compose.prod.yml exec -T postgres psql -U $DB_USERNAME $DB_DATABASE
NoteA backup you have never restored is a hope, not a backup. Rehearse a restore into staging at least once, and confirm the dump is non-empty rather than trusting that the job ran.

Off-server copies

Backups are written to the same machine by default. Copy them somewhere else — object storage or another host — or a server failure takes the backups with it.