DBackup
Datenbank-Integration

PostgreSQL-Backups, selbst gehostet und verschlüsselt.

DBackup führt pg_dump nach Zeitplan aus, verschlüsselt die Dumps mit AES-256-GCM, wenn der Job einen Schlüssel hat, und legt sie auf dem Speicher Ihrer Wahl ab. Direkt oder über SSH, mit der Wiederherstellung in derselben App.

Open Source unter GPL-3.0 · läuft auf Ihrem eigenen Server
shop-postgresLäuft
  1. VerbindenDirekt zu postgres:5432
  2. Dumppg_dump -F c -Z zstd:3 -d shop
  3. VerschlüsselnAES-256-GCM
  4. HochladenHetzner Object Storage
  5. Aufbewahren7 täglich, 4 wöchentlich, 12 monatlich
  6. MeldenDiscord · #backups
Mit einem Verschlüsselungsprofil wird jeder Dump mit AES-256-GCM verschlüsselt, bevor er Ihren Server verlässt.
pg_dump 18 ist im Image enthalten
PostgreSQL 12 bis 18
Wiederhergestellt mit pg_restore
Custom-Format
Über SSH läuft pg_dump auf Ihrem Server
Direkt oder über SSH (Beta)
Datenbanken wählen und neu benennen
Wiederherstellung in der App

So läuft ein PostgreSQL-Backup

Vier Schritte, jeder mit einem Werkzeug oder Format, das Sie auch selbst nutzen könnten. DBackup führt sie nach Zeitplan aus und meldet sich, wenn einer scheitert.

  1. 1Dumppg_dump -F c schreibt einen Dump im Custom-Format, eine Datenbank nach der anderen.
  2. 2KomprimierenGzip, LZ4 oder Zstd direkt in pg_dump, mit einer Stufe Ihrer Wahl. Oder keine, dann kann DBackup den Dump komprimieren.
  3. 3VerschlüsselnAES-256-GCM mit dem Schlüssel eines Verschlüsselungsprofils, für jeden Dump einzeln. Darin bleibt der Dump, was das Werkzeug geschrieben hat.
  4. 4AblegenHochgeladen zu einem oder mehreren der 13 Speicherziele, jedes mit eigener Aufbewahrung, von einer einfachen Anzahl bis täglich, wöchentlich, monatlich und jährlich.

Native Kompression, pro Job gewählt

Der Job legt fest, wie pg_dump komprimiert, mit einer Stufe zwischen schneller und kleiner. Solange pg_dump komprimiert, lässt DBackup den Dump, wie er ist, damit nichts doppelt komprimiert wird.

Das Formular des Jobs liest die Version Ihres Servers und bietet LZ4 ab PostgreSQL 14 und Zstd ab 16 an.

Zstd, klein und schnellKleine Dateien bei gutem Tempo. Stufen über 19 brauchen viel Arbeitsspeicher.
SchnellerStufe 3, die VorgabeKleiner
122
$ pg_dump -F c -Z zstd:3 -d shop

Alle Datenbanken in einem Archiv

Wählen Sie einige Datenbanken eines Servers oder alle. Jede bekommt ihren eigenen Dump, und alle landen in einem TAR mit einem Manifest und einem Verzeichnis ihrer Prüfsummen.

  • Lassen Sie die Auswahl leer, dann findet jeder Lauf die Datenbanken neu, auch neu angelegte.
  • Stellen Sie eine Datenbank wieder her und lassen Sie die anderen in Ruhe, unter ihrem Namen oder einem neuen.
  • Unverschlüsselt öffnet sich das Archiv mit tar -xf, und die Dumps darin sind gewöhnliche pg_dump-Dateien.
  • TARshop-postgres_2026-10-08_03-00-00.tar1.3 GB
  • { }manifest.json
  • DIRdatabases/
  • DBshop.dump412 MB
  • DBcrm.dump268 MB
  • DBanalytics.dump640 MB
  • { }index
Der Aufbau eines unverschlüsselten Archivs. In einem verschlüsselten tragen die Einträge neutrale Namen.
Jeder Rechner mit Node.js
$ node dbackup-recover.js --extract shop-postgres_2026-10-08_03-00-00.tar ./restored databases/shop$ createdb shop$ pg_restore --no-owner -d shop ./restored/databases/shop.dump

Zurückholen ohne DBackup

Jeder Dump ist das, was pg_dump geschrieben hat. Bewahren Sie das Recovery Kit dort auf, wo DBackup nicht hinkommt, dann holt jeder Rechner mit Node.js und pg_restore 18 die Daten zurück.

Das Recovery Kit aus dem Vault besteht aus einem Skript und Ihrem Schlüssel. Es entschlüsselt und entpackt einen Dump und prüft seine SHA-256-Summe, bevor es die Datei schreibt.

Warum wir das so gebaut haben

In fünf Minuten startklar

DBackup ist ein Container. Stellen Sie ihn neben Ihre Datenbank, geben Sie ihm einen Login und legen Sie den ersten Job an.

docker-compose.yml
services:
  dbackup:
    image: skyfay/dbackup:latest
    restart: always
    ports:
      - "3000:3000"
    environment:
      - ENCRYPTION_KEY=${ENCRYPTION_KEY}          # openssl rand -hex 32
      - BETTER_AUTH_SECRET=${BETTER_AUTH_SECRET}  # openssl rand -base64 32
      - BETTER_AUTH_URL=https://localhost:3000
    volumes:
      - ./data:/data

  postgres:
    image: postgres:18
    environment:
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}

Fragen zu PostgreSQL

PostgreSQL 12 bis 18. Das Image bringt pg_dump aus PostgreSQL 18 mit, das jeden älteren Server in diesem Bereich liest. Über SSH arbeitet das pg_dump auf Ihrem Server.

Nein. DBackup führt pg_dump für jede Datenbank aus und nie pg_dumpall, also sind Rollen und Tablespaces nicht im Backup. Eine Wiederherstellung lässt Besitzer und Rechte weg, die wiederhergestellten Objekte gehören also dem Login, der sie wiederherstellt.

Ja, über SSH, das noch in der Beta ist. DBackup meldet sich am Server an, führt dort pg_dump aus und überträgt den Dump zurück. pg_dump, pg_restore und psql müssen auf diesem Server installiert sein.

Nein. Lesen reicht. Ab PostgreSQL 14 deckt die Rolle pg_read_all_data jede Datenbank ab, auf älteren Servern vergeben Sie CONNECT und SELECT pro Datenbank.

Ja. Das Recovery Kit holt die Dumps heraus, verschlüsselt oder nicht, mit nichts als Node.js. pg_restore spielt sie zurück, Version 18 für Dumps aus dem Docker-Image, da pg_restore nie den Dump eines neueren pg_dump liest.

Ihr erstes PostgreSQL-Backup läuft heute Nacht.

Ein Container, eine Compose-Datei und ein Job. Kostenlos und Open Source.