Paperless-ngx Anleitung zum Upgrade der PostgreSQL-Datenbank

Monacum

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
03. Jan 2022
Beiträge
2.066
Punkte für Reaktionen
916
Punkte
204

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.

Container Manager – PostgreSQL-Versionℹ️ Stand 2. Februar 2024 ist die aktuellste Major Version von PostgreSQL v16, unterstützt und weiter mit Updates versorgt werden noch v12–v15. v11 hat im November 2023 das letzte Update erhalten. Folgende Versionen von PostgreSQL sind innerhalb ihrer Major Version derzeit aktuell:
Anbei ein Bild, wo ihr, egal welcher Tag gesetzt wurde, seht, welche Version Eure Datenbank gerade verwendet.

ℹ️ Auch wenn Updates immer eine sinnvolle Sache sind, so sei an dieser Stelle zunächst auch erwähnt, dass ein Update der Datenbank-Version keinerlei Vorteile im Betrieb von Paperless-ngx mit sich bringt. Neue Funktionen gibt es mit dem Update des Webservers, solange eine alte Version nicht zu Problemen führt, kann diese auch weiterverwendet werden.

ℹ️ Wer erst mit Paperless-ngx startet, dem sei auch empfohlen, von Beginn an auf MariaDB als Datenbank zu setzen; wer bisher PostgreSQL einsetzt und gerne auf MariaDB wechseln möchte, dem sei diese Anleitung von @Adama ans Herz gelegt: Paperless-ngx: Migration Postgresql zu MariaDB. Bei großen Versionsupdates der MariaDB sind hier im Forum bisher keine Probleme bekannt und das im Vergleich umständliche Prozedere unten entfällt.

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-Beispielsdatei paperless
Dann möchte ich grundsätzlich anmerken, dass ich die ganzen Befehle in der Regel über mein Terminal absetze, weil ich dort sofort das Ergebnis sehe. Die ganzen Befehle können aber selbstverständlich auch über den Aufgabenplaner eingegeben werden, dann erhaltet ihr je nach eurer Einstellung die Antwort per Mail. Das erschwert bei Problemen aber im Zweifelsfall die Ursachenfindung.

Anleitung​

Vor solchen Arbeiten solltet ihr sicherstellen, dass hier ein aktuelles und funktionierendes Back-up eurer Installation habt. Kein Backup → kein Mitleid 😉
  1. 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)
  2. 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"
  3. Stoppt den PostgreSQL-Container und benennt den bisherigen Ordner (z. B. /pgdata) um, der Einfachheit halber etwa pgdatav15 für die alte Version und erstellt /pgdata neu. Der Ordner muss (!) leer sein!
  4. Passt in der Konfiguration (yaml) die Version von PostgreSQL an (z. B. auf postgres:16) (*1)
  5. 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ührt docker-compose up -d db
  6. Kopiert den Backup-Ordner mit dem Dump in /pgdata
  7. 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
  8. Wenn der Befehl ohne Fehler durchgelaufen ist, startet Webserver und Broker erneut: docker-compose up -d
Danach solltet ihr euch mit den bekannten Anmeldedaten wieder anmelden können. Wird die Anmeldeseite geladen, funktioniert das Anmelden aber nicht mit Verweis auf falsche Anmeldedaten, dann hat das zurückspielen der Datenbank nicht funktioniert.

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) ⚠️ Ich hatte lange Zeit einen separaten Ordner für die Dumps, der in der Konfiguration auch entsprechend angegeben war. Leider führte das bei dem Versuch, die Datenbank wieder einzuspielen, dazu, dass der Container in einer Dauerschleife neu startet und immer wieder den Fehler aus wirft, dass das Verzeichnis leer sein muss. Deswegen empfehle ich hier, das ganze aus zu kommentieren oder zu entfernen, wenn der Ordner 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:

Rotbart

Benutzer
Contributor
Sehr erfahren
Mitglied seit
04. Jul 2021
Beiträge
1.457
Punkte für Reaktionen
441
Punkte
109
Danke schön für die Anleitung, ich hab noch Postgresql 14, aber wenn ich das richtig sehe gibt es momentan keine Vorteile (z.b. Performance) auf eine höhere Version oder zu Mysql zu wechseln, oder irre ich mich ?

p.s. der Link zur Anleitung von @Adama funktioniert nicht.
 

plang.pl

Benutzer
Contributor
Sehr erfahren
Maintainer
Mitglied seit
28. Okt 2020
Beiträge
14.289
Punkte für Reaktionen
4.966
Punkte
519
  • Like
Reaktionen: Rotbart und Monacum

Monacum

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
03. Jan 2022
Beiträge
2.066
Punkte für Reaktionen
916
Punkte
204
@Rotbart, genau, habe ich bisher nicht feststellen können und als ich Paperless-ngx erstmals eingerichtet habe, lief die DB noch in v12. Link auf den Thread von Adama habe ich angepasst.
 
  • Like
Reaktionen: Rotbart

deltapapa

Benutzer
Mitglied seit
06. Jan 2019
Beiträge
108
Punkte für Reaktionen
5
Punkte
24
Moin Moin,
mal eine Frage in die Runde: Ich habe diese neue Anleitung für die Installation von Paperless-NGX im Container mit Portainer gefunden:
https://www.youtube.com/watch?v=2odgHEaIFFI&list=PL3-bM7Aq1pUrFncMGS6NlbtSkvj2eZdI3&index=11
Das ist ein Update zum ersten Video, bei dem noch P-NGX in Version 1.7 mit PostgreSQL im Stack installiert wurde. Bei dem neuen Video wird gar keine DB im Stack mitinstalliert.
Könnt ihr mir vielleicht sagen, warum bei Version augenscheinlich keine DB mehr installiert wird?
Dankeschön :)
 

Monacum

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
03. Jan 2022
Beiträge
2.066
Punkte für Reaktionen
916
Punkte
204
Das ist ein Fehler oder eine Ungenauigkeit und wird auch in einem der Kommentare unter dem Video angesprochen, ohne Datenbank läuft das Ganze nicht.
 

alexhell

Benutzer
Sehr erfahren
Mitglied seit
13. Mai 2021
Beiträge
2.623
Punkte für Reaktionen
761
Punkte
154
Wenn du keine DB konfigurierst, was du nicht unbedingt musst, dann wird SQLite verwendet. Vielleicht reicht das dem Ersteller aus.
 
  • Like
Reaktionen: deltapapa und Monacum

deltapapa

Benutzer
Mitglied seit
06. Jan 2019
Beiträge
108
Punkte für Reaktionen
5
Punkte
24
Wenn du keine DB konfigurierst, was du nicht unbedingt musst, dann wird SQLite verwendet. Vielleicht reicht das dem Ersteller aus.
Gibts da denn Einschränkungen? Würde ja auch gerne MariaDB nehmen, habe noch keine schöne Anleitung dazu auf YT gefunden...
 

alexhell

Benutzer
Sehr erfahren
Mitglied seit
13. Mai 2021
Beiträge
2.623
Punkte für Reaktionen
761
Punkte
154
Es hängt ganz vom Einsatzzweck ab. Wie viele Benutzer sind parallel aktiv? Um welche Datenmenge geht es usw.... Einschränkungen bei der Benutzung wirst du nicht haben.
Aber was brauchst du denn für ein genaues Video nur für MariaDB?
Statt https://github.com/paperless-ngx/paperless-ngx/blob/main/docker/compose/docker-compose.postgres.yml nutzt du einfach https://github.com/paperless-ngx/paperless-ngx/blob/main/docker/compose/docker-compose.mariadb.yml. Wenn du Paperless eh schon mal eingerichtet hast, dann weißt du ja wie es mit der Compose funktioniert.
 
  • Like
Reaktionen: deltapapa


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat 

 
 
  AdBlocker gefunden!

Du bist nicht hier, um Support für Adblocker zu erhalten. Dein Adblocker funktioniert bereits ;-)

Klar machen Adblocker einen guten Job, aber sie blockieren auch nützliche Funktionen.

Das Forum wird mit hohem technischen, zeitlichen und finanziellen Aufwand kostenfrei zur Verfügung gestellt. Wir zeigen keine offensive Werbung und bemühen uns um eine dezente Integration.

Bitte unterstütze dieses Forum, in dem du deinen Adblocker für diese Seite deaktivierst.

Du kannst uns auch über unseren Kaffeautomat einen Kaffe ausgeben oder ein PUR Abo abschließen und das Forum so werbefrei nutzen.

Vielen Dank für Deine Unterstützung!