Anleitung Backup/Restore Paperless ngx?

Habe es jetzt nochmal so ausprobiert:


Code:
cd /volume1/docker/paperless-ngx
sudo docker exec paperless-ngx document_exporter /usr/src/paperless/export --delete

Läuft auf den gleichen Fehler bzgl. fehlender Schreibrechte..
 
Hi,
schau mal, die erste Zeile ist der Pfad zu deiner docker-compose Datei. Bei mir wird das ja mit Portainer erstellt:

1736704476600.png
Ich habe in diesem Ordner mehrere Projekte und PNGX ist die 11.
So wie ich das bei Dir gesehen habe, ist bei dir der Pfad auf PNGX, und dort sucht er wahrscheinlich die compose Datei.
 
achso, in der 2ten zeile musst du:
Code:
sudo docker-compose exec webserver document_exporter ../export --delete
dann auch webserver angeben, wenn der Container bzw Dienst so bei dir heißt. Ich habe ihn damals umbenannt in paperless-ngx, vorher hieß das auch webserver.
 
Danke für Deine Tipps - funktioniert leider noch nicht:

Code:
cd /volume1/docker/paperless-ngx
sudo docker exec webserver document_exporter /usr/src/paperless/export --delete

führt zu:

Code:
Error: No such container: webserver

Die compose-Datei liegt hier:
Code:
/volume1/docker/paperless-ngx/compose.yaml
 
Probier es doch mal mit sudo docker-compose .... sowie es @deltapapa auch geschrieben hat. Wenn du nur docker verwendest, dann kannst du dir das in den Ordner wechseln sparen. Aber der Container wird dann anders heißen
 
Danke für Eure Hilfe. ;)

Habe den Fehler gefunden: der Pfad, den ich als "export" definiert habe, liegt außerhalb des Containers.
Wenn der Container läuft, ändert sich der Besitzer des Ordners im Filesystem der DS auf "1000":

2025-01-13 14_21_30-HIT-NAS - Synology DiskStation.jpg
Für User "1000" waren aber keine Schreibrechte für den Ordner vorhanden.
Nachdem ich die Freigaben für Gruppe "Owner" gesetzt habe, hat das Skript im Aufgabenplaner funktioniert.
 
  • Like
Reaktionen: deltapapa
Hallo zusammen,
ich habe euer Diskussion mit Interesse verfolgt, da bei mir der Export seit geraumer Zeit nicht mehr läuft. Ich weiß leider nicht, was sich hier bezüglich paperless und dem Container geändert haben soll.
Ich habe nun eure Anweisungen befolgt und die Aufgabe zum Export wie nachfolgend dargestellt umgebaut.
cd /volume1/docker/portainer/compose/1
sudo docker-compose exec paperless-ngx-webserver-1 document_exporter /volume1/docker/paperless-ngx/export

Nach der Ausführung erhalte ich dann folgende Fehlermeldung:
service "paperless-ngx-webserver-1" is not running container #1

Das mit dem Besitzer "1000" habe ich nicht verstanden, bei mir ist der Besitzer "root"
Ich muss bedauerlicherweise dazu sagen, dass im UNIX-Umfeld noch verhältnismäßig neu bin.
 
Hi,
für mich sieht sieht es so aus, als wenn er den Service nicht findet.

Wie sieht der paperless-ngx-Abschnitt in Deiner docker-compose.yml aus?
Bei mir sieht es so aus:

Code:
webserver:
    image: ghcr.io/paperless-ngx/paperless-ngx:latest
    container_name: paperless-ngx
    restart: unless-stopped
    depends_on:
      - broker
      - gotenberg
      - tika
    ports:
      - "8777:8000"

Damit es funktioniert musst Du den Service so aufrufen, wie er in der compose-Datei definiert ist - in meinem Fall also "webserver".
Der Befehl wäre in dem Fall folgender:

Code:
sudo docker-compose exec webserver document_exporter /volume1/docker/paperless-ngx/export
 
Danke für die schnelle Antwort.
Ja, der Service heißt in der compose-Datei auch "webserver" der Container aber paperless-ngx-webserver-1.
Ich habe nun im Code in auch webserver eingetragen, aber der Fehler bleibt derselbe.
service "webserver" is not running container #1
 
Hallo,

als Ersteller und nach einiger Abstinzen klinke ich mich auch nochmal kurz ein. Mein System lief nun zwei Jahre, aber ich habe mich zuletzt mal wieder intensiver damit befasst und mittlerweile vieles verstanden.
Lösungen für das Problem "Backup" sind hier ja schon zahlreiche genannt. Ich fasse mal kurz aus meinen Augen und nach meiner neusten Erfahrung zusammen.
  • Die Datenbank: Es macht zunächst einen Unterschied, ob man MariaDB oder eine eigens für Paperless generierte Postgresql-Datenbank im Conteiner nutzt. MariadB wird als Anwendung im Hyperbackup gesichtert, Postgres über den zugehörigen Ordner, wo auch der Rest der Anwendung für Paperless drin lokal gespeichert wird.
  • Alles zusammen: Im Falle von eigener Postgres-Datenbank hat man quasi alles gesichert, sofern man den im Container gemounteten Ordner für Paperless und seine Bestandteile sichert (media, db, etc.). Stellt man diesen wieder her UND erzeugt den Paperless-Container mit identischer Konfiguration, werden diese alten Daten genutzt, sprich wiederhergestellt. Dazu ist es äußerst hilfreich, den Paperless-Container über eine Docker-compose, bzw. Portainer mit Konfigurationsdatei erstellt zu haben. Diese kann man dann einfach wieder verwenden.
  • Alles (mit MariaDB) wird es ähnlich gehen, nur das man zusätzlich die Datenbank mit möglichst dem selben Stand wie die Daten im Ordner als HyperBackup gesichert haben muss, bzw. wiederherstellen muss
  • Die allereinfachste und sicherste Backup-Lösung: Die Container-Daten zu kopieren ist sinnvoll, ein wiederherstellen aber nur möglich, wenn man die ursprüngliche Container-Konfiguration noch kennt und auch die passende Datenbank (falls keine integrierte Postgres genutzt wurde) hat. Eine robustere Variante ist daher die Verwendung der Export-Funktion (ich denke das meinen hier viele als "Dump!?).
Die Export-Funktion extrahiert sämtliche Daten, Dokumente, Einstellungen/Tags, etc. aus dem Container+Datenbank. Mit der Import-Funktion kann man diese dann bei Bedarf in einen neuen Container+Datenbank zurückspielen, dabei ist selbst ein Versionsupdate von Paperless oder Wechsel der Datenbank, z.B. von Postgres zu MariaDB kein Problem. Das Ganze lässt sich automatisieren. Es muss nur ein Ordner für den Export im Container gemountet sein.

Anleitung zur automatisierten Sicherung über Export​

(vorher Daten sichern - auf eigene Gefahr falls ihr euch vertippt oder so ;) )

1. Export-Aufgabe im Aufgabenplaner erstellen​

"DSM >>> Systemsteuerung >>> Aufgabenplaner" neue "geplante Aufgabe" mit "benutzerdefiniertem Script" erstellen. Besitzersollte "root" ausgewählt werden (Warnungen bestätigen). Namen vergeben und Zeitplan definieren. Und als Script folgendes einfügen:
# Paperless-Containername für den Webserver, ggf. anpassen​
CONTAINER="paperless-webserver"
# Export-Befehl ausführen​
docker exec "$CONTAINER" document_exporter ../export -c -f

2. Aufgabe zum Leeren des alten Export-Ordners erstellen​

Analog zur vorherigen Aufgabe eine zweite erstellen, welche den alten Stand löscht, damit ein neuer angelegt werden kann. Scripttext:
# Pfad zum Zielordner, hier muss euer gemounteter Export-Ordner stehen​
TARGET_DIR="/volume1/docker/paperless/export"
# Löscht alle Dateien und Unterordner im Zielordner, Achtung: Export selbst bleibt erhalten, löscht nur alles darunter!​
find "$TARGET_DIR" -mindepth 1 -delete

3. Die exportierten Daten sichern​

Jetzt müsst ihr noch die exportierten Daten, bzw. den Ordner "../export" sichern, z.B. per Hyperbackup.

4. WICHTIG: Zeitliche Abläufe richtig einstellen!​

Ihr müsst für die Aufgaben 1 - 3 die richtige zeitliche Abfolge für eure Sicherung einstellen. Ihr wollt ja immer den aktuellsten Dump sichern, also sollten eure Aufgaben zeitlich zuerst den alten Export löschen, dann den neuen Anlegen und danach sichern.

Noch ein wichtiger Hinweis: die rohen Exportdaten liegen unverschlüsselt im export-Ordner, er sollte also entsprechend unzugänglich für andere sein. Idealerweise löscht man den zuletzt gesicherten Export-Ordner auch direkt nachdem er gesichert wurde. Das bedeutet für 4. in enger zeitlicher Folge: Export erstellen, Sicherung durchführen und danach Export direkt löschen (aber sicherstellen, das die Sicherungsaufgabe genug Zeit hat).

5. Wiederherstellung​

Zur Wiederherstellung legt ihr lokal die notwendigen Ordner (leer, bis auf "export") an und erzeugt einen neuen Paperless-Container (Passwörter, etc. können hier abweichen, ihr seid nicht auf die alte Konfiguration angewiesen.). Die gesicherten Export-Daten müssen in den export-Ordner des neuen Paperless-Containers kopiert werden.
WICHTIG: Loggt euch nocht nicht ein! Ihr müsst erst den Datenimport laufen lassen. Ich bin mir nicht sicher wie es bei der Postgres-Datenbank aussieht, für MariaDB habe ich vorher einen Benutzer + blanko-Datenbank für den Container erzeugt. Habt ihr euch bereits im Container angemeldet, werden darin erste Daten generiert, welche den Import verhindern. Dann muss die Datnebank blanko neu erstellt werden.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: devau
Danke an mindscout.

Der große Vorteil ist, dass ich so mit HyperBackup mehrere Versionen des exports sehr effizient wegsichern kann.
Frage: Was ist, wenn die Container zum Sicherungszeitpunkt auf älteren Image-Versionen basierten und ich nun, z.B. 6 Monate später den damaligen Export importieren will auf neue aktuell Container? Angenommen, damals war es eine andere Version von mariaDB oder paperless, dann stimmen ggfs. gewisse Felder nicht mehr mit überein? Hier ist zum Glück mariaDB unkomplizierter als PostGress.
Theoretisch müsste man also auch jedesmal vor dem Export einen "Export" im Syno "Container Manager" der gesamten Settings inkl. Container selbst durchführen, damit der Restore dann auch wirklich 100% funktioniert.?
Leider sind diese Exports sehr zeitintensiv. Siehe auch How to back up Docker containers .
 

Additional post fields

 

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