Paperless-ngx nach jedem Neustart des Serves "kaputt"


boernie77
Go to solution Solved by cz13,

Recommended Posts

Hallo, ich habe das Problem, dass nach jedem Serverneustart mein Paperless folgenden Fehler aufweist (s. Anhang). Dieser ist zu sehen, wenn ich das Dokument öffnen möchte. Die Dokumente sind quasi alle noch da, also Verschlagwortung, Metadaten, Inhalt, etc. Nur keine Bilder mehr der Dokumente... Über document_importer kann ich die letzte Sicherung wieder aufspielen und dann geht alles. Aber kennt jemand diesen Fehler und hat vielleicht eine Lösung für mich?

 

Wenn ich übrigens nur den Docker stoppe und neu starte, habe ich diesen Fehler nicht...

Bildschirmfoto 2023-12-31 um 10.51.23.png

Edited by boernie77
Link to comment
14 minutes ago, boernie77 said:

also ich habe einen Ordner /usr/src/paperless/media

weil du den (im Ram) erstellen lässt ... also ja, die Daten auf dem Server sollten auf einem persistent storage liegen ...

 

image.thumb.png.7f5d23f77c4935a79596687c464fb1b4.png

 

/usr/src/... ist bei dir nicht existent ... jedenfalls nicht persistent ... das schreibt in den RAM Speicher und ist nach einem Neustart immer weg ...

 

du hast Glück das dein consume Ordner persistent war und daher wieder alles neu eingelesen werden kann .. sonst wären die auch weg ;)

  • Like 2
Link to comment

Also, ich hab den Pfad auf /mnt/user/paperless-media geändert. Hat auch einen Neustart überlebt. Also vielen Dank schon einmal dafür... Kurze Rückfrage. Appdata sichern? Ich habe als 2. Speicherort das Array eingetragen. Ist es das, was du meintest? Oder sollte ich appdata noch extra sichern?

Link to comment
25 minutes ago, boernie77 said:

Appdata sichern?

Hier werden die persistenten Daten der Docker Container gespeichert. Z. B. Konfigurationen oder im Fall von Paperless die DB und Tags, etc

Für Appdata solltest du dir auf jeden Fall eine Backupstrategie überlegen wenn du unter Unraid Docker verwendest.

Edited by cz13
  • Like 2
Link to comment

Guten Morgen und ein gesundes neues Jahr!

 

Bei mir haben sich nun noch ein paar Fragen ergeben...

 

Appdata läuft bei mir auf meiner SSD. Mein Verständnis war bisher, dass der zweite Speicherort der Sicherung dient, aber appdata trotzdem weiter auf der SSD läuft (erster Speicherort) Und daher die HDD im Array trotzdem in den Spindown geht...

 

Meine Zweite Frage ist: appdate extern zu sicher zusammen mit dem Ordner paperless_media, in welchem meine Dokumente nun liegen, ist ja bereits eine Sicherung, oder? Wenn ich zusätzlich noch mein Skript mit document_exporter laufen lassen möchte, wie muss ich das nun abändern? 

Bisher lautete es "docker exec -it <docker-id> document_exporter /usr/src/paperless/export

Nun hab ich ja den Pfad geändert auf /mnt/user/paperless_media. Im Befehl den Pfad einfach anzupassen funktioniert aber nicht. Ich habe

"docker exec <docker id> document_exporter /mnt/user/paperless_backup/export" versucht...

 

Mein Verständnis war, dass ich mit docker exec in den Container gehe, um dort document_exporter auszuführen, da es den Befehl außerhalb nicht gibt. Und der Pfad am Ende gibt an, wo die Ausgabe gespeichert werden soll. Als Fehler bekomme ich jedoch

 

OCI runtime exec failed: exec failed: unable to start container process: exec: "document_exporter": executable file not found in $PATH: unknown

 

Ich muss quasi in den Container, um document_exporter auszuführen, aber die Daten dazu, liegen ja jetzt außerhalb, oder? Und ich vermute, die sieht document_exporter einfach nicht...

Link to comment
12 minutes ago, boernie77 said:

Appdata läuft bei mir auf meiner SSD. Mein Verständnis war bisher, dass der zweite Speicherort der Sicherung dient, aber appdata trotzdem weiter auf der SSD läuft (erster Speicherort) Und daher die HDD im Array trotzdem in den Spindown geht...

 

falsch, nochmals einlesen bitte ...

 

secondary storage == wohin die Daten verschoben werden wenn gewünscht.

 

13 minutes ago, boernie77 said:

Wenn ich zusätzlich noch mein Skript mit document_exporter laufen lassen möchte, wie muss ich das nun abändern? 

Bisher lautete es "docker exec -it <docker-id> document_exporter /usr/src/paperless/export

gar nicht, der Pfad ist ja aus "Docker Pont of view" wahrscheinlich richtig gewesen, du hattest das auf dem Host falsch mounted ...

 

auch hier einlesen zum Thema Docker Mounts ...

 

ich wiederhole ;)

23 hours ago, alturismo said:

Und, vielleicht ein paar Grundlagen zum Thema Docker, Volume mapping, ... einlesen ... für die Zukunft ;)

 

mal ein "stumpfer" Vergleich, auf Unraid liegt beispielsweise der Ordner (freigegeben)

 

/mnt/user/blablabla

 

wenn du jetzt mit deinem Windows Client per smb mountest, liegt das unter /Servername/blablabla aus der Windows Sicht ...

/mn7user/ ... existiert nicht an deinem Windows Client ...

 

sprich, wenn du die Pfade im Docker setzt, gibt es eine Host Sicht (Unraid), eine Docker Sicht (innerhalb des Dockers) usw usw ...

 

und mit docker exec ..... führst du innerhalb des Dockers aus, sprich, aus Docker Sicht denken ...

 

Ich wiederhole, lesen ... oder zumindest, schau Dir das Template doch mal etwas genauer an ...

 

du siehst das /mnt/user/appdata/paperless.... innerhalb des Dockers auch anders aussieht, alleine anhand davon kannst du schon einiges ableiten ...

  • Like 1
Link to comment
24 minutes ago, boernie77 said:

Mein Verständnis war bisher, dass der zweite Speicherort der Sicherung dient, aber appdata trotzdem weiter auf der SSD läuft (erster Speicherort)

Dann hast du das leider falsch verstanden. Es wird erst auf den Cache geschrieben (primary storage) und dann per mover auf die HDDs geschoben (secondary storage).

Will man etwas permanent auf der SSD haben kann man entweder:

1) keinen secondary storage angeben

2) unter mover Action "array->Cache" wählen

  • Like 1
Link to comment
1 hour ago, alturismo said:

/Servername/blablabla

 

Sorry, kleine Korrektur. Ich weiß, dass Du das kennst. Will nur vermeiden, dass das die Runde macht. So wäre es korrekt gem. der UNC (Uniform Naming Convention):

 

\\Servername\blablabla

 

https://de.wikipedia.org/wiki/Uniform_Naming_Convention

 

Hier sieht man wie die Notation angewendet werden könnte:

 

#
# Als Windows Admin auf der Konsole ausfuehren
#
C:
CD \
MKDIR "Privat"
MKLINK /D "C:\Privat\Bilder" "\\Tower\disk1\Bilder"

 

Edited by hawihoney
  • Like 1
Link to comment
Posted (edited)

Ok. Hab ich glaube ich verstanden... Mein Verständnis war auch, dass ich eigentlich nichts ändern müsste... War dann sehr verwundert, als es nicht mehr geklappt hat. Lese mich gerade auch wieder etwas mehr in diese Materie ein. Ist alles recht viel und ich bin immer stolz, wenn ich wieder was begriffen und gelernt habe und es funktioniert. Aber alles verstehe ich dann nicht oder nicht gleich, oder ich hab es verstanden, aber wenn sich irgendwo was ändert, erkenne ich die Zusammenhänge nicht mehr... So was alles im Eigenstudium ist schwer...

 

Was ich nun festgestellt habe, und vielleicht liegt daran auch der Fehler, warum es nicht mehr geklappt hat... Ich komme nicht mehr in meinen Ordner /usr/src/paperless/export. Da hab ich mich schon tausendmal hin navigiert und auch mit ls geöffnet. Jetzt kommt da folgende Fehlermeldung:

 

ls: cannot access 'export': Stale file handle

 

Aus der google-recherche werde ich nicht schlau... Was ist jetzt wieder los? Mein Plan wäre jetzt, den Server einfach mal neu zu starten. Weiß aber nicht ob das helfen würde und gerade kann ich ihn nicht neu starten, weil gerade ein großes Backup von der Nextcloud läuft...

Edited by boernie77
Link to comment
32 minutes ago, boernie77 said:

Ich komme nicht mehr in meinen Ordner /usr/src/paperless/export.

wo und warum willst du innerhalb des Dockers da hin ... ? den Pfad gibt es NUR innerhalb des Dockers ... nicht auf Host Side ...

 

was da "vorher" war (falsch) war im Ram erstellt weil du falsche mount points gesetzt hattest, zeig nochmals bitte deine aktuelle Konfiguration bevor du mehr kaputt wie gut machst ... das hat übrigens nichts mit Unraid zu tun, sondern ist Basic Docker, egal auf welchem System, Prinzip ist immer das Gleiche, es ändert sich in der Regel nur wie (Pfade) du die mounts zum Host setzt ...

 

Daher sag ich ja, schau Dir bitte die defaults an und leite davon ab ...

Link to comment
2 hours ago, hawihoney said:

Sorry, kleine Korrektur. Ich weiß, dass Du das kennst. Will nur vermeiden, dass das die Runde macht. So wäre es korrekt gem. der UNC (Uniform Naming Convention):

 

klar, wollte nur hier jetzt (extra) nicht mit 2 verschiedenen Schreibweise anfangen ;) hatte es sogar erst so stehen \\... aber dachte mir zur einfacheren Darstellung ... aber du hast Recht, bevor man noch davon was ableitet ...

Link to comment
Posted (edited)

 

Jetzt verstehe ich doch wieder nur Bahnhof, und ich dachte, ich hätte es verstanden. Ich habe mir nun auch einiges zum Thema durchgelesen... Der Pfad intern des Docker hat sich ja nicht geändert. Aus point of view des Dockers, oder? Und den Pfad, wo extern die Medien liegen, den sieht der Docker doch gar nicht. 

 

In den Ordner wollte ich rein, um zu schauen, ob meine Befehle durchgehen und ob was passiert. Du hast ja oben geschrieben, dass ich eigentlich nichts hätte ändern müssen... Ich dachte, document_exporter zieht nach wie vor in den internen Docker Ordner die Sachen hinein, holt es sich nun nur von wo anders... Also muss der Pfad so bleiben wie vorher. Aber mal davon abgesehen. Wenn ich. mich innerhalb des Docker bewege mit cd und öffnen mit ls, dann müsste doch das unabhängig davon klappen, was ich in Paperless eintrage... 

 

Edit: Ich sehe gerade, dass ich ja den export Ordner auch auf /mnt/user gelegt habe. Aber der ist ja intern des Dockers gar nicht sichtbar. ALs muss ich in den Docker rein mit docker exec, um document_exporter ausführen zu können, weil der Befehl außerhalb nicht exestiert, aber als Ziel muss ich einen Pfad außerhalb des Dockers angeben... aber wie, wenn er /mnt/user nicht kennt...

Bildschirmfoto 2024-01-01 um 15.34.09.png

Edited by boernie77
Link to comment
49 minutes ago, boernie77 said:

Edit: Ich sehe gerade, dass ich ja den export Ordner auch auf /mnt/user gelegt habe. Aber der ist ja intern des Dockers gar nicht sichtbar. ALs muss ich in den Docker rein mit docker exec, um document_exporter ausführen zu können,

das ist richtig, du führst einfach den Befehl aus, der Export landet dann

 

- aus Docker Sicht /usr/source/paperless/export

- aus Host Sicht /mnt/user/paperless-backup/export

 

sprich, du brauchst im Docker nicht mehr cd, ls, .. sondern schaust einfach auf Unraid unter /mnt/user/paperless-backup/export oder falls du den Share freigegeben hast halt unter dem Share paperless-backup

 

was willst du eigentlich mit dem export wenn ich fragen darf ? das ist ein Backup wenn du das System wechseln willst, oder ?

 

Deine Daten welche relevant sind liegen 1/ unter .../appdata/paperless-ngx < die Docker relevanten Settings und 2/ unter .../paperless-media, dann haben wir noch den /consume Bereich, da greift paperless Dokumente ab zum Import ... wenn du 1/ + 2/ sicherst, hat sich dein export erledigt ... aber egal, wirst deine Gründe haben und zum Lernen jetzt nicht einmal schlecht ...

 

Beispiel, erst point of view Host (Unraid), dann Point of view Docker (paperless)

 

root@AlsServerII:~# ls -la /mnt/user/Dokumente/documents/
total 20
drwxrwxrwx  5 1000 1000   56 Nov  1 16:03 ./
drwxrwxrwx  3 1000 1000   57 Dec 31 11:39 ../
drwxrwxrwx 25 1000 1000 4096 Dec 25 09:59 archive/
drwxrwxrwx 25 1000 1000 4096 Dec 25 09:59 originals/
drwxrwxrwx  2 1000 1000 8192 Dec 29 05:40 thumbnails/
root@AlsServerII:~# docker exec paperless-ngx ls -la /usr/src/paperless/media/documents
total 20
drwxrwxrwx  5 paperless paperless   56 Nov  1 16:03 .
drwxrwxrwx  3 paperless paperless   57 Dec 31 11:39 ..
drwxrwxrwx 25 paperless paperless 4096 Dec 25 09:59 archive
drwxrwxrwx 25 paperless paperless 4096 Dec 25 09:59 originals
drwxrwxrwx  2 paperless paperless 8192 Dec 29 05:40 thumbnails
root@AlsServerII:~#

 

export nutze ich nicht (da sinnfrei für mich), sonst hätte ich dir das Beispiel gepostet ...

  • Like 1
Link to comment

Also, ich habe heute wieder viel gelernt. Und denke ich auch wieder einiges verstanden...

 

Warum möchte ich document_exporter benutzen? Es gibt mir im Moment zusätzliche Sicherheit. Ich bin mit Unraid noch nicht ganz sicher, wie alles funktioniert. Document_exporter kenne ich schon und weiß, dass es funktioniert. Ich erzeuge mir damit eine .tgz Datei, welche ich extern sicher. Damit kann ich ein System wieder von Null an aufsetzten.

Ich habe aber heute gelernt, dass ich appdata sichern muss, und dass der 2. Speicherort im Array keine Sicherung ist. Und dass ich natürlich den Ordner "Paperless_Media" ebenfalls sichern muss. Wie ich das am Besten bewerkstellige, weiß ich noch nicht genau. Irgendwelche Vorschläge? Meine Idee ist es, diese extern über rsync zu sichern...

 

Warum kam es heute zu dieser Verwirrung bei mir? Ich hatte gedacht, das System verstanden zu haben und war mir sicher, dass ein Ändern des Pfades auf mein Script keine Auswirkungen hat. Umso überraschter war ich heute früh, dass es nicht geklappt hat. Dann habe ich das Rumprobieren mit den Pfaden begonnen, was natürlich quatsch war, wie ich nun weiß. Jetzt läuft wieder alles. Ich hatte 2 bzw eigentlich 3 Probleme.

 

1.Problem: ganz banal... ich hatte mich im Pfad verschrieben und Paperless mit 2 pp geschrieben...

2. Problem: durch die Änderung des Pfades bekam mein Docker eine neue ID, welches ich erst mit "docker ps -a" rausgefunden habe.

3. Problem: ich hatte auf dem internen Export- Ordner einen “stale file handle“ Fehler. Dieser war aber nach einem Dockerneustart weg.

 

Danke für diese hervorragende Beratung, Erklärungen und Hilfe!!! Echt ein Klasse Forum!!! 

  • Like 1
Link to comment
Quote

Wie ich das am Besten bewerkstellige, weiß ich noch nicht genau. Irgendwelche Vorschläge? Meine Idee ist es, diese extern über rsync zu sichern...

 

Ich nutze das rsync Script von mgutt hier, um meine Shares auf eine externe Festplatte zu sichern. Die Backup-Festplatte habe ich über das Unassigned Devices Plugin eingehängt. Das rsync Script führe ich über das Script Plugin aus. Für Paperless sichere ich das Paperless appdata Verzeichnis und ein dediziertes Share für Paperless auf dem der media/consume/ etc. Ordner liegt. 

 

Ich nutze Paperless mit einer SQLite Datenbank. Daher muss ich keine zusätzliche Datenbank sichern.

 

Ich nutze außerdem das appdata Backup/Restore Plugin, um meine appdata Verzeichnisse zusätzliche als tar Dateien in ein dediziertes backup Share auf dem Array zu sichern. Dieses Backup Share wird ebenfalls mit dem oben genannten rsync Skript auf die externe Festplatte gesichert. 

 

Ob du wie ich einzelne appdata Verzeichnisse direkt per rsync sicherst und zusätzlich redundant das appdata Backup/Restore Plugin nutzt musst du für dich entscheiden.

Edited by T0a
  • Like 1
Link to comment

@boernie77 

Stell dir Docker als eine Art magischen Schrank vor. Du öffnest die Tür und siehst deine vertrauten Gegenstände (in diesem Fall, deine Dateien und Anwendungen). Der Containerpfad sagt dir immer wo dein Schrank steht 

Jetzt kommt der magische Teil: Obwohl der Inhalt des Schranks physisch an einem anderen Ort auf der Welt sein könnte, siehst du immer noch deine vertrauten Gegenstände, wenn du die Schranktür öffnest. Das liegt daran, dass Docker wie ein Portal wirkt, das dich immer zu deinen Dateien führt, egal wo sie sich tatsächlich befinden.

Die Schranktür repräsentiert den Ausgang des Docker-Containers und der Pfad zu deinen Dateien ist die Wegbeschreibung zu dem, was du in deinem Schrank siehst. Einfach ausgedrückt, Docker ermöglicht es dir, auf deine Dateien zuzugreifen, als wären sie in dem Container selbst, was Sie aber nicht sind.

 

Ich nehme mal meine Pfade als Beispiele

 

" Container Path: /usr/src/paperless/data " 

Der Pfad innerhalb des Containers. Da wo data ist, befindet sich der Schrank mit der Tür.

 

"/mnt/user/appdata/paperless-ngx/data"

 Der Pfad zu data durch die geöffnete Portaltür wo du nun deine Daten sehen kannst

  • Like 1
Link to comment
Posted (edited)
13 hours ago, T0a said:

 

Ich nutze Paperless mit einer SQLite Datenbank. Daher muss ich keine zusätzliche Datenbank sichern.

I

Das waren viele gute Tipps! Besonders der mit der Datenbank. Daran hätte ich nicht gedacht. Ich nutze Redis. Da finde ich aber nichts in appdata. Und auch sonst nirgends. Muss man die extra sichern, oder sind die Daten dazu in Paperless mit drin, wenn ich diese sichere?

 

EDIT: Ich gehe jetzt mal davon aus, nachdem ich jetzt auch alles nochmal durchgelesen habe, und es dort öfter steht... wenn ich appdata und den media sowie den consume Ordner sichere, dann bin ich auf der sicheren Seite. Zusätzlich habe ich ja auch noch meinen document-exporter. Und ich baue morgen noch für meinen "work-cache" eine zweite sdd ein. Dann habe ich dort ein Raid1 und auch wieder etwas mehr Sicherheit...

Edited by boernie77
Link to comment
11 hours ago, boernie77 said:

Das waren viele gute Tipps! Besonders der mit der Datenbank. Daran hätte ich nicht gedacht. Ich nutze Redis. Da finde ich aber nichts in appdata. Und auch sonst nirgends. Muss man die extra sichern, oder sind die Daten dazu in Paperless mit drin, wenn ich diese sichere?


Redis wird von Paperless nur für das temporäre Verarbeiten von neuen Dokumenten verwendet und hält keine Nutzdaten.
 

Per default verwendet Paperless eine SQLite Datenbank. Man kann aber auch eine dedizierten Datenbank wie z.B PostgreSQL verwenden, die dann auch extra gesichert werden muss. 
 

Ich vermute, dass du Paperless mit einer dateibasierten SQLite Datenbank betreibst. Diese liegt dann im appdata Verzeichnis und ist auch darüber zu sichern. 
 

Ich empfehle dir auch mal die Paperless Dokumentation hinsichtlich des Betriebs und Aufbaus zu lesen - damit sollte vieles klarer werden. 
 

Langfristig kannst du dir auch mal zur 3-2-1 Backupstrategie Gedanken machen. Insbesondere, wenn du Dokumente digital hast, die du nicht verlieren darfst. 

Edited by T0a
  • Like 1
Link to comment
  • 1 month later...

Ich hattte das gleiche Problem wie @boernie77 und nun ein eigenes Share für Paperless angelegt, in dem "consume" und "media" als Ordner liegen. Nun überlebt Paperless bei mir ebenfalls einen Neustart👍

 

Für mein Verständnis müsste Paperless nun aber auch Dateien in den Ordnern "consume" und "media" anlegen. Wenn ich in die Index dieser Ordner schaue, wird aber "0 directories, 0 files" angezeigt. Müsste hier nicht etwas abgeleg werden?

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.