Paperless-ngx Paperless-NGX: Neue Dokumente werden in Endlosschleife eingelesen

FizzyMUC

Benutzer
Mitglied seit
09. Feb 2023
Beiträge
173
Punkte für Reaktionen
15
Punkte
18
Siehe einmal oben ;)
Erstelle einfach das Verzeichnis.
Schon mal gut zu wissen! :) Führt zu folgendem Fehler:

Code:
mv: cannot stat 'pg_dumpall.dump.gz': No such file or directory
bash: line 1: /var/lib/postgresql/data/backup/pg_dumpall.dump.gz: No such file or directory

Macht ja auch Sinn, da in dem nun von mir manuell erzeugten Folder keine Datei 'pg_dumpall.dump.gz' liegt, die rauskopiert werden könnte... Wie erstelle ich die denn?
 

EDvonSchleck

Gesperrt
Mitglied seit
06. Mrz 2018
Beiträge
4.703
Punkte für Reaktionen
1.119
Punkte
214
Kommentiere die 2 Zeile doch einfach mit einem # aus, bis das erste File angelegt wurde.
Ich habe das bei mir so laufen, damit ich immer das letzte Backup mit einer Aufgabe einspielen kann, ohne den Befehl zu ändern, bequem per Aufgabe.

Code:
cd /volume1/docker/paperlessngx/db/backup/
# mv pg_dumpall.dump.gz pg_dumpall-$(date +%d%m%Y-%H:%M).dump.gz
find -mtime +30 -delete
docker exec paperless-db bash -c "pg_dumpall -U postgres | gzip > /var/lib/postgresql/data/backup/pg_dumpall.dump.gz"

Damit sicherst du auch PostgreSQL komplett und nicht nur die einzelne Datenbank "paperless". Gerade wenn man mehre Dienste laufen hat, erspart man sich mehrfache Arbeit. Bei deinem Script sicherst du "nur" die paperless Datenbank und hast somit kein Full-Dump von PostgreSQL
 

FizzyMUC

Benutzer
Mitglied seit
09. Feb 2023
Beiträge
173
Punkte für Reaktionen
15
Punkte
18
Ich habe ja auch "nur" die paperless-db. Dein Skript führt nun zum Fehler
Code:
pg_dumpall: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL: role "postgres" does not exist

Wenn ich nun paperless statt postgres eingebe terminiert die Ausführung normal. Puh... Irgendwie ist das recht zäh. So, nun habe ich also einen db-dump. Jetzt stoppe ich dann den PostGRES Container, compose den neu mit v15, und dann füge ich den dump via
Code:
docker exec paperless-db bash -c "psql -U paperless < /var/lib/postgresql/data/backup/pg_dumpall.dump.gz"

wieder ein? Wäre das korrekt?
 
Zuletzt bearbeitet:

EDvonSchleck

Gesperrt
Mitglied seit
06. Mrz 2018
Beiträge
4.703
Punkte für Reaktionen
1.119
Punkte
214
Dann musst du es anpassen. Ich erstelle alle Datenbanken in Postgres direkt und nicht über den Container. Behalte das einfach im Hinterkopf, falls du eine weitere Datenbank brauchst.
 

FizzyMUC

Benutzer
Mitglied seit
09. Feb 2023
Beiträge
173
Punkte für Reaktionen
15
Punkte
18
Dann musst du es anpassen. Ich erstelle alle Datenbanken in Postgres direkt und nicht über den Container. Behalte das einfach im Hinterkopf, falls du eine weitere Datenbank brauchst.
So, da der Dump nun funktioniert hat noch zwei Fragen:
1) Das reicht ja als Dump der database aus, also kann ich den db-backup Container bei mir rauswerfen, richtig?
2) Aus diesem Dump kann ich nun mit oben genanntem Befehl die Database nach Migration des Containers auf v15 wieder einspielen?
3) Da die Aufgabe nun jede Nacht läuft habe ich immer ein aktuelles Backup, dass ich im Zweifelsfall mit eben jenem Befehl wieder einspielen kann (zB bei der nächsten Major Version von PostGRES)?
 

EDvonSchleck

Gesperrt
Mitglied seit
06. Mrz 2018
Beiträge
4.703
Punkte für Reaktionen
1.119
Punkte
214
Du hast immer noch nicht den Beitrag gelesen!!! :mad:

  1. Ja den Container kannst du herauswerfen.
  2. Ja kannst du, solltest aber auch alle Ordner außer den Backupordner löschen! Das ist ganz wichtig. Steht auch in dem Beitrag!!! Danach neuen Container installieren und Backup einspielen.
  3. Richtig
Du kannst aber auch den Backupordner heraus mounten in einem anderen Verzeichnis, falls du Interesse hast oder es woanders weg sichern willst. Steht aber auch im Thread. Ich lasse es aber so, weil ich den Ordner /docker eh mit Hyberbackup sichere.

Code:
cd /volume1/docker/paperlessngx/db/backup/
gunzip -c pg_dumpall.dump.gz > pg_dumpall.dump
docker exec paperless-db bash -c "psql -U paperless < /var/lib/postgresql/data/backup/pg_dumpall.dump"
rm pg_dumpall.dump
Damit spielst du das Backup wieder ein.
 

FizzyMUC

Benutzer
Mitglied seit
09. Feb 2023
Beiträge
173
Punkte für Reaktionen
15
Punkte
18
Du hast immer noch nicht den Beitrag gelesen!!! :mad:
Doch, ich habe den bzw. die Beiträge gelesen. Aber es macht mich so langsam wirklich mürbe.

Ich habe genau die Schritte befolgt. Den Dump wie oben beschrieben durchgeführt. Dann
  1. Postgres-Dump erstellen (check)
  2. alle Container anhalten (gestoppt und dann gelöscht)
  3. *.yml anpassen (auf v15 - check)
  4. Inhalt des Postgres-Ordners bis auf dem Backup-Ordner löschen (check)
  5. alle Container starten (habe hier das compose file neu ausgeführt, dann starten alle container, die paperless-db startet allerdings in Dauerschleife)
  6. Postgres-Dump einspielen (kann ich nicht einspielen, da er sagt der container müsse erst vollständig gestartet sein, der startet aber dauern neu)
Fehlermeldung die beim Neustart des Containers der Datenbank kommt:
Code:
initdb: error: directory "/var/lib/postgresql/data" exists but is not empty
Ist natürlich nicht leer, denn ich habe ja nur alles bis auf den backup-Ordner gelöscht! Und der ist eben auch noch in dem Verzeichnis. Also mache ich das Backup wohl doch in einen anderen Ordner?
 

EDvonSchleck

Gesperrt
Mitglied seit
06. Mrz 2018
Beiträge
4.703
Punkte für Reaktionen
1.119
Punkte
214
Du solltest natürlich erst den Postgres Container wiederherstellen. Ansonsten ist es klar das Paperless abstürzt, weil die Datenbank ja nicht verfügbar bzw. Fehlerhaft ist.
 

FizzyMUC

Benutzer
Mitglied seit
09. Feb 2023
Beiträge
173
Punkte für Reaktionen
15
Punkte
18
Du solltest natürlich erst den Postgres Container wiederherstellen. Ansonsten ist es klar das Paperless abstürzt, weil die Datenbank ja nicht verfügbar bzw. Fehlerhaft ist.
Da ich die alle in einem compose-file habe ist das nun nicht so ohne Weiteres möglich. Ich hatte daraufhin gedacht ich könnte ja den paperless-container und den postgres-container stoppen, das backup einspielen, und dann alle wieder starten.
Aber das Backup lässt sich ja in PostGRES nur einspielen wenn der Container gestartet ist. Und der startet eben nicht, weil das Verzeichnis nicht leer ist. Weil dort das Backup drin liegt. Irgendwie geht es im Kreis.
 

EDvonSchleck

Gesperrt
Mitglied seit
06. Mrz 2018
Beiträge
4.703
Punkte für Reaktionen
1.119
Punkte
214
Dann kopiere doch das Backup-Verzeichnies heraus, bis dieser gestartet ist. Danach kopierst du es zurück oder mountest es extern.
 

FizzyMUC

Benutzer
Mitglied seit
09. Feb 2023
Beiträge
173
Punkte für Reaktionen
15
Punkte
18
Oh man... Manchmal können die Dinge einfacher sein als man denkt :D

Aber: Es kommt der nächste Fehler:
Code:
2023-04-17T21:25:03.153705586Z    stdout    PostgreSQL Database directory appears to contain a database; Skipping initialization
2023-04-17T21:25:03.152868784Z    stdout   
2023-04-17T21:24:09.098875976Z    stderr    2023-04-17 21:24:09.098 UTC [1] DETAIL:  The data directory was initialized by PostgreSQL version 14, which is not compatible with this version 15.2 (Debian 15.2-1.pgdg110+1).
2023-04-17T21:24:09.098580927Z    stderr    2023-04-17 21:24:09.098 UTC [1] FATAL:  database files are incompatible with server

Das gesamte Verzeichnis war leer. Ich habe alles gelöscht. Und das backup-Verzeichnis dann rauskopiert. Und nun kommt wieder eine Fehlermeldung. Ich habs jetzt für heute satt.. Seit 8 Stunden ärgere ich mich nun rum. Morgen ist ein neuer Tag.
 
Zuletzt bearbeitet von einem Moderator:

FizzyMUC

Benutzer
Mitglied seit
09. Feb 2023
Beiträge
173
Punkte für Reaktionen
15
Punkte
18
So, nun ein letzter Versuch, nochmal alle Container gelöscht, db-Verzeichnis leergeräumt, neu deployed, Container starten, rück kopierend es dumps läuft durch, aber Fehler:
Code:
SET
SET
SET
ERROR: role "paperless" already exists
ALTER ROLE
You are now connected to database "template1" as user "paperless".
SET
SET
SET
SET
SET
set_config

Einloggen in Paperless nicht mehr möglich...
1681767357694.png
Ich gehe mich nun betrinken und morgen sehen wir weiter... Wobei ich das Gefühl habe, dass ich fast am Ziel bin...
 
  • Haha
Reaktionen: EDvonSchleck

FizzyMUC

Benutzer
Mitglied seit
09. Feb 2023
Beiträge
173
Punkte für Reaktionen
15
Punkte
18
Außer dem Lach-Emoji noch eine Idee? Es kann doch wirklich einfach nicht wahr sein..
 

EDvonSchleck

Gesperrt
Mitglied seit
06. Mrz 2018
Beiträge
4.703
Punkte für Reaktionen
1.119
Punkte
214
Warum so schlecht gelaunt. Mit den Rechten habe ich dir heut Mittag schon geschrieben und sollte recht behalten.

Das Zurückspielen machst du auch per Aufgabe?
Ansonsten kannst du auch einmal, pgAdmin4 benutzen.

Probier doch einfach einmal, die Datenbank bei postgres14 noch einmal einzuspielen. Funktioniert das reibungslos?
 

FizzyMUC

Benutzer
Mitglied seit
09. Feb 2023
Beiträge
173
Punkte für Reaktionen
15
Punkte
18
Teste ich morgen. Kind weint und will nicht alleine schlafen. Muss aus machen.
Und nicht falsch verstehen - mich macht es nur langsam einfach mürbe. Jedes Mal eine neue Fehlermeldung… dabei sollte es so einfach sein.
 

FizzyMUC

Benutzer
Mitglied seit
09. Feb 2023
Beiträge
173
Punkte für Reaktionen
15
Punkte
18

FizzyMUC

Benutzer
Mitglied seit
09. Feb 2023
Beiträge
173
Punkte für Reaktionen
15
Punkte
18

FizzyMUC

Benutzer
Mitglied seit
09. Feb 2023
Beiträge
173
Punkte für Reaktionen
15
Punkte
18
So, neuer Tag, neues Glück.
Also nochmal frisch an die Sache ran gehen. Es hat ja der Großteil geklappt, ich habe lediglich den Dump nicht in den PostGRES Container zurück spielen können. Zur Erinnerung:
Mein Backup habe ich mit folgendem Skript per Aufgabenplaner erstellt
Code:
cd /volume1/docker/paperlessngx/db/backup/
# mv pg_dumpall.dump.gz pg_dumpall-$(date +%d%m%Y-%H:%M).dump.gz
find -mtime +30 -delete
docker exec paperless-db bash -c "pg_dumpall -U paperless | gzip > /var/lib/postgresql/data/backup/pg_dumpall.dump.gz"
wobei paperless-db der Name des Containers ist, und paperless der Name der Datenbank, wie ich ihn im compose-file gesetzt habe. Ist das soweit korrekt? Das gezippte Backup File ist auch da, ich sehe es unter dem Namen pg_dumpall.dump.gz in meinem backup Ordner liegen.

Dann habe ich alle Container gelöscht und mein compose-file neu ausgeführt. Hierbei kam mir noch in den Sinn, dass ja bereits beim composen der Container der Datenbank-Container paperless-db mit einem Usernamen paperless angelegt wird:
Code:
db:
    container_name: paperless-db
    image: postgres:15
    # Nicht einfach up- oder downgraden, die Datenbank wird dann nicht mehr laden.
    networks:
      - internal
    restart: unless-stopped
    volumes:
      # Hier den richtigen Pfad eintragen
      - /volume1/docker/paperlessngx/db:/var/lib/postgresql/data
    #  - /volume2/paperless/db:/var/lib/postgresql/data
    environment:
      POSTGRES_DB: paperless
      POSTGRES_USER: paperless
      # Hier ein anderes Passwort verwenden
      POSTGRES_PASSWORD: xzdN19DTd3CxWOuXP6eSyfhB19HRAx
Hier sind als postgres_db und als postgres_user also "paperless" angegeben.

Beim Einspielen des Backups, wiederum per Aufgabenplaner über das Skript
Code:
cd /volume1/docker/paperlessngx/db/backup/
gunzip -c pg_dumpall.dump.gz > pg_dumpall.dump
docker exec paperless-db bash -c "psql -U paperless < /var/lib/postgresql/data/backup/pg_dumpall.dump"
rm pg_dumpall.dump
wird das backup ja brav wieder unzipped, und dann rüber gespielt, die Ordner-Angaben sollten auch passen. "postgresql/data/backup/" ist in meinem Docker-Folder der Ordner "docker/paperlessngx/db/backup". Er zieht ja auch das File und führt etwas aus, allerdings liest es sich, als ob einfach alles bereits vorhanden wäre, und er daher nichts einspielen mag.
Zwar terminiert die Aufgabe dann mit Zustand "0 (normal)", ich erhalte aber ein recht langes log an Fehlern per Email, dass ich hier nicht rein kopieren will, ich hänge es daher besser als .txt an. Essenz daraus ist, dass er bereits zu Beginn sagt
Code:
ERROR: role "paperless" already exists
ALTER ROLE
You are now connected to database "template1" as user "paperless".
Ich bin also gar nicht zur database "paperless" verbunden, sondern zu einer database "template1". Für den Rest, siehe angefügte txt.

Zudem sagt der Datenbank-Container im Log:
Code:
2023-04-18T07:32:57.647311813Z    stderr    initdb: hint: If you want to create a new database system, either remove or empty the directory "/var/lib/postgresql/data" or run initdb with an argument other than "/var/lib/postgresql/data".
2023-04-18T07:32:57.646053986Z    stderr    initdb: error: directory "/var/lib/postgresql/data" exists but is not empty
2023-04-18T07:32:57.647006006Z    stdout    Data page checksums are disabled.
Er meckert also wieder, dass das Verzeichnis nicht leer ist. In dem Verzeichnis ist genau ein Ordner "backup", indem wiederum der dump liegt. Kann ich den dump von einem anderen Ort einlesen? Müsste ich dann ein anderes volume mounten?

Ich habe daraufhin das Backup wieder aus dem Ordner raus, und habe dann nochmal den Container neu gestartet. Dann startet er sauber, flutet aber das Verzeichnis mit Dateien, weil er wohl die Datenbank initialisiert. Wenn ich dann wiederum im Aufgabenplaner die oben genannte Aufgabe ausführe (und natürlich den Ordner /backup/ inkl. dem Dump-File rein kopiert habe), terminiert es... KORREKT!

Ich starte nun also den database-container neu, laut log läuft er und ist "ready for connections".
Ich starte nun den paperless-container. "Apply database migrations"....
Ich gehe in den Browser... drückt mir die Daumen!

UND ICH BIN DRIN!!!!!

MUAHAHAHAHAHAHA.


Ich weiß nicht wirklich was nun anders war... Aber es hat geholfen es mal sehr sauber und kleinschrittig hinzuschreiben und dabei auch zu durchdenken "was mache ich hier eigentlich mit den ganzen Befehlen und Kommandos". Und nun läuft es. Easy peasy.
Vielleicht hilft es ja auch dem Ein oder Anderen in der Zukunft. Wie alle nehme ich mir jetzt natürlich vor, den Prozess nochmal ganz sauber zu dokumentieren mit Bilder und co., aber mal sehen ob das was wird :D

Danke erneut und viele Grüße!
 

Anhänge

  • log.txt
    18,2 KB · Aufrufe: 6
Zuletzt bearbeitet:


 

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