Update von Paperless-NGX

  • Hi zusammen,

    ich nutze Paperless in Version 2.17.1 in einem Container und bin auf diesem Gebiet noch nicht besonders erfahren. Daher würde mich interessieren, wie ich ein Update auf Version 2.20.0 ohne Datenverlust durchführen kann.

    Portainer ist ebenfalls vorhanden.

    Vielen Dank für eure Hilfe und eure Erfahrungen!

    Viele Grüße

  • Wenn du alles richtig eingerichtet hast (=alles, was relevant ist liegt außerhalb vom Container), dann einfach das Tag ändern auf die Version, die du willst und in Portainer deploy stack, oder wie das heißt, klicken. Wenn dies nicht der Fall ist, dann ist alles weg......

    PostgreSQL (falls es verwendet wird) kann nicht so leicht geupdated werden. Dazu findest du aber auch was im Forum.

  • Genau wie @GreenHorn86 schreibt, kannst du einfach die Container updaten, sofern du deine Daten auf deine Volumes ausgelagert hast.

    Allerdings noch ein kleiner Zusatz: Wenn du den Stack updatest, solltest du die Option "Re-pull image and redeploy" aktivieren. Damit weist du Portainer an, das Image neu herunterzuladen. Dabei solltest du aber darauf achten, dass in deiner Stack-Konfiguration das Image für Paperless-ngx auf "latest" steht. Vor allem die Pakete für PostgreSQL/MariaDB und Redis sollten aber eine fest eingetragene Version haben, damit diese Pakete nicht auch im Hintergrund aktualisiert werden.

    EDIT: Ich hab das ganze gestern Abend auch gemacht und auf 2.20 aktualisiert. Innerhalb von ein, zwei Minuten war alles durch (je nachdem, wie schnell deine Internetleitung ist).

    DXP4800 PLUS | 2x WD RED 12TB | 2x Lexar NM790 1TB | 64GB Crucial CT2K32G48C40S5 4800 MHz (2x 32 GB) | Eaton 3S 550

  • Wird aber seit ca 2 Jahren nicht mehr weiterentwickelt. Funktioniert auch nicht mehr mit der neusten Docker API. Da musst du dir einen Fork suchen, der noch entwickelt wird. Z.B nickfedor/watchtower

  • Die 2 Jahre alte Version funktioniert (noch), zumindest bei mir auf der DXP2800. Ich habe aber durch dieses Forum auch umgestellt auf das Projekt von nickfedor. Interessanterweise sind die Contributor auf github sehr ähnlich zu der 2 Jahre alten Version.

  • Weil das ein Fork ist. Da wird alles übernommen. Dann hat UGreen nicht die neuste Docker Versionen. Mit 29 wurde die alte API abgeschaltet und nur die neue funktioniert

  • (=alles, was relevant ist liegt außerhalb vom Container)

    Hallo GreenHorn86,

    ich werde gerade etwas unruhig und habe eine Nachfrage zu deinem Post. ?(

    Ich nutze auch Paperless über Ugreen Docker und habe alles zu Paperless in einem Ordner untergebracht. Bei einem Update mache ich vorher einen Dump der Datenbank und sicher den dann auf ein anderes Volumen und dann nutze ich noch den Paperless Exporter und sichere mir den Rest ebenfalls auf ein anderes Volumen. Dann fahre ich die Container runter und lösche die Ordnerinhalte. Im Anschluss ändere ich dann in meiner Docker Compose Datei die Dateiversion von Paperless auf die aktuelle Version (Die Datenbank lasse ich auf 18 stehen). Dann klicke ich auf neu bereitstellen und beende nach Sichtung der Log-Datei den Container und kopiere vom Exporter erstellten Dateien zurück in den Ordner Export und ziehe mir dann über den Paperless Importer meine Sicherung wieder rein.

    Mache ich da was falsch? :/ - ja, bisher sichere ich noch manuell, da ich einer Script-Lösung noch nicht so recht vertraue (fliegt mir da bei einem UGOS-Update ggf. was um die Ohren?) und darauf hoffe, dass nun endlich der Aufgabenplaner für die Ugreen kommt. Meintest Du mit "alles was relevant ist, liegt außerhalb vom Container", dass eine Datensicherung entweder auf dem gleichen, aber nicht im Docker-Ordner, oder einem anderen Volumen vorhanden sein sollte?

    Beste Grüße aus Hamburg,

    Stefan

    Fritzbox 6660 - Cabel | DXP 4800 Plus | Speicher 1 x Samsung 8 GB & 32 GB Kingston KVR56S46BD8-32 | Raid 1- Vol1; 2 x Kingston SNV3S 2TB | Raid 1- Vol 2; 2 x 4 TB 870 EVO 4TB (2,5")

  • Außerhalb vom Container heißt, dass man Volumes gemappt hat. Wenn diese fehlen, dann liegen diese Daten nur im Container.

    Wenn du die Container löscht und neuerstellst und dann alles direkt da ist, dann musst du die Daten auch nicht mehr importieren. Wenn du ein Import machen musst, dann ist dein Container nicht richtig eingerichtet.

  • Hm,

    also mit Datenimport meinte ich, dass mein Mediaordner und die Paperless UI-Einstellungen dann ja über den Paperless Importer zurückgespielt werden.

    Und natürlich habe ich nach einem Klick auf "neu bereitstellen" ein taufrisches Paperless, dann allerdings ohne meine Dateien und ohne meine UI-Einstellungen.

    In meiner Ugreen-Konfiguration laufen alle Programme (auch Docker) über zwei 2TB NVME´s im Raid 1 im Vol. 1 (Komplettsicherung über Duplikati, auf einer externen HDD. Das Vol2 3x 4 TB SSD im Raid 5 ist bei mir nur reine Dateiablage für alles, was nicht in Paperless untergebracht ist.

    Beste Grüße, Stefan

    Fritzbox 6660 - Cabel | DXP 4800 Plus | Speicher 1 x Samsung 8 GB & 32 GB Kingston KVR56S46BD8-32 | Raid 1- Vol1; 2 x Kingston SNV3S 2TB | Raid 1- Vol 2; 2 x 4 TB 870 EVO 4TB (2,5")

  • also mit Datenimport meinte ich, dass mein Mediaordner und die Paperless UI-Einstellungen dann ja über den Paperless Importer zurückgespielt werden.

    Ja das hab ich auch so verstanden.

    Und natürlich habe ich nach einem Klick auf "neu bereitstellen" ein taufrisches Paperless, dann allerdings ohne meine Dateien und ohne meine UI-Einstellungen.

    Nein, das ist eben nicht natürlich. Dann ist dein paperless falsch konfiguriert. Ich kann bei mir alle Container löschen und neu erstellen und es ist alles wie vorher. Genau das ist der Sinn von Docker. Container sind zum wegwerfen. Alles was relevant ist, wird gemappt und ist somit persistent und wird nicht beim Container löschen mit gelöscht.

  • Und natürlich habe ich nach einem Klick auf "neu bereitstellen" ein taufrisches Paperless, dann allerdings ohne meine Dateien und ohne meine UI-Einstellungen.

    So natürlich ist das nicht, wie @GreenHorn86 ja bereits angedeutet hat. Dafür gibt es die Konfiguration für die Volumes in der Bereitstellung eines Images. Damit kannst du eben Daten persistent auf deinen NVME- (oder auch HDD-) Laufwerken lagern, ohne dass diese bei einem Refresh des darunterliegenden Docker-Images verloren gehen.

    Was hast du denn in deiner YAML-Datei im Bereich "volumes:" der jeweiligen Container konfiguriert? Hier solltest du nach Möglichkeit auf einen Unterordner von /volume1 oder /volume2 verweisen.


    EDIT: War zu langsam ;(

    DXP4800 PLUS | 2x WD RED 12TB | 2x Lexar NM790 1TB | 64GB Crucial CT2K32G48C40S5 4800 MHz (2x 32 GB) | Eaton 3S 550

  • Ach das hab ich total überlesen...... Ja dann macht mein Kommentar nicht mehr so viel Sinn :D

    Danke ds106 fürs nochmal hervorheben! :)

  • Was hast du denn in deiner YAML-Datei im Bereich "volumes:" der jeweiligen Container konfiguriert? Hier solltest du nach Möglichkeit auf einen Unterordner von /volume1 oder /volume2 verweisen.

    Na da habe ich ja wieder was angerichtet :D

    Also in meiner Docker Compose Datei sieht es unter Volumes so aus > siehe Bild in Anlage

    Das ist der Fehler, die Ordner einfach so lassen und nur den Container neu bereitstellen.

    Das hatte ich eine ganze Zeit lang so praktiziert, nur dann hatte ich ein Crash in der Datenbank und dann bin ich umgeschwenkt.

    Ich fasse noch mal für mich zusammen:

    Ich fahre alle Container von Paperless runter, mache meine Backups > ändere in der Docker Compos-Datei die Paperless-Version > stelle neu bereit > und fertig. Wenn es auf den Poller läuft, dann die Lock-Dateien sichten und den Fehlerabstellprozess einleiten > Backup einspielen und dann nach der Fehlerbehebung neu bereitstellen.

    Nein, das ist eben nicht natürlich. Dann ist dein paperless falsch konfiguriert. Ich kann bei mir alle Container löschen und neu erstellen und es ist alles wie vorher. Genau das ist der Sinn von Docker. Container sind zum wegwerfen. Alles was relevant ist, wird gemappt und ist somit persistent und wird nicht beim Container löschen mit gelöscht.

    Dann müsste ich ja nur die Paperless-Ordner unter dem Vol. 1 in einem separaten Freigegebenen Ordner im Verzeichnis "Paperless" unterbringen und die Pfade in der Docker Compose Datei anpassen.

    Ich glaube, dass ich das nicht gemacht habe, weil es hieß (mir fehlt gerade die Quelle dazu, grrr) dass es für den sicheren Betrieb von Paperless besser wäre, wenn alles im Docker-Container läuft. Nun denn, ich kaue da noch mal drauf herum ;)

  • Das hatte ich eine ganze Zeit lang so praktiziert, nur dann hatte ich ein Crash in der Datenbank und dann bin ich umgeschwenkt

    Bei der DB darfst du das nicht machen. PostgreSQL kann so nicht geupdated werden.

    Ich fahre alle Container von Paperless runter, mache meine Backups > ändere in der Docker Compos-Datei die Paperless-Version > stelle neu bereit > und fertig. Wenn es auf den Poller läuft, dann die Lock-Dateien sichten und den Fehlerabstellprozess einleiten > Backup einspielen und dann nach der Fehlerbehebung neu bereitstellen.

    Ja genau...

  • Also in meiner Docker Compose Datei sieht es unter Volumes so aus > siehe Bild in Anlage

    Das sieht doch super aus. Damit sagst du den Containtern, dass er die Pfade aus dem Container (rechts vom Doppelpunkt) auf die persistenten Pfade auf deiner NAS (links vom Doppelpunkt) mappen soll. Damit sollten deine Inhalte auch beim Löschen der Container erhalten bleiben.

    Ich fasse noch mal für mich zusammen:

    Ich fahre alle Container von Paperless runter, mache meine Backups > ändere in der Docker Compos-Datei die Paperless-Version > stelle neu bereit > und fertig. Wenn es auf den Poller läuft, dann die Lock-Dateien sichten und den Fehlerabstellprozess einleiten > Backup einspielen und dann nach der Fehlerbehebung neu bereitstellen.

    Im Ideal-Fall musst du in deiner Compose-Datei nichts ändern, weil da als Image-Quelle bei Paperless "latest" steht. Da jedoch nicht bei jedem Container-Neustart automatisch das aktuell zur Verfügung gestellte latest-Image aus dem Hub geladen wird, bleibt dein lokales System natürlich erstmal auf der aktuellen Version. Wenn du jetzt aber ein Re-Deploy deines Stacks mit automatischem Re-Pull des latest-Images anstößt, dann sollte er die neueste Paperless-Version automatisch ziehen und den Container mit dieser Version starten.

    DXP4800 PLUS | 2x WD RED 12TB | 2x Lexar NM790 1TB | 64GB Crucial CT2K32G48C40S5 4800 MHz (2x 32 GB) | Eaton 3S 550

  • Puh und ich dachte schon, dass ich völlig in die falsche Richtung gelaufen bin :D

    @GreenHorn86: Dieses Wissen habe ich mir leider ist im Nachgang in diesem Forum erarbeitet. Ich hatte dann aufgrund der Komplexität einen Ausflug zur DB-Maria gemacht, habe das dann aber auch wieder verworfen. - War irgendwie wie Pest gegen Cholera tauschen :D

    rhazz: Ich habe nur die Paperless-Version (manchmal steht in der Updatebeschreibung was drin, was vorher angepasst werden muss. z.B. die TIKA Verlinkung), Redis und die Postgres-DB mit einem festen Versionsstand belegt, den Rest nicht.

    Aber auch hier lass ich mich gern noch belehren. :D

    Und nun wollen wir noch mal etwas Stimmung in diesen Tread bringen.

    Was haltet ihr denn von diesem Skript?

    Beste Grüße, Stefan

    Fritzbox 6660 - Cabel | DXP 4800 Plus | Speicher 1 x Samsung 8 GB & 32 GB Kingston KVR56S46BD8-32 | Raid 1- Vol1; 2 x Kingston SNV3S 2TB | Raid 1- Vol 2; 2 x 4 TB 870 EVO 4TB (2,5")

  • rhazz: Ich habe nur die Paperless-Version (manchmal steht in der Updatebeschreibung was drin, was vorher angepasst werden muss. z.B. die TIKA Verlinkung), Redis und die Postgres-DB mit einem festen Versionsstand belegt, den Rest nicht.

    So habe ich das bei mir auch und so hat gestern das Update durch ein simples Re-Deployment des Stacks wunderbar funktioniert.

    Was haltet ihr denn von diesem Skript?

    Ich hab's mal kurz überflogen, aber kann dir nicht mit Gewissheit sagen, ob das gut läuft oder nicht. Das musst du testen. Leider bin ich da mit dem Thema Backup&Restore von Paperless auch noch ein wenig auf Kriegsfuß :S

    DXP4800 PLUS | 2x WD RED 12TB | 2x Lexar NM790 1TB | 64GB Crucial CT2K32G48C40S5 4800 MHz (2x 32 GB) | Eaton 3S 550

Participate now!

Join our community with over 10,000 members!

Register yourself now for free to get full access to all content, graphics, downloads and other exclusive features!