Paperless-ngx Paperless-ngx – DMS via Docker auf dem NAS

EDvonSchleck

Gesperrt
Mitglied seit
06. Mrz 2018
Beiträge
4.703
Punkte für Reaktionen
1.120
Punkte
214
Gut, denn funktioniert es ja praktisch schon einmal.
Normal musst du nur das Image austauschen. Wenn der Datenbankimport jetzt funktioniert, musst du nur den Container mit einem gleichnamigen austauschen.
 

dsmynas

Benutzer
Mitglied seit
11. Feb 2014
Beiträge
74
Punkte für Reaktionen
0
Punkte
12
Hallo,
ich habe das ganze auch nach dieser Anleitung gemacht.
Jedoch wenn ich die ip:8777 aufrufe kommt gar nichts. Die Ports in der Firewall habe ich freigeben.
Fehler werden auch keine angezeigt.
Als IUD habe ich einen User genommen der auf das Dockerverzeichnis vollen zugriff mit Lesen & Schreiben hat.
Was kann das sein ?
Mit ip:8777 meinst du sicherlich einen Aufruf wie http://192.168.0.5:8777, oder? Sicher, dass der/die Container auch laufen? Sicher, dass die Berechtigungen der Ordner stimmen? Ich hätte hier noch eine Anleitung, die auch ein entsprechendes Skript zur Erstellung der einzelnen Ordner, die in der docker-compose.yml, bzw. dann von den jeweiligen Containern gemounted werden, beinhaltet. Vielleicht liefert diese ja den hilfreichen Hinweis: https://www.holger.naether.consulting/paperless-ngx-per-docker-auf-synology-nas-installieren/
 

EDvonSchleck

Gesperrt
Mitglied seit
06. Mrz 2018
Beiträge
4.703
Punkte für Reaktionen
1.120
Punkte
214
Kleines, aber wichtiges Gotenberg-Update:

Vor ein paar Tagen erschien die aktuelle Version 7.7.2 von Gotenberg. Diese beinhaltet den Fix, damit sie wieder problemlos in Paperless funktioniert. Die lange genutzte Version 7.4 ist somit nicht mehr nötig. Somit kann das Image: gotenberg/gotenberg:latest auch automatisch mit Watchtower upgedatet werden.

1673556883290.png

1673556844505.png
Ich verwende alle Paperlessngx-Container in einem extra Bridge-Netzwerk. Somit müssen keine Ports eingerichtet werden. Wer Paperless im Synology-Bridge-Netzwerk laufen lässt, stellt bitte den externen Port auf 3000 ein oder ändert den Port in den Paperlessngx-Einstellungen: PAPERLESS_TIKA_GOTENBERG_ENDPOINT=http://localhost:3000 entsprechend ab.
 
  • Like
Reaktionen: Monacum

Monacum

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
03. Jan 2022
Beiträge
2.216
Punkte für Reaktionen
1.035
Punkte
224
@EDvonSchleck Hab jetzt endlich das Update von PostgreSQL 14 auf 15 erfolgreich hinbekommen. Habe trotz Deiner und @Adama guter Erklärungen irgendwie an der einen oder anderen Stelle auf dem Schlauch gestanden. In der Reihenfolge hat es jetzt geklappt (für alle Laien wie mich), unter Verwendung von .yml/.env und keiner separaten Datenbank:
  1. Dump der Datenbank gemäß EDvonSchleck durchführen
  2. Export aller pdfs gemäß Anleitung durchführen
  3. Alle drei Container stoppen
  4. .yml anpassen auf postgres:15 und speichern
  5. Container per docker-compose up -d starten
  6. Dump in die Datenbank einspielen (PostgreSQL muss einmal mit komplett leerem gemappten Ordner starten, sonst gibt es eine Fehlermeldung, danach den Dump-Folder kopieren)
  7. Per Anleitung von Paperless-ngx die pdfs wieder importieren.
Mag für alle „Cracks“ offensichtlich sein, war es für mich leider nicht… Trotzdem nochmal danke für die Unterstützung hier!
 

EDvonSchleck

Gesperrt
Mitglied seit
06. Mrz 2018
Beiträge
4.703
Punkte für Reaktionen
1.120
Punkte
214
Du musst mit den Pdfs nicht machen! Somit kannst du dir Punkt 2 und 7 sparen. Lediglich der Postgres-Ordner muss leer sein, damit die Datenbank importiert werden kann. Ansonsten stürzt der Container ab.

Es würde reichen:
  1. Postgres-Dump erstellen
  2. alle Container anhalten
  3. *.yml anpassen
  4. Inhalt des Postgres-Ordners bis auf dem Backup-Ordner löschen
  5. alle Container starten
  6. Postgres-Dump einspielen
Eventuell möchtest du es noch einmal testen.

Da ich mein Container separat aufgesetzt habe, kann ich natürlich in jedem einzelnen arbeiten, ersetzen oder ändern ohne die anderen zu beenden oder Einstellungen vorzunehmen.
 

EDvonSchleck

Gesperrt
Mitglied seit
06. Mrz 2018
Beiträge
4.703
Punkte für Reaktionen
1.120
Punkte
214
Bis auf den Backup-Ordner! Diese sollte im Verzeichnis liegen und wird ja zum Wiedereinspielen benötigt. Alternativ kannst du den Backup-Ordner mit einem weiteren Mount noch woanders hinlegen. Dann kann alles in /pgdata gelöscht werden. Wie du magst,

So ein Mount könnte in etwa so aussehen:
Code:
 db:
    image: docker.io/library/postgres:15
    restart: unless-stopped
    volumes:
      - /volume1/docker/postgres/data:/var/lib/postgresql/data
      - /volume1/docker/postgres/dump:/var/lib/postgresql/data/backup
    environment:
      POSTGRES_DB: paperless
      POSTGRES_USER: paperless
      POSTGRES_PASSWORD: paperless

Dann liegt das Backup außerhalb von /data. Pfade sind bitte entsprechend anzupassen.
Ich würde es vorher einmal testen, damit du für das nächste Mal vorbereitet bist. Aktuell hast du ja alle Files als Beckup ;).
 

Monacum

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
03. Jan 2022
Beiträge
2.216
Punkte für Reaktionen
1.035
Punkte
224
Das ist interessant, als ich eben den PostgreSQL-Container neu gestartet habe, hat er sich beschwert, weil der Ordner komplett leer sein müsse laut Protokoll. Deswegen habe ich erst mit einem leeren Ordner angefangen, die Datenbank gestartet und dann den Back-up Ordner reinkopiert und den Dump ein gelesen. Aber sei es drum, es funktioniert bei mir ja.

Den Ordner mit dem Dump noch mal extra zum mappen, finde ich gut, das werde ich mir mal anschauen. Backups habe ich tatsächlich genug. Ist aber auch ein großer Vorteil gewesen, wenn meine Experimente nicht zu einem positiven Ende gefunden haben, konnte ich einfach den kompletten Paperless-Ordner, so wie er davor funktioniert hat, wieder einspielen, habe die Container neu gestartet und es lief wieder.
 

EDvonSchleck

Gesperrt
Mitglied seit
06. Mrz 2018
Beiträge
4.703
Punkte für Reaktionen
1.120
Punkte
214
Du kannst natürlich auch das Dump-Script über den Aufgabenplaner in Intervallen laufen lassen und das Datum beim Erstellen gleich mit automatisch mit angeben und Angeben nach eine bestimmte Anzahl auch automatisch löschen lassen. Somit musst du dich um nichts kümmern und kannst es auch mit Hyperbackup oder USBCopy weg sichern.
 

Monacum

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
03. Jan 2022
Beiträge
2.216
Punkte für Reaktionen
1.035
Punkte
224
Hast du für die automatische Löschung ein Beispiel für mich?
 
Zuletzt bearbeitet:

EDvonSchleck

Gesperrt
Mitglied seit
06. Mrz 2018
Beiträge
4.703
Punkte für Reaktionen
1.120
Punkte
214
Code:
cd /volume1/docker/postgres/data/backup/
mv pg_dumpall.dump pg_dumpall-$(date +%d%m%Y-%H:%M).dump
find -mtime +30 -delete
docker exec postgres bash -c "pg_dumpall -U postgres | gzip > /var/lib/postgresql/data/backup/pg_dumpall.dump"

Zur Erklärung:
  1. Befehl wechselt in das lokale Verzeichnis für die Befehle 2 & 3
  2. Befehl benennt pg_dumpall.dump nach pg_dumpall.dump+Datum um
  3. Befehl sucht nach Dateien, die älter aus 30 Tage sind und löscht diese
  4. Befehl löst das Backup aus und speichert die neue pg_dumpall.dump
Ich habe mich bewusst für das Umbenennen des Dumps entschieden, damit ich immer eine aktuelle pg_dumpall.dump habe und ich den Befehl beim Wiederherstellen ohne manuelle Eingabe vom Datum absenden kann. Den Befehl oder den Dateinamen muss ich somit nur anpassen, wenn ich ein älteres Backup (2 Tage +) einspielen will. Alle Zeilen kannst du direkt in eine Aufgabe einfügen und ausführen.

1673626043120.png

Alternativ kannst du auch das Backup mit Datum anlegen:
Code:
docker exec postgres bash -c "pg_dumpall -U postgres | gzip > /var/lib/postgresql/data/backup/pg_dumpall-$(date +%d%m%Y-%H:%M).dump"

Wenn du ein tägliches Backup mit Hyperbackup machst, kannst du die pg_dumpall.dump direkt belassen und sie einfach überschreiben. Dann hast im Backup immer das tagesaktuelle Backup, sofern du das Backup vor der Hyperbackupaufgabe auslöst.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Monacum

Monacum

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
03. Jan 2022
Beiträge
2.216
Punkte für Reaktionen
1.035
Punkte
224
So eingestellt! Danke Dir.
 

EDvonSchleck

Gesperrt
Mitglied seit
06. Mrz 2018
Beiträge
4.703
Punkte für Reaktionen
1.120
Punkte
214
Beachte aber bitte, dass die oben gezippte Backup-Version vor dem Einspielen anpackt werden muss!

Unkomprimiert sieht das so aus:
Code:
cd /volume1/docker/postgres/data/backup/
mv pg_dumpall.dump pg_dumpall-$(date +%d%m%Y-%H:%M).dump
find -mtime +30 -delete
docker exec postgres bash -c "pg_dumpall -U postgres > /var/lib/postgresql/data/backup/pg_dumpall.dump"

Code:
docker exec postgres bash -c "pg_dumpall -U postgres > /var/lib/postgresql/data/backup/pg_dumpall-$(date +%d%m%Y-%H:%M).dump"

Wiederhergestellt wird das ganze mit:
Code:
docker exec postgres bash -c "psql -U postgres < /var/lib/postgresql/data/backup/pg_dumpall.dump"
 

Monacum

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
03. Jan 2022
Beiträge
2.216
Punkte für Reaktionen
1.035
Punkte
224
Ja alles gut, habe den gzip-Teil weggelassen. Ich brauche die Backups auch nicht über 30 Tage in dem Ordner 👌
 
  • Like
Reaktionen: EDvonSchleck

Monacum

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
03. Jan 2022
Beiträge
2.216
Punkte für Reaktionen
1.035
Punkte
224
@EDvonSchleck Ich bin mir sicher, dass du mir das schon mal irgendwo geschrieben hast, aber hast du zufällig nochmal den Befehl, um den komprimierten Dump wieder einzuspielen und ihn währenddessen zu entpacken? Habe mal die Dateigrößen verglichen und mich jetzt dazu entschieden, das ganze doch lieber gezippt abzuspeichern, weil es fast dreiviertel weniger Speicherplatz benötigt.
 

Franki31H

Benutzer
Mitglied seit
14. Jan 2023
Beiträge
10
Punkte für Reaktionen
1
Punkte
3
Screenshot 2023-01-14 122604.png

Hallo zusammen,

ich habe jetzt auch Paperless-ngx mit Office Unterstützung auf meiner DS720+ installiert.

Zunächst habe ich Portainer nach der "Marius" Anleitung installiert. Anschließend - auf Grundlage der Marius Anleitung - Paperless-ngx installiert. Beim ersten Mal klappte die Office Unterstützung nicht.... Ich musste den Port 3000 auf 3044 ändern... Dann lief es...

Habe anschließend Docker nochmal komplett deinstalliert, die Verzeichnisse gelöscht und anschließend alles neu aufgesetzt.

Jetzt funktioniert es auch mit 3000....

Ich habe allerdings gesehen, dass - wie im Bild zu erkennen ist - die Installation in Docker in ein gesondertes "Paperless" Netzwerk gelegt wurde. Meines Erachtens war das bisher nicht der Fall....

Ist das so richtig? Macht das so Sinn oder muss / sollte ich etwas ändern?

Unter Bridge laufen Portainer und Watchtower.

Postgress habe ich auf Version 15 begrenzt, die weiteren Container ohne Einschränkung? Sinnvoll oder sollte ich noch weitere Einschränkungen machen?

Was hat es eigentlich mit dem Codeteil "version: "3.6"" auf sich? Meistens sehe ich nur version 3.4?

Besten Dank!!!!
 

Anhänge

  • Paperless (2).txt
    1,8 KB · Aufrufe: 18

Monacum

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
03. Jan 2022
Beiträge
2.216
Punkte für Reaktionen
1.035
Punkte
224
Ich habe allerdings gesehen, dass - wie im Bild zu erkennen ist - die Installation in Docker in ein gesondertes "Paperless" Netzwerk gelegt wurde. Meines Erachtens war das bisher nicht der Fall....

Ist das so richtig? Macht das so Sinn oder muss / sollte ich etwas ändern?
Das ist okay so, dann können die Container ohne weitere zusätzliche Einstellungen miteinander kommunizieren. Ist bei mir auch so gesetzt und wenn ich mich recht erinnere auch bei @EDvonSchleck
Postgress habe ich auf Version 15 begrenzt, die weiteren Container ohne Einschränkung? Sinnvoll oder sollte ich noch weitere Einschränkungen machen?
Das macht insofern Sinn, als dass durch Updates an PostgreSQL keine Inkonsistenzen oder Inkompatibilitäten auftreten. Wobei Updates innerhalb der Version 15 trotzdem durchgeführt werden, das sollte aber in der Regel kein Problem sein. Weitere Einschränkungen habe ich bei mir nicht gesetzt, sowohl Paperless-ngx als auch der Broker Redis laufen bei mir unter latest. Für Updates nutze ich wie Du Watchtower.
Was hat es eigentlich mit dem Codeteil "version: "3.6"" auf sich? Meistens sehe ich nur version 3.4?
Das ist die Version, die die Compose Files («docker-compose») verwenden, also hier die paperless.yml-Datei. Je nach Version sind weitere Parameter möglich, das muss aber dann natürlich auch sinnigerweise in dem einzelnen Container umgesetzt werden können. Sprich, du kannst die Version nach oben hin anpassen, praktische Auswirkungen hat es aber nach meiner Erfahrung nicht, wenn du sonst nichts weiter an der Datei änderst. Aktuellste Version ist derzeit 3.8. Die Compose Files, die auf der Internetseite veröffentlicht sind, arbeiten mit der Version 3.4, aber 3.6 läuft auch bei mir ohne Probleme.
 

EDvonSchleck

Gesperrt
Mitglied seit
06. Mrz 2018
Beiträge
4.703
Punkte für Reaktionen
1.120
Punkte
214
@Monacum, du musst die Datei manuell entpacken, mit einem Packer deiner Wahl. Alternativ kannst du das File pg_dumpall.dump in pg_dumpall.dump.gz oder pg_dumpall.dump.zip umbenennen. Jetzt kannst du die Files schon einmal direkt in der Filterstation entpacken. Es geht aber auch einfacher:

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

Import PostgreSQL komprimiert
Code:
cd /volume1/docker/postgres/data/backup/
gunzip -c pg_dumpall.dump.gz > pg_dumpall.dump
docker exec postgres bash -c "psql -U postgres < /var/lib/postgresql/data/backup/pg_dumpall.dump"
rm pg_dumpall.dump

Der Pfad: /volume1/docker/Container-Mount/data/backup/ und der Containername: docker exec Container-Name bash ist natürlich anzupassen, der Rest kann so bleiben.

@Franki31H, alles richtig, die gemappten Ports für Gotenberg und Tika können komplett entfernt werden, solange sich die Container in einem separaten Bridge-Netzwerk befinden (nicht Synology Bridge). Um die Container aktuell zu haben, installierst du dir am besten Watchtower.

Heute Morgen ist Gotenberg 7.8.0 eingeflogen, welches problemlos funktioniert.
 
  • Like
Reaktionen: Monacum

Franki31H

Benutzer
Mitglied seit
14. Jan 2023
Beiträge
10
Punkte für Reaktionen
1
Punkte
3
Danke!

soweit habe ich alles verstanden…

könnt ihr mir noch erklären, was dazu führte, dass die Paperless Installation im eigenen Bridge Netz erfolgte? Eingestellt habe ich nichts, meine damalige Installation lief meines Erachtens nicht in diesem geschlossenen Bridge Netzwerk… Portainer Einstellungen Ursache?
 

EDvonSchleck

Gesperrt
Mitglied seit
06. Mrz 2018
Beiträge
4.703
Punkte für Reaktionen
1.120
Punkte
214
Schon möglich, ich nutze Portainer nicht (mehr). Die Installation einem eigenen Netzwerk ist anzuraten, damit die Container besser kommunizieren können über den Namen. Eine Verbindung über die Ports und Bridge ist nicht optimal. Auch eine IP ist nicht ratsam, da diese beim Update durch eine andere ersetzt werden kann.
 


 

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