Paperless-ngx Backup & Migration von Paperless-ngx (Pi → Synology NAS)

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

KaffeeKoala

Benutzer
Registriert
26. Dez. 2024
Beiträge
11
Reaktionspunkte
7
Punkte
3
Hallo zusammen,

ich migriere aktuell meine Paperless-ngx-Instanz von einem Raspberry Pi 400 auf mein Synology NAS DS923+. Beide paperless-ngx Instanzen laufen auf Version 2.14.7.

Mein Vorgehen:

  1. Backup auf dem Pi erstellt → Mit ex.sh ein .zip-Archiv generiert.
  2. Export auf das NAS übertragen → ZIP in den Export-Ordner hochgeladen und entpackt.
  3. Import gestartet → In Portainer per Konsole mit document_importer ../export ausgeführt.
  4. Erster Import erfolgreich → Alle Dokumente, Nutzer, Tags und Einstellungen wurden übernommen.

Problem:

Beim zweiten Import mit neuen Dokumenten traten folgende Fehler auf:
  • Die neuen Dokumente werden in Paperless zwar gelistet, aber beim Anklicken erscheint ein Fehler.
  • Die zuvor importierten Dokumente sind weiterhin zugänglich.
  • In der Konsole gab es einen Fehlerhinweis auf fehlende Dateien, obwohl sie im Export-Ordner vorhanden sind.
  • Bei Anklick einer Datei kommt folgende HTTP 404 Not Found (s. Screenshot).

Fragen:

  • Habe ich einen Schritt übersehen?
  • Muss ich beim zweiten Import anders vorgehen?
  • Gibt es eine empfohlene Methode für inkrementelle Exporte/Importe, um solche Fehler zu vermeiden?

Was mir noch aufgefallen ist:

  • Unterschiedlichen Datenbanktypen: SQLite auf dem NAS und PostgreSQL auf dem Raspberry Pi
Danke für eure Hilfe! 🙏
 

Anhänge

  • Screenshot 2025-02-03 at 08-52-21 Dokumente - Paperless-ngx.png
    Screenshot 2025-02-03 at 08-52-21 Dokumente - Paperless-ngx.png
    132,6 KB · Aufrufe: 7
  • Screenshot 2025-02-03 at 08-56-07 Preview – Django REST framework.png
    Screenshot 2025-02-03 at 08-56-07 Preview – Django REST framework.png
    19,6 KB · Aufrufe: 7
Korrekt wäre der Export der Datenbank vom Pi gewesen und nachfolgende Import in der DS.

Code:
sudo docker-compose exec webserver document_exporter ../export

Da niemand weiß, was Dein ex.sh Shellscript enthält ist es auch schwierig zu beurteilen, was Du da wie exportiert hast.
 
  • Like
Reaktionen: KaffeeKoala
Oh, logisch ...
sascha@paperlesspi:~ $ cat ex.sh
#!/bin/bash
cd /home/sascha/paperless-ngx
Code:
sudo docker-compose exec -T webserver document_exporter ../export -z
 
Und warum hast Du auf dem NAS den Datenbanktyp gewechselt? Da dürfte ein Import doch auch noch eine vorherige Konvertierung der Datensätze erforden.
 
  • Like
Reaktionen: KaffeeKoala
Nun gut, das war mir gar nicht bewusst. Habe ngx nun neu aufgesetzt mit postgresql Datenbank und läuft auch.
Und wieder: Erster import der Daten lief durch. Alle PDFs vorhanden.
Wie gehe ich nun beim nächsten import genau vor? Mit

document_importer --skip-existing /usr/src/paperless/export/

hatte ich leider keinen Erfolg. D. h. der Fehler bleibt trotzdem der Selbe. :-(
 
Zuletzt bearbeitet von einem Moderator:
In der Doku steht unter

Making backups​

Use the document exporter. The document exporter exports all your documents, thumbnails, metadata, and database contents to a specific folder. You may import your documents and settings into a fresh instance of paperless again or store your documents in another DMS with this export.

Schade, d. h. ich könnte alle paar Wochen ein Backup einspielen in eine neu aufgesetzte Instanz.
Hatte mir das Erstellen von Backups irgendwie einfacher vorgestellt.

Hier noch mal zum Vergleich die beiden docker-compose.ymls

Pi .yml

services:
broker:
image: docker.io/library/redis:7
restart: unless-stopped
volumes:
- redisdata:/data

db:
image: docker.io/library/postgres:16
restart: unless-stopped
volumes:
- pgdata:/var/lib/postgresql/data
environment:
POSTGRES_DB: paperless
POSTGRES_USER: paperless
POSTGRES_PASSWORD: paperless

webserver:
image: ghcr.io/paperless-ngx/paperless-ngx:latest
restart: unless-stopped
depends_on:
- db
- broker
- gotenberg
- tika
ports:
- "8000:8000"
volumes:
- data:/usr/src/paperless/data
- /home/sascha/paperless-ngx:/usr/src/paperless/media
- ./export:/usr/src/paperless/export
- /home/sascha/paperless-ngx/consume:/usr/src/paperless/consume
env_file: docker-compose.env
environment:
PAPERLESS_REDIS: redis://broker:6379
PAPERLESS_DBHOST: db
PAPERLESS_TIKA_ENABLED: 1
PAPERLESS_TIKA_GOTENBERG_ENDPOINT: http://gotenberg:3000
PAPERLESS_TIKA_ENDPOINT: http://tika:9998

gotenberg:
image: docker.io/gotenberg/gotenberg:8.7
restart: unless-stopped

# The gotenberg chromium route is used to convert .eml files. We do not
# want to allow external content like tracking pixels or even javascript.
command:
- "gotenberg"
- "--chromium-disable-javascript=true"
- "--chromium-allow-list=file:///tmp/.*"

tika:
image: docker.io/apache/tika:latest
restart: unless-stopped

volumes:
data:
pgdata:
redisdata:
______

Die .env

PAPERLESS_TIME_ZONE=Europe/Berlin

PAPERLESS_OCR_LANGUAGE=deu

PAPERLESS_SECRET_KEY=123456

PAPERLESS_CONSUMER_RECURSIVE=true

PAPERLESS_CONSUMER_SUBDIRS_AS_TAGS=true

PAPERLESS_FILENAME_FORMAT={{ created_year }}/{{ document_type }}/{{ created_year }}-{{>

PAPERLESS_CONSUMER_ENABLE_BARCODES=true

PAPERLESS_CONSUMER_ENABLE_ASN_BARCODE=true
______

NAS .yml

services:
broker:
image: redis
container_name: Paperless-NGX-REDIS
restart: always
volumes:
- /volume1/docker/paperless-ngx/redis:/data

db:
image: postgres:16
container_name: Paperless-NGX-DB
restart: always
volumes:
- /volume1/docker/paperless-ngx/db:/var/lib/postgresql/data
environment:
POSTGRES_DB: paperless
POSTGRES_USER: paperless
POSTGRES_PASSWORD: paperless

webserver:
image: ghcr.io/paperless-ngx/paperless-ngx:latest
container_name: Paperless-NGX
restart: always
depends_on:
- db
- broker
ports:
- 8810:8000
volumes:
- /volume1/docker/paperless-ngx/data:/usr/src/paperless/data
- /volume1/docker/paperless-ngx/media:/usr/src/paperless/media
- /volume1/docker/paperless-ngx/export:/usr/src/paperless/export
- /volume1/docker/paperless-ngx/consume:/usr/src/paperless/consume
environment:
PAPERLESS_REDIS: redis://broker:6379
PAPERLESS_DBHOST: db
USERMAP_UID: 1026
USERMAP_GID: 100
PAPERLESS_SECRET_KEY: 123456
PAPERLESS_TIME_ZONE: Europe/Berlin
PAPERLESS_ADMIN_USER: admin
PAPERLESS_ADMIN_PASSWORD: 1234
PAPERLESS_OCR_LANGUAGE: deu+eng
PAPERLESS_CONSUMER_DELETE_DUPLICATES: true
PAPERLESS_CONSUMER_ENABLE_BARCODES: true
PAPERLESS_CONSUMER_RECURSIVE: true
PAPERLESS_CONSUMER_SUBDIRS_AS_TAGS: true
PAPERLESS_FILENAME_FORMAT: "{{ created_year }}/{{ document_type }}/{{ created_year }}-{{ created_month }}-{{ created_day }}_{{ title }}"
 
Zuletzt bearbeitet:

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