Backup sooo wichtig!

Ich habe in meiner Testumgebung eben mal eine VM mit docker hochgezogen.
Dann habe ich paperless-ngx laut der auf github.com zu findende Anleitung in der Dockerumgebung installiert. Zum Schluss habe ich das Backup aus meiner Paperless Produktivumgebung dort eingespielt.

Nur kurz zur Erklärung. Paperless NGX läuft bei mir in einem Kubernetes Cluster. Ist nicht Docker aber hat was mit Container zu tun. Ist also “ähnlich” und ist daher transportable. Also egal ob Kubernetes oder Docker. Als Datenbank System läuft bei mir im Kubernetescluster ein PostgreSQL Cluster mit einer Primary und 2 Standby Instanzen.

Aber ihr seht schon, das spielt alles keine Rolle. Ich mache automatisiert alle 24 Stunden ein documents_export als Backup.

Und genau dieses Backup habe ich eben in einer frischen Docker Paperless-PostgreSQL Installation importiert. Es lief auf Anhieb.

Daher immer

  1. Täglich Backup machen
  2. Restore üben

Grüße

Der Meinung bin ich auch…

Mache alle 24h nen Export und damit ists gut.

Die Geschichte mit DB Sichern und co is mir zu aufwändig und bis heute hat noch niemand soweit ich gelesen habe die Sicherung zurück gespielt.

In der kleinen Docker Umgebung wo Paperless alleine für sich eine eigene PostgreSQL Instanz hat ist die DB Sicherung anscheinend gar nicht nötig. Das document_export von Paperless scheint das alles entsprechend zu berücksichtigen.

Ja, schon mehrfach von Gerät A B C untereinander n export eingespielt und nie probleme, selbst untereinander ( Debian / RaspianOS / Synology / Ugreen UGOS )

1 „Gefällt mir“

Vor allem das zweite ist wichtig. Nicht umsonst sagt man Nobody wants backup. Everybody wants restore.

Bei mir läuft im Hintergrund ein Backup Script jeden Tag. Es wird eine Exporter zip Datei erstellt mit Datum und Uhrzeit und dann in ein Backup Verzeichnis verschoben. Dort werden 14 Sicherungen aufgehoben und dann jeweils die älteste automatisch gelöscht. Einmal die Woche lasse ich in Paperless-ngx den Sanity Checker zur kontrolle laufen.

Ich dachte der Sanity Check läuft immer automatisch alle x Stunden oder so.

Bei mir ist im Export das Datum direkt schon enthalten…

Export läuft per Cron als direkter Befehl in der shell.

Snapshots sind genauso wichtig wenn es vom System unterstützt wird.

Container stoppen und Ordner wiederhesrstellen kann jeder, auch per Telefon oder Teams Anleitung.
Hat mir schon einige male geholfen und war in 5 Minuten erledigt.

Bei mir bekomme ich nur Fehlermeldung wenn ich den export Befehl abschicke.

Bin in dem Verzeichnis wo die .yml + . env sind. Der Befehl ist “podman-compose exec webserver document_exporter ../export/export_2026-02-07.zip”

Fehlermeldung ist: “Error: can only create exec sessions on running containers: container state improper exit code: 255”

Muss der Container laufen . wenn ich den export-Befehl abschicke?

Und wenn Du es einmal so versuchst?

podman exec webserver /bin/sh -c "document_exporter ../export -z

Ich kenne Podman nicht und du bist bisher der erste der Podman statt docker nutzt…

https://docs.paperless-ngx.com/administration/#exporter

Aber davon abgesehen stimmt dein Befehl nicht mit der Pfadangabe….
vermutlich musst einfach podman statt docker-compose verwenden

sudo docker-compose exec -T webserver document_exporter -z ../export

Ich bin der erste der hier das nicht verheimlicht. Alle Befehle + Daten unter Docker funktionieren auch unter Podmann. Der Unterschied ich arbeite als Benutzer und nicht als root.

Danke. Es hat jetzt geklappt mit Ihrem Befehl. Musste nur das sudo wegmachen und podman statt docker schreiben. Auch muß der Conainer aktiv sein.

Jeztz kann ich dran gehen und tika mit gotenberg zu installieren.

Hier einige Konfigurationsmöglichkeiten für Paperless mit tika und Gotenberg. Solltest du eine konfiguration nutzen passe bitte die postgres Version nach deinen bedürfnissen an.

https://github.com/paperless-ngx/paperless-ngx/tree/dev/docker/compose

Habe mein docker-compose.yml angepasst und mit podman-compose up -d neu gezogen. Es werden jede Menge File angezeigt und Errormeldung:

odman-compose version: 1.0.6
[‚podman‘, ‚–version‘, ‚‘]
using podman version: 4.9.3
Traceback (most recent call last):
File „/usr/bin/podman-compose“, line 33, in
sys.exit(load_entry_point(‚podman-compose==1.0.6‘, ‚console_scripts‘, ‚podman-compose‘)())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File „/usr/lib/python3/dist-packages/podman_compose.py“, line 2941, in main
podman_compose.run()
File „/usr/lib/python3/dist-packages/podman_compose.py“, line 1421, in run
self._parse_compose_file()
File „/usr/lib/python3/dist-packages/podman_compose.py“, line 1488, in _parse_compose_file
content = yaml.safe_load(f)
^^^^^^^^^^^^^^^^^
File „/usr/lib/python3/dist-packages/yaml/init.py“, line 125, in safe_load
return load(stream, SafeLoader)
^^^^^^^^^^^^^^^^^^^^^^^^
File „/usr/lib/python3/dist-packages/yaml/init.py“, line 81, in load
return loader.get_single_data()
^^^^^^^^^^^^^^^^^^^^^^^^
File „/usr/lib/python3/dist-packages/yaml/constructor.py“, line 49, in get_single_data
node = self.get_single_node()
^^^^^^^^^^^^^^^^^^^^^^
File „/usr/lib/python3/dist-packages/yaml/composer.py“, line 36, in get_single_node
document = self.compose_document()
^^^^^^^^^^^^^^^^^^^^^^^
File „/usr/lib/python3/dist-packages/yaml/composer.py“, line 55, in compose_document
node = self.compose_node(None, None)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File „/usr/lib/python3/dist-packages/yaml/composer.py“, line 84, in compose_node
node = self.compose_mapping_node(anchor)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File „/usr/lib/python3/dist-packages/yaml/composer.py“, line 133, in compose_mapping_node
item_value = self.compose_node(node, item_key)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File „/usr/lib/python3/dist-packages/yaml/composer.py“, line 84, in compose_node
node = self.compose_mapping_node(anchor)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File „/usr/lib/python3/dist-packages/yaml/composer.py“, line 133, in compose_mapping_node
item_value = self.compose_node(node, item_key)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File „/usr/lib/python3/dist-packages/yaml/composer.py“, line 84, in compose_node
node = self.compose_mapping_node(anchor)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File „/usr/lib/python3/dist-packages/yaml/composer.py“, line 133, in compose_mapping_node
item_value = self.compose_node(node, item_key)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File „/usr/lib/python3/dist-packages/yaml/composer.py“, line 84, in compose_node
node = self.compose_mapping_node(anchor)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File „/usr/lib/python3/dist-packages/yaml/composer.py“, line 127, in compose_mapping_node
while not self.check_event(MappingEndEvent):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File „/usr/lib/python3/dist-packages/yaml/parser.py“, line 98, in check_event
self.current_event = self.state()
^^^^^^^^^^^^
File „/usr/lib/python3/dist-packages/yaml/parser.py“, line 428, in parse_block_mapping_key
if self.check_token(KeyToken):
^^^^^^^^^^^^^^^^^^^^^^^^^^
File „/usr/lib/python3/dist-packages/yaml/scanner.py“, line 116, in check_token
self.fetch_more_tokens()
File „/usr/lib/python3/dist-packages/yaml/scanner.py“, line 223, in fetch_more_tokens
return self.fetch_value()
^^^^^^^^^^^^^^^^^^
File „/usr/lib/python3/dist-packages/yaml/scanner.py“, line 577, in fetch_value
raise ScannerError(None, None,
yaml.scanner.ScannerError: mapping values are not allowed here
in „/home/hkaufmann/Daten/DBank/paperless/docker-compose.yml“, line 56, column 29

Wo kann man erkennen ob es funktioniert hat?

Es ist am besten wenn ich ein neues Thema aufmache dafür.

Paperless-ngx: tika & gotenberg nachträglich installieren

1 „Gefällt mir“