Paperless-ngx Paperless-ngx Datensicherung

vmoench

Benutzer
Mitglied seit
03. Apr 2016
Beiträge
4
Punkte für Reaktionen
0
Punkte
1
Danke dir für dein Skript.

Da du auch "nur" den document_exporter für die Dateien verwendest, befinden sich bei dir im Ziel u.a. die Thumbnails?

Meins sieht so aus:

Bash:
#!/bin/bash
 
TODAY=$(date '+%Y-%m-%d')
 
cd /volume1/paperless/export
docker exec paperless document_exporter ../export -c -nt -na -z --delete --no-progress-bar
 
if [[ -f /volume1/paperless/export/export-$TODAY.zip ]]
then
  cp -ar /volume1/paperless/export/export-$TODAY.zip /volume1/Backup/
  rm     /volume1/paperless/export/export-$TODAY.zip
  find   /volume1/Backup -type f -mtime +5 -delete
fi
 

Monacum

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
03. Jan 2022
Beiträge
2.200
Punkte für Reaktionen
1.024
Punkte
224
Ich habe es gerne so wie vom Entwickler empfohlen. Und Paperless hat sich mit dem document_exporter sicher was gedacht.
Ja, die Entwickler von Docker haben sich ja auch etwas mit dem Mapping von Ordnern gedacht 🤓

Bei mir befinden sich übrigens im Export grundsätzlich Originale, Archive und die Thumbnails. Welche Konfiguration verwendest du denn?
 
  • Like
Reaktionen: vmoench

vmoench

Benutzer
Mitglied seit
03. Apr 2016
Beiträge
4
Punkte für Reaktionen
0
Punkte
1
Die Optionen -nt und -na bedeuten no thumbnail und no archive. Nimm die mal raus, dann müssten die Dateien auch erzeugt werden.

So ein wenig blamieren ist ja auch mal was Feines. :)

Nein im Ernst, ich habe beim Umzug auf mein neues NAS an der Konsole exportiert, da kannte ich diese Parameter gar nicht.

Aber sei's drum, ihr habt mir prima geholfen. Weiß ich nun Bescheid. Danke.
 

OSAfids

Benutzer
Mitglied seit
25. Jan 2023
Beiträge
4
Punkte für Reaktionen
0
Punkte
1
Liebe alle, könntet ihr auch mir helfen?

(Installiert hatte ich paperlessngx ursprünglich mal nach der Anleitung von mariushosting mit Office Files Support.)

Ich habe bis eben paperless-ngx in der Version 1.17.1 genutzt. Dann habe ich auf der Weboberfläche wieder mal gesehen, dass es ein Update gibt. Das hatte ich schon viel zu lange vor mir hergeschoben, weil ich das letzte Mal schon Probleme mit dem Update hatte, es dann irgendwie doch geschafft hatte.

Also habe ich vorsichtshalber alle Ordner im Docker Ordner paperlessngx kopiert und an anderer Stelle gespeichert.

Dann bin ich, weil ich es nicht besser wusste, in den Synology Container Manager gegangen und hab bei den einzelnen Docker Containern, die ein Update anzeigten auch auf Update gedrückt. Gestoppt hatte ich die Container dummerweise vorher nicht.

Anschließend starteten die Container aber nicht mehr alle. Vor allem die DB scheint das Problem zu sein.

Dann hab ich mir nochmal die Anleitung von MariusHosting angeguckt und gesehen, dass der Ordner trash noch nicht erstellt war. Brauchte man für die ältere Version wohl noch nicht. Das hab ich nachgeholt. Ohne Erfolg.

Dann hab ich alle Ordner leer neu erstellt - also ohne meine Backup-Ordner, aber das hat auch nicht geholfen. Ich habe dann alle Images gelöscht, aber das hat auch nichts gebracht. Dann habe ich das ganze Stack in Portainer entfernt und neu nach der Anleitung von mariushosting eingerichtet, aber auch das gibt nur eine Fehlermeldung.

Hier die Docker Compose Datei aus dem Stack

version: "3.9"
services:
redis:
image: redis:7
command:
- /bin/sh
- -c
- redis-server --requirepass redispass
container_name: PaperlessNGX-REDIS
hostname: paper-redis
mem_limit: 512m
mem_reservation: 256m
cpu_shares: 768
security_opt:
- no-new-privileges:true
read_only: true
user: 1026:100
healthcheck:
test: ["CMD-SHELL", "redis-cli ping || exit 1"]
volumes:
- /volume1/docker/paperlessngx/redis:/data:rw
environment:
TZ: Europe/Berlin
restart: on-failure:5

db:
image: postgres:16
container_name: PaperlessNGX-DB
hostname: paper-db
mem_limit: 1g
cpu_shares: 768
security_opt:
- no-new-privileges:true
healthcheck:
test: ["CMD", "pg_isready", "-q", "-d", "paperless", "-U", "paperlessuser"]
timeout: 45s
interval: 10s
retries: 10
volumes:
- /volume1/docker/paperlessngx/db:/var/lib/postgresql/data:rw
environment:
POSTGRES_DB: paperless
POSTGRES_USER: paperlessuser
POSTGRES_PASSWORD: paperlesspass
restart: on-failure:5

gotenberg:
image: gotenberg/gotenberg:latest
container_name: PaperlessNGX-GOTENBERG
hostname: gotenberg
security_opt:
- no-new-privileges:true
user: 1026:100
command:
- "gotenberg"
- "--chromium-disable-javascript=true"
- "--chromium-allow-list=file:///tmp/.*"
restart: on-failure:5

tika:
image: ghcr.io/paperless-ngx/tika:latest
container_name: PaperlessNGX-TIKA
hostname: tika
security_opt:
- no-new-privileges:true
user: 1026:100
restart: on-failure:5

paperless:
image: ghcr.io/paperless-ngx/paperless-ngx:latest
container_name: PaperlessNGX
hostname: paperless-ngx
mem_limit: 6g
cpu_shares: 1024
security_opt:
- no-new-privileges:true
healthcheck:
test: ["CMD", "curl", "-fs", "-S", "--max-time", "2", "http://localhost:8000"]
interval: 30s
timeout: 10s
retries: 5
ports:
- 8777:8000
volumes:
- /volume1/docker/paperlessngx/data:/usr/src/paperless/data:rw
- /volume1/docker/paperlessngx/media:/usr/src/paperless/media:rw
- /volume1/docker/paperlessngx/export:/usr/src/paperless/export:rw
- /volume1/docker/paperlessngx/consume:/usr/src/paperless/consume:rw
- /volume1/docker/paperlessngx/trash:/usr/src/paperless/trash:rw
environment:
PAPERLESS_REDIS: redis://:redispass@paper-redis:6379
PAPERLESS_DBENGINE: postgresql
PAPERLESS_DBHOST: paper-db
PAPERLESS_DBNAME: paperless
PAPERLESS_DBUSER: paperlessuser
PAPERLESS_DBPASS: paperlesspass
PAPERLESS_TRASH_DIR: ../trash
PAPERLESS_FILENAME_FORMAT: '{created_year}/{correspondent}/{document_type}/{title}'
PAPERLESS_OCR_ROTATE_PAGES_THRESHOLD: 6
PAPERLESS_TASK_WORKERS: 1
USERMAP_UID: 1026
USERMAP_GID: 100
PAPERLESS_TIME_ZONE: Europe/Berlin
PAPERLESS_ADMIN_USER: meiner
PAPERLESS_ADMIN_PASSWORD: verrateichnicht
PAPERLESS_URL: https://paperlessngx.meinname.synology.me
PAPERLESS_CSRF_TRUSTED_ORIGINS: https://paperlessngx.meinname.synology.me
PAPERLESS_OCR_LANGUAGE: deu+eng
PAPERLESS_TIKA_ENABLED: 1
PAPERLESS_TIKA_GOTENBERG_ENDPOINT: http://gotenberg:3000
PAPERLESS_TIKA_ENDPOINT: http://tika:9998
restart: on-failure:5
depends_on:
db:
condition: service_healthy
redis:
condition: service_healthy
tika:
condition: service_started
gotenberg:
condition: service_started


Und hier die Fehlermeldung

failed to deploy a stack: Network paperlessngx_default Creating Network paperlessngx_default Created Container PaperlessNGX-DB Creating Container PaperlessNGX-REDIS Creating Container PaperlessNGX-GOTENBERG Creating Container PaperlessNGX-TIKA Creating Container PaperlessNGX-REDIS Created Container PaperlessNGX-GOTENBERG Created Container PaperlessNGX-DB Created Container PaperlessNGX-TIKA Created Container PaperlessNGX Creating Container PaperlessNGX Created Container PaperlessNGX-TIKA Starting Container PaperlessNGX-REDIS Starting Container PaperlessNGX-DB Starting Container PaperlessNGX-GOTENBERG Starting Container PaperlessNGX-TIKA Started Container PaperlessNGX-REDIS Started Container PaperlessNGX-GOTENBERG Started Container PaperlessNGX-DB Started Container PaperlessNGX-DB Waiting Container PaperlessNGX-REDIS Waiting Container PaperlessNGX-DB Error Container PaperlessNGX-REDIS Healthydependency failed to start: container PaperlessNGX-DB is unhealthy


Erst jetzt habe ich hier im Forum gelesen, dass man einen Dump braucht (Hab noch nicht begriffen was das genau ist.) Ich habe aber ja nur die Ordnerstruktur kopiert und gesichert. Gibt es für mich noch Hoffnung, das Update doch noch erfolgreich zu Ende zu bringen oder habe ich jetzt meine paperlessngx-Daten verloren und kann sie nicht wiederherstellen?
 

alexhell

Benutzer
Sehr erfahren
Mitglied seit
13. Mai 2021
Beiträge
2.831
Punkte für Reaktionen
853
Punkte
154
Ein Dump ist ein Backup der Datenbank in Textform. Da stehen alle Befehle drin um die Datenbank neu zu befüllen.
Du müsstest deine alte Installation wieder zum laufen bekommen. Also die selbe DB Version nutzen wie vor dem Update und dann den Dump erstellen. Statt postgres:16 musst du die 16 durch das was du vorher hattest ersetzen.
 
  • Like
Reaktionen: OSAfids

OSAfids

Benutzer
Mitglied seit
25. Jan 2023
Beiträge
4
Punkte für Reaktionen
0
Punkte
1
Danke, danke, danke!

Ich hab bei GitHub in der Version 1.17.1 nachgeschaut und da stand tatsächlich postgres:15. Das hat geklappt.

Dann stellte sich noch raus, dass Nutzername und Passwort für die Datenbank in meiner alten Anleitung andere gewesen sein mussten. Zum Glück hatte ich die docker compose.yaml damals als .txt abgespeichert. Nutzer und Passwort waren damals einheitlich nur "paperless".

Jetzt läuft alles wieder und mir wird in der Weboberfläche schon die aktuelle Version angezeigt. Jetzt muss ich nur noch einen Dump erstellen. Aber das finde ich ja mit einer Suche hier hoffentlich auch noch raus.

Und dann wäre mein Ziel auch die Datenbank noch auf die aktuellste Version zu bekommen, oder ist das jetzt eh egal, Hauptsache es läuft wieder?

Danke!
 
Zuletzt bearbeitet:

alexhell

Benutzer
Sehr erfahren
Mitglied seit
13. Mai 2021
Beiträge
2.831
Punkte für Reaktionen
853
Punkte
154
Du wirst keine Vorteile mit der neuen Version feststellen. Ist also egal ob du es updatest. Aber einen Dump würde ich täglich automatisch erstellen lassen.
Aber super, dass es wieder läuft:)
 
  • Like
Reaktionen: OSAfids

Frank73

Benutzer
Mitglied seit
29. Jan 2018
Beiträge
149
Punkte für Reaktionen
5
Punkte
18
Ich "spiele" gerade etwas mit postgresql im Zusammenhang mit paperless-ngx rum (Installation gem. Marius Hosting).

Hierfür habe ich eine paperless-Instanz mit postgres_15 erstellt und in paperless auch schon einige Testdokumente erfasst.

Um das allgemeine Zusammenspiel zwischen den einzelnen Containern (redis, postgres, paperless) zu verstehen und auch mal ein Upgrade von Postgres 15 auf Postgres 16 durchzuspielen, habe ich heute morgen folgendes gemacht:

In Postgres 15 einen dumpall mit dem Befehl
Code:
pg_dumpall -U paperless > /backup/backup.sql
erstellt. Durch ein Mapping auf ein Backup-Volumen auf dem DMS steht es dauerhaft zur Verfügung.

Auf dem Host dann neue Verzeichnisse angelegt (für die Datenbanken des aktuellen Postgres 16 [pg_16; bisher pg_15] und ein neues "data"-Verzeichnis für den Container paperless [das "alte" habe ich in "data_old" umbennant]) lt. Hinweis

Image Postgres 16 geladen und über einen Stack im Portainer den neuen Container erstellt, und dann mit dem Befehl
Code:
psql -U paperless < /backup/2021-12-19-Backup.sql
die Migration durchgeführt.

Hierzu hätte ich 2 Fragen:
1) Auf der Seite wird ein anderer Befehl für einen Restore genannt. Welcher Befehlt ist denn der richtige und worin besteht der Unterschied zwischen beiden?
2) Die Migration der Postgres-Version von 15 auf 16 schein funktioniert zu haben. Einzig 2 Errors werden im log ausgewiesen:
Code:
ERROR:  role "paperless" already exists
STATEMENT:  CREATE ROLE paperless;
ERROR:  database "paperless" already exists
STATEMENT:  CREATE DATABASE paperless WITH TEMPLATE = template0 ENCODING = 'UTF8' LOCALE_PROVIDER = libc LOCALE = 'en_US.utf8';
Was sollen mir diese beiden Errors sagen und was habe ich an dieser Stelle falsch gemacht?
 

plang.pl

Benutzer
Contributor
Sehr erfahren
Mitglied seit
28. Okt 2020
Beiträge
15.028
Punkte für Reaktionen
5.401
Punkte
564
Wenn es funktioniert, würde ich die Errors ignorieren. Er verwendet ja dann anscheinend die existierende DB. Wenn du aber grad erst am Einrichten bist, würd ich dir empfehlen, das Ganze gleich mit der MariaDB aufzusetzen, da hat man die Probleme nicht.
 

Frank73

Benutzer
Mitglied seit
29. Jan 2018
Beiträge
149
Punkte für Reaktionen
5
Punkte
18
Mit MariaDB habe ich mich auch schon etwas auseinander gesetzt. Hierzu habe ich einen separaten Theread eröffnet:L
hier
 

2133123321

Benutzer
Mitglied seit
03. Apr 2024
Beiträge
2
Punkte für Reaktionen
1
Punkte
3
Hi,

ich habe dein script noch minimal angepasst, damit die Ausgabe gleich gezippt wird:
Dann müsstest du im Aufgabenplaner dir eine neue Aufgabe erstellen. Wichtig ist, die muss als root ausgeführt werden.
Bash:
/usr/local/bin/docker exec <containername-von-postgres> pg_dump -c DB_NAME > /volume1/...../backup.sql
Code:
/usr/local/bin/docker exec <containername-von-postgres> pg_dump -U DB_USER -c DB_NAME | gzip > /volume1/...../backup.sql.gz
 
  • Like
Reaktionen: Kenji

Kenji

Benutzer
Mitglied seit
09. Feb 2024
Beiträge
52
Punkte für Reaktionen
8
Punkte
58
Kann mir jemand beim Anpassen der Codes helfen? Leider scheitere ich wohl an den "einfachstes Dingen"
Aber Backup ist halt ein muss.

Code:
/usr/local/bin/docker exec <PaperlessNGX-DB> pg_dump -c paperless > /volume2/Backups/paperlessngx/backup.sql

/usr/local/bin/docker exec <PaperlessNGX-DB> pg_dump -U paperlessuser -c paperless | gzip > /volume2/Backups/paperlessngx/backup.sql.gz

version: "3.9"
services:
redis:
image: redis:7
command:
- /bin/sh
- -c
- redis-server --requirepass redispass
container_name: PaperlessNGX-REDIS
hostname: paper-redis
mem_limit: 1512m
mem_reservation: 1256m
cpu_shares: 768
security_opt:
- no-new-privileges:true
read_only: true
user: 1026:100
healthcheck:
test: ["CMD-SHELL", "redis-cli ping || exit 1"]
volumes:
- /volume2/docker/paperlessngx/redis:/data:rw
environment:
TZ: Europe/Berlin
restart: on-failure:5

db:
image: postgres:16
container_name: PaperlessNGX-DB
hostname: paper-db
mem_limit: 2g
cpu_shares: 768
security_opt:
- no-new-privileges:true
healthcheck:
test: ["CMD", "pg_isready", "-q", "-d", "paperless", "-U", "paperlessuser"]
timeout: 45s
interval: 10s
retries: 10
volumes:
- /volume2/docker/paperlessngx/db:/var/lib/postgresql/data:rw
environment:
POSTGRES_DB: paperless
POSTGRES_USER: paperlessuser
POSTGRES_PASSWORD: paperlesspass
restart: on-failure:5

gotenberg:
image: gotenberg/gotenberg:latest
container_name: PaperlessNGX-GOTENBERG
hostname: gotenberg
security_opt:
- no-new-privileges:true
user: 1026:100
command:
- "gotenberg"
- "--chromium-disable-javascript=true"
- "--chromium-allow-list=file:///tmp/.*"
restart: on-failure:5

tika:
image: ghcr.io/paperless-ngx/tika:latest
container_name: PaperlessNGX-TIKA
hostname: tika
security_opt:
- no-new-privileges:true
user: 1026:100
restart: on-failure:5

paperless:
image: ghcr.io/paperless-ngx/paperless-ngx:latest
container_name: PaperlessNGX
hostname: paperless-ngx
mem_limit: 8g
cpu_shares: 1024
security_opt:
- no-new-privileges:true
healthcheck:
test: ["CMD", "curl", "-fs", "-S", "--max-time", "2", "http://localhost:8000"]
interval: 30s
timeout: 10s
retries: 5
ports:
- 8777:8000
volumes:
- /volume2/docker/paperlessngx/data:/usr/src/paperless/data:rw
- /volume2/paperlessngx/media:/usr/src/paperless/media:rw
- /volume2/paperlessngx/export:/usr/src/paperless/export:rw
- /volume2/paperlessngx/consume:/usr/src/paperless/consume:rw
- /volume2/paperlessngx/trash:/usr/src/paperless/trash:rw
environment:
PAPERLESS_REDIS: redis://:redispass@paper-redis:6379
PAPERLESS_DBENGINE: postgresql
PAPERLESS_DBHOST: paper-db
PAPERLESS_DBNAME: paperless
PAPERLESS_DBUSER: paperlessuser
PAPERLESS_DBPASS: paperlesspass
PAPERLESS_TRASH_DIR: ../trash
PAPERLESS_FILENAME_FORMAT: '{owner_username}/{correspondent}/{document_type}/{created_year}/{created_year}-{created_month}-{created_day}_{tag_list}_{title}'

PAPERLESS_OCR_ROTATE_PAGES_THRESHOLD: 6
PAPERLESS_TASK_WORKERS: 4
USERMAP_UID: 1026
USERMAP_GID: 100
PAPERLESS_TIME_ZONE: Europe/Berlin
PAPERLESS_ADMIN_USER: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
PAPERLESS_ADMIN_PASSWORD: xxxxxxxxxxxxxxxxxxxx
PAPERLESS_URL: xxxxxxxxxxxxxxx
PAPERLESS_CSRF_TRUSTED_ORIGINS: xxxxxxxxxxxxxxxxxxxxx
PAPERLESS_OCR_LANGUAGE: deu+eng
PAPERLESS_CONSUMER_ENABLE_BARCODES: 1
PAPERLESS_TIKA_ENABLED: 1
PAPERLESS_TIKA_GOTENBERG_ENDPOINT: http://gotenberg:3000
PAPERLESS_TIKA_ENDPOINT: http://tika:9998
PAPERLESS_OCR_USER_ARGS: '{"continue_on_soft_render_error": true, "invalidate_digital_signatures": true}'
PAPERLESS_CONSUMER_DELETE_DUPLICATES: true
restart: on-failure:5
depends_on:
db:
condition: service_healthy
redis:
condition: service_healthy
tika:
condition: service_started
gotenberg:
condition: service_started


lg.
 

Anhänge

  • 4.png
    4.png
    119,6 KB · Aufrufe: 15
  • 3.png
    3.png
    185,4 KB · Aufrufe: 13
  • 2.png
    2.png
    65,1 KB · Aufrufe: 11
  • 1.png
    1.png
    156 KB · Aufrufe: 12
  • 5.png
    5.png
    128,6 KB · Aufrufe: 15

2133123321

Benutzer
Mitglied seit
03. Apr 2024
Beiträge
2
Punkte für Reaktionen
1
Punkte
3
Was funktioniert denn nicht? Auf den ersten Blick scheint dein script in Ordnung:

Code:
/usr/local/bin/docker exec <PaperlessNGX-DB> pg_dump -U paperlessuser -c paperless | gzip > /volume2/Backups/paperlessngx/backup.sql.gz

Wenn du vielleicht eine Fehlermeldung hast...
 

plang.pl

Benutzer
Contributor
Sehr erfahren
Mitglied seit
28. Okt 2020
Beiträge
15.028
Punkte für Reaktionen
5.401
Punkte
564
Die Frage ist, ob der Ordner auch auf volume2 liegt.
 

Kenji

Benutzer
Mitglied seit
09. Feb 2024
Beiträge
52
Punkte für Reaktionen
8
Punkte
58
Die Frage ist, ob der Ordner auch auf volume2 liegt.
Das war der Fehler, Backup Ordner liegt im Volume 1. paperless und die Datenbank auf Volumen 2.

Beim Ausführen der Aufgabe wird eine Datei erstellt, aber die Größe zeigt wohl schon das darin nicht steht. Irgendwelche Tipps? Per root wurde die Aufgabe ausgeführt.
 

Anhänge

  • Screenshot_20240404-122752_Dateimanager +.png
    Screenshot_20240404-122752_Dateimanager +.png
    135,8 KB · Aufrufe: 11

plang.pl

Benutzer
Contributor
Sehr erfahren
Mitglied seit
28. Okt 2020
Beiträge
15.028
Punkte für Reaktionen
5.401
Punkte
564
Die Konsolenausgabe, die auf den Befehl folgt, wäre interessant
 

Kenji

Benutzer
Mitglied seit
09. Feb 2024
Beiträge
52
Punkte für Reaktionen
8
Punkte
58
Code:
root@HOME_NAS_DS923:~# /usr/local/bin/docker exec <PaperlessNGX-DB> pg_dump -c paperless > /volume1/Backups/paperlessngx/backup.sql
-ash: PaperlessNGX-DB: No such file or directory

Wenn ich die Klammern weglasse >

Code:
1337@HOME_NAS_DS923:~$ /usr/local/bin/docker exec PaperlessNGX-DB pg_dump -c paperless > /volume1/Backups/paperlessngx/backup.sql
pg_dump: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.543                                                               2" failed: FATAL:  role "root" does not exist

- Pfad schein i.O zu sein (File wird erstellt)
- docker mit paperless ist auf volume 2 (sollte ja kein Problem sein=
- Backup Pfad ist auf volume1
 
Zuletzt bearbeitet:

plang.pl

Benutzer
Contributor
Sehr erfahren
Mitglied seit
28. Okt 2020
Beiträge
15.028
Punkte für Reaktionen
5.401
Punkte
564
Achso. Du musst den Namen der paperless Datenbank in der MariaDB angeben. <PaperlessNGX-DB> ist zu ersetzen durch den Namen der Datenbank, in die PNGX schreibt
 

Kenji

Benutzer
Mitglied seit
09. Feb 2024
Beiträge
52
Punkte für Reaktionen
8
Punkte
58
Und wo um Himmels willen finde ich diese? :D irgendwo bei #73 erkennbar?
postgresql-zu-mariadbMuss ich die Datenbank migrieren ala
 


 

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