Skip to content

[FEATURE] Add PostgreSQL database backup and verified restore support #79

Description

@Josh-Archer

Goal

Give PostgreSQL installations a supported backup and restore workflow comparable to the existing SQLite experience.

Why

Chaptarr currently skips database backup for PostgreSQL and rejects PostgreSQL database restores, requiring operators to build an external process. This leaves the application backup UI incomplete for production PostgreSQL deployments.

Requirements

  • R1: Create versioned logical backups for the main, log, and cache databases using supported PostgreSQL tooling or a documented pluggable backend.
  • R2: Include checksums, Chaptarr version, PostgreSQL compatibility metadata, and a manifest describing all backup components.
  • R3: Validate backup completeness before reporting success.
  • R4: Restore into a staged or explicitly confirmed target and validate it before cutover.
  • R5: Never place passwords in process arguments, logs, archive metadata, or persisted task output.
  • R6: Preserve the existing external-backup option for operators who do not want Chaptarr-managed database backups.

Acceptance criteria

  • A backup containing all three databases can be created and checksum-verified.
  • A clean PostgreSQL fixture can be restored and passes migrations plus application startup checks.
  • Partial, corrupt, or version-incompatible backups fail before replacing an active database.
  • Cancellation and failure leave the active databases unchanged.
  • Security tests verify that credentials are absent from logs and backup artifacts.

Likely implementation areas

  • src/NzbDrone.Core/Backup/
  • src/Chaptarr.Api.V1/System/Backup/
  • Backup UI, documentation, and PostgreSQL integration tests

Out of scope

  • Provisioning PostgreSQL servers or storage.
  • Deleting external backups or defining infrastructure retention policy.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions