- Mitglied seit
- 03. Jan 2022
- Beiträge
- 2.231
- Punkte für Reaktionen
- 1.045
- Punkte
- 224
Das „leidige“ Thema PostgreSQL-Updates…
Hallo zusammen, immer wieder wird die Frage gestellt, wie im Zusammenhang mit Paperless-ngx eine Datenbankversion aktualisiert werden kann nach einem Major Update, wenn als Datenbank PostgreSQL zum Einsatz kommt. Da der ganze Vorgang nicht trivial ist und ich bei meinem Update von Version 15 auf 16 die eine oder andere Hürde gefunden habe, für die ich mir diverse Tips hier zusammengesucht habe nunmehr ein Versuch, das ganze in einer ausführlichen Anleitung zusammenzufassen.

- 9. November 2023:
16.1
,15.5
,14.10
,13.13
,12.17
und11.22
(EOL)


Grundlagen
Bevor ich beginne, möchte ich ein paar Begriffe klären, damit es nachher nicht zu Missverständnissen kommt bzw. ihr wisst, was ihr wo mit eventuell anderen Bezeichnungen ersetzen müsst.- Verwende ich
PGDBNAME
, so ist der Name eures PostgreSQL-Containers gemeint. Verwendet ihr paperless-ngx-db, nutzt ihr also diesen Namen. - Verwende ich
PGUSER
, ist der Name gemeint, der in Eurer Installation für die Anmeldung an der PostgreSQL-Datenbank verwendet wird. Standardmäßig ist das in der yaml-Beispielsdateipaperless
Anleitung
Vor solchen Arbeiten solltet ihr sicherstellen, dass hier ein aktuelles und funktionierendes Back-up eurer Installation habt. Kein Backup → kein Mitleid
- Stoppt die Container des Webservers und des Brokers (redis), um zu verhindern, dass weitere Daten in die Datenbank geschrieben werden können (der PostgreSQL-Container muss weiterlaufen, weil sonst kein „Dump“ erstellt werden kann)
- Erstellt einen so genannten „Dump“, also eine Sicherung der Datenbank mit folgendem Befehl:
docker exec PGDBNAME bash -c "psql -U PGUSER > /var/lib/postgresql/data/backup/backup.dump"
- Stoppt den PostgreSQL-Container und benennt den bisherigen Ordner (z. B.
/pgdata
) um, der Einfachheit halber etwapgdatav15
für die alte Version und erstellt /pgdata neu. Der Ordner muss (!) leer sein! - Passt in der Konfiguration (yaml) die Version von PostgreSQL an (z. B. auf
postgres:16
) (*1) - Startet zunächst nur die Datenbank neu, in dem ihr in den Ordner navigiert
cd /volume1/docker/paperless/oder/so
und dann folgenden Befehl ausführtdocker-compose up -d db
- Kopiert den Backup-Ordner mit dem Dump in
/pgdata
- Führt folgenden Befehl aus
docker exec PGDBNAME bash -c "psql -U PGUSER < /var/lib/postgresql/data/backup/backup.dump"
, danach seht ihr im Terminal, wie die Daten eingelesen werden - Wenn der Befehl ohne Fehler durchgelaufen ist, startet Webserver und Broker erneut:
docker-compose up -d
Viel Spaß und Erfolg beim ausprobieren und bitte meldet euch, wenn ihr einen Fehler findet, damit ich die Anleitung anpassen kann. Grüße und noch einen schönen Abend!
(*1)

pgdata/backup
extra gemountet wurde.- 1. Februar 2024: v1.0 – Erstellt.
- 2. Februar 2024: v.1.0.1 – Punkt 5 aktualisiert/erweitert, Informationen zur aktuellsten PostgreSQL-Version und Übersicht der aktuellsten Versionen ergänzt.
Zuletzt bearbeitet: