NAS Physisch geschrottet, Paperless Installation

Hallo zusammen,

ich habe mein Synology NAS geschrottet und muss es neu aufsetzen. Ich habe noch das Paperless Verzeichnis und retten können unter Docker. Vor einigen Wochen hatte ich das ganze Paperless auf die V3 angehoben.

Welche Pakete muß ich nun auf der NAS Installieren, um das ganze wieder zum Laufen zu bekommen?

Danke für Hilfe.

Gruß Juergen

Du wirst auch noch die Datenbank brauchen. Sonst musst Du alles neu einlesen und Taggen und so.

Hi,

Du installierst den Container Manager auf das gewünschte Volume, danach kannst du schon den gesicherten Paperless Ordner auf das Volume in den docker Ordner kopieren.
Dann noch schnell die docker-compose.yaml kontrollieren ob das Volume mit dem Synology Volume übereinstimmt. Falls nicht, die yaml Datei anpassen.

Sofern alle Daten und Datenbanken im Paperless Ordner und nicht im Container gespeichert wurden einfach wie gewohnt die die Container erstellen, als Projekt in Synology, in der Console oder als Stack in Portainer oder Dockhand.

Sofern alle Container erstellt wurden und laufen, ein paar Minuten warten und schaun ob du dich anmelden kannst.

Natürlich weis niemand was beim Crash mit den Ordnern passiert ist, deshalb in Zukunft regelmäßig den Export anstoßen und extern sichern.

Da niemand genau weiß was passiert ist kann dir da wohl niemand sagen ob sogar n kompletter einfacher weg möglich offensteht.

Wie schon erwähnt der ContainerManager reicht für nen Neustart.

Wenn du deine YML in die <> codebox kopierst kann man dir genauere Auskunft geben.

Also mein Paperless läuft wieder, aber es sind keine Dokumente übernommen worden.

Im Protokoll:

…[2026-08-30 07:04:38,292] [INFO] [paperless.sanity_checker] Detected following issue(s) with document #513, titled

Es werden alle Dokumente gefunden, aber anschließend sagt das Protokoll:

[2026-09-19 12:40:25,963] [WARNING] [paperless.sanity_checker] Orphaned file in media dir: /usr/src/paperless/media/documents/originals/2010/@eaDir

Die Dokumente liegen im Verzeichnis, Paperless findet die auch aber meint die werden verwaist…

Hat einer ne Idee dazu ?

Die können ja auch nicht automatisch gefunden werden. Der Verweis dazu steht normaler Weise dafür in der Datenbank. Hast Du die Datenbank denn auch gesichert?

Ansonsten hilft nur neu konsumieren lassen.

was genau steht dort im protokoll. lass bitte deine bemerkungen weg. Synology hat das Problem das es immer ein verzeichnis /@eaDir anlegt. Ist die Meldung gelb oder rot

Wie hast du paperless wieder zum laufen bekommen. Was genau hast du gemacht

[2026-09-19 14:42:43,759] [WARNING] [paperless.sanity_checker] Orphaned file in media dir: /usr/src/paperless/media/documents/originals/1964/@eaDir/00265_Rechnung 16.10.2023 Zahnarzt Juergen.pdf@SynoEAStream

[2026-09-19 14:42:43,759] [WARNING] [paperless.sanity_checker] Orphaned file in media dir: /usr/src/paperless/media/documents/archive/2022/@eaDir/00345_05.10.2022 Kardiologie Seite 1.pdf@SynoEAStream

[2026-09-19 14:42:43,759] [WARNING] [paperless.sanity_checker] Orphaned file in media dir: /usr/src/paperless/media/documents/thumbnails/0000120.webp

[2026-09-19 14:42:43,759] [WARNING] [paperless.sanity_checker] Orphaned file in media dir: /usr/src/paperless/media/documents/archive/2026/@eaDir/00418_Telekom SIM Karten 10.05.2026.pdf@SynoEAStream

[2026-09-19 14:42:43,759] [WARNING] [paperless.sanity_checker] Orphaned file in media dir: /usr/src/paperless/media/documents/archive/2023/@eaDir/00267_

[2026-09-19 14:42:43,759] [WARNING] [paperless.sanity_checker] Orphaned file in media dir: /usr/src/paperless/media/documents/originals/2025/00241_

[2026-09-19 14:42:43,759] [WARNING] [paperless.sanity_checker] Orphaned file in media dir: /usr/src/paperless/media/documents/originals/2021/@eaDir/00198_

[2026-09-19 14:42:43,759] [WARNING] [paperless.sanity_checker] Orphaned file in media dir: /usr/src/paperless/media/documents/thumbnails/0000468.webp

[2026-09-19 14:42:43,759] [WARNING] [paperless.sanity_checker] Orphaned file in media dir: /usr/src/paperless/media/documents/originals/2024/@eaDir/00355_

[2026-09-19 14:42:43,760] [WARNING] [paperless.sanity_checker] Orphaned file in media dir: /usr/src/paperless/media/documents/thumbnails/@eaDir/0000515.webp@SynoEAStream

[2026-09-19 14:42:43,760] [WARNING] [paperless.sanity_checker] Orphaned file in media dir: /usr/src/paperless/media/documents/thumbnails/0000270.webp

rc/paperless/media/documents/thumbnails/@eaDir/0000218.webp@SynoEAStream

[2026-09-19 14:42:48,443] [INFO] [paperless.tasks] LLM index is disabled, skipping update.

[2026-09-19 14:46:25,566] [INFO] [_granian.serve] Stopping worker-1

[2026-09-19 14:47:20,531] [INFO] [paperless.management.consumer] Processing existing files in /usr/src/paperless/consume

[2026-09-19 14:47:20,532] [INFO] [paperless.management.consumer] Watching /usr/src/paperless/consume using native file system events

[2026-09-19 14:47:21,546] [INFO] [paperless.asgi] [init] Paperless-ngx version: v3.2.0

[2026-09-19 14:47:21,547] [INFO] [_granian.serve] Started worker-1

[2026-09-19 14:50:23,727] [INFO] [_granian.asgi.io] ASGI transport error: „Closed(..)“

[2026-09-19 14:50:30,921] [INFO] [_granian.asgi.io] ASGI transport error: „Closed(..)“

Alles gelb, also Warnung

Analog zu den thumbs.db Dateien unter Windows legt Synology DSM Dateien für Vorschaubilder, etc. an. Diese werden in @eaDir Ordner gespeichert. Dies lässt sich nicht abschalten.

Deshalb lasse ich 1x am tag als root folgendes ausführen. Dabei werden diese Verzeichnisse gelöscht. Wenn du dann den die Plausibilitätsprüfung durchführst sollten die Meldungen nicht wieder auftauchen.

find /volume1/docker/paperless-ngx/media -name "@eaDir" -exec rm -rf {} +
find /volume1/docker/paperless-ngx/media -name "@SynoEAStream" -exec rm -rf {} +

Auch sollte dieser Befehl von Paperless auch funktionieren:

PAPERLESS_CONSUMER_IGNORE_DIRS=<json>

Additional directory names to ignore in the consumption directory. Directories matching these names (and all their contents) will be skipped.

This setting is for additional directories beyond the built-in defaults. Matching is done by directory name only, not full path.

Example:

["temp", "incoming", ".hidden"]

Defaults to [] (empty list, uses only built-in defaults).

The default ignores are [.stfolder, .stversions, .localized, @eaDir, .Spotlight-V100, .Trashes, __MACOSX] and cannot be overridden.

Die Fehlermeldungen sind weg. Aber die Dokumente sind nicht in Paperless vorhanden …

Bist du sicher dass du jetzt die gleiche Paperless Version wie beim Crash hast??
Alle V3.x sollten funktionieren, aber wer weis…

:/volume1/docker/paperless-ngx/config$ sudo docker-compose exec webs erver document_importer ../export/
Password:
System check identified some issues:

WARNINGS:
?: (paperless.W003) PAPERLESS_OCR_MODE=‚skip_noarchive‘ is not a valid value. Us e PAPERLESS_OCR_MODE=auto (and PAPERLESS_ARCHIVE_FILE_GENERATION=never if you us ed skip_noarchive) instead.
?: Filename format {created_year}/{title} is using the old style, please update to use double curly brackets
HINT: {{ created_year }}/{{ title }}

Found existing user(s), this might indicate a non-empty installation
Version mismatch: Currently 3.2.0, importing 2.20.13. Continuing, but import may fail.
Checking the manifest
Database import failed
Version mismatch: Currently 3.2.0, importing 2.20.13
Traceback (most recent call last):

Also ich habe eine alten Export von der Version 2.20.

Meine jetzige Installation ist 3.20

War es auch glaube ich vorher. Diese Daten liegen auch im Docker Verzeichnis.

Kann ich irgendwie Paperless überreden, die Daten nochmal aus dem Docker Verzeichnis einzulesen?

ersteinmal wenn du von version 2 auf version 3 umstellst muss du einige paperless einstellungen anpassen.
https://github.com/paperless-ngx/paperless-ngx/blob/dev/docs/migration-v3.md

wenn du ein backup von 2.20.15 hast musst du auch den importer mit der paperless version 2.20.15 starten.
wenn das sauber importiert wurde kannst du deine docker-compose.env und docker-compose.yml auf die Version 3 anpassen und auf die version 3.2.0 updaten. dann solltest du wieder zur Sicherheit ein Export starten und schauen ob dies jetzt fehlerfrei durchläuft.
Achte auch darauf das sowohl in Version 2 als auch in Version 3 PAPERLESS_FILENAME_FORMAT={{ title }}
2x die geschweifte Klammer hat.

Der Import muss immer mit der Version von Paperless gemacht werden mit der der Export erstellt wurde. Ansonsten führt das auch zu Fehler.

Also ich habe die Version 3.20 Installiert.

Wenn ich nun die Version 2.20.13 installiere über die yaml Datei, dann läuft Paperless nicht mehr.

Meine rudimentären Kenntnisse reichen für solche Fehler nicht aus.

ne 327, in check_consistent_history
paperless-webserver-1 | raise InconsistentMigrationHistory(
paperless-webserver-1 | django.db.migrations.exceptions.InconsistentMigrationHistory: Migration documents.1022_paperlesstask_squashed_1036_alter_savedviewfilterrule_rule_type is applied before its dependency django_celery_results.0011_taskresult_periodic_task_name on database ‚default‘.
paperless-webserver-1 | s6-rc: warning: unable to start service init-migrations: command exited 1
paperless-webserver-1 | /run/s6/basedir/scripts/rc.init: warning: s6-rc failed to properly bring all the services up! Check your logs (in /run/uncaught-logs/current if you have in-container logging) for more information.
paperless-webserver-1 | /run/s6/basedir/scripts/rc.init: fatal: stopping the container.

Das dieser Worstcase passiert ist, ist natürlich meine Schuld mangels fehlendem Export nach der Migration von Version 2 auf 3.

Ich Überlege gerade 2 Szenarien:

1). Ich lösche komplett alles, und mache die Version 3.20 drauf. Dann wieder alle Dokumente neu in Paperless anlegen. Die Orginal Dokumente habe ich alle als PDF vorliegen.

2). Ich lösche komplett alles, und mache kein Paperless mehr. Aber da bleibt eigentlich nur ecoDMS dann übrig, was ich eigentlich auch nicht wollte.

egal ob du dich für Szenarium 1 oder 2 entscheidest ist das aller wichtigste das Backup. Ich komme von Elooffice und bin dann für ein paar Monate bei ecoDMS (kostenpflichtig immer für 1 Jahr) hängen geblieben. Irgendwie hat mir das nicht gefallen und ich lernte Paperless kennen. Von Anfang an war die Datensicherung das wichtigste. Heute wird jeden Tag ein Backup gezogen und in einem separaten Verzeichnis auf dem NAS gespeichert. Es werden automatisch 14 Tage vorgehalten bis dann das älteste glöscht wird so das immer 14 Backups vorgehalten werden (zip-Datei). 2026-09-18_21-00-06_SYNOLOGY_paperless-v3_1_3 und jetzt 2026-09-19_21-00-06_SYNOLOGY_paperless-v3_2_0 . Bin jetzt von der Datenbankversion 17 auf 18 umgestiegen und das ganze mit dem Restore dauerte ca. 20 min. Es gibt verschiedene Lösungsansätze für ein Backup und Restore. Da das ganze NAS bei mir mit einer externen Festplatte gesichert wird (regelmässig) muss ich nicht die Backups von Paperless zusätzlich extern speichern. Ich weiss ja nicht wieviele Dokumente du zur Zeit in Paperless hast. Wenn du auf die Version 3.2.0 gehst bedenke bitte das deine docker-compose.env und docker-compose.yml für die Version 3 angepasst ist. Sonst läuft es von Anfang an nicht rund.
Erstelle dir eine Test Paperless Instanz auf der Synology und teste erst alles durch bevor du anfängst eine produktive Paperless Instanz umzusetzen.

Guten Morgen,

vielen Dank für Deine ausführliche Antwort. Ich habe nur so ungefähr 600 Dateien in Paperless

Bis jetzt hatte ich nur immer einen Export gemacht. Aber wenn man so dämlich ist wie ich, nach einer Migration den Export vergisst, dann passiert es eben .

Automatisiert hört sich gut an.

Was sicherst Du genau? Das Verzeichnis paperless unter docker?

Gibt es da noch andere Dateien die man ggf. sichern sollte? Machst Du das mit einem Script/Batchdatei?

Gruß Juergen

Ich stoppe nachts per Synology Aufgabenplaner die Paperless Instanz und sichere per Hyperbackup den Ordner Docker mit allen Unterordnern. Per Aufgabenplaner wird dann Paperless wieder gestartet.

Stopp um Mitternacht

Start um 03:00 Uhr

hier eine möglichkeit ein backup zu erstellen.
du legst unter /volume1/docker/paperless-ngx/config eine Datei mit dem namen z.b. backup.sh an.
kopierst dieses script hinein.
mit sudo chmod +x backup.sh machst du das backup ausführbar.
mit ./backup.sh startest du das backup.

Um das ganze automatisch zu starten gehst du in den Aufgabenplaner und legst eine neue Aufgabe an.
Vergebe einen Namen und wähle den Benutzer root aus.
Im Zeitplan lege fest wann das Backup automatisch gestartet werden soll
In den Aufgabeneinstellungen trage dies hier jetzt noch ein:
bash /volume1/docker/paperless-ngx/config/backup.sh

Der Dateiname des Backup besteht aus dem aktuellem Datum und der Paperless-Version die zur Zeitbeim Backup aktuell ist. Sollte einmal etwas mit deinem Paperless sein und du musst eine Neuinstallation machen weisst du sofort welche Paperless Version du installieren musst.

mit diesem script werden die backups im export ordner gespeichert. du hast die möglichkeit die anzahl im script auch zu erhöhen. wenn die anzahl erreicht werden wird immer das älteste backup gelöscht. Natürlich solltest du die backup ausserhalb deines NAS sichern.

#!/bin/bash
# Skript: paperless-backup.sh
# Erstellt den Paperless-Export für die Synology-Instanz.

CURRENT_DATE=$(date +"%Y-%m-%d")

# Maximale Anzahl an Backups im Export-Verzeichnis
MAX_BACKUPS=5

# Verzeichnisse
CONFIG_DIR="$(cd "$(dirname "$0")" && pwd)"
BASE_DIR="$(dirname "$CONFIG_DIR")"
EXPORT_DIR="${BASE_DIR}/export"

echo "Starte Backup: Ein Backup wird jetzt durchgeführt..."

cd "$CONFIG_DIR" || { echo "Fehler: Verzeichnis $CONFIG_DIR nicht gefunden."; exit 1; }

# Paperless-Version ermitteln (für den Dateinamen)
PAPERLESS_VERSION=$(sudo docker compose exec -T webserver python3 -c "from paperless import version; print(version.__full_version_str__)" 2>/dev/null | tr -d '\r\n')
if [ -z "$PAPERLESS_VERSION" ]; then
  echo "Warnung: Paperless-Version konnte nicht ermittelt werden, verwende 'unknown'."
  PAPERLESS_VERSION="unknown"
fi
PAPERLESS_VERSION_SAFE=$(echo "$PAPERLESS_VERSION" | tr '.' '_')

BACKUP_NAME="${CURRENT_DATE}_v${PAPERLESS_VERSION_SAFE}"

sudo docker compose exec webserver document_exporter ../export -z -zn "$BACKUP_NAME"

if [ $? -eq 0 ]; then
  echo "Export erfolgreich abgeschlossen. Datei liegt in $EXPORT_DIR bereit."

  # Alte Backups bereinigen: älteste löschen, bis MAX_BACKUPS erreicht
  BACKUP_COUNT=$(ls -1 "$EXPORT_DIR"/*.zip 2>/dev/null | wc -l)
  if [ "$BACKUP_COUNT" -gt "$MAX_BACKUPS" ]; then
    DELETE_COUNT=$(( BACKUP_COUNT - MAX_BACKUPS ))
    echo "Bereinigung: $BACKUP_COUNT Backups gefunden, lösche $DELETE_COUNT älteste..."
    ls -1t "$EXPORT_DIR"/*.zip | tail -n "$DELETE_COUNT" | while read -r OLD_BACKUP; do
      rm -f "$OLD_BACKUP"
      echo "Gelöscht: $OLD_BACKUP"
    done
  else
    echo "Backup-Anzahl ($BACKUP_COUNT/$MAX_BACKUPS) – keine Bereinigung nötig."
  fi
else
  echo "Fehler beim Backup."
fi

Es gibt aber auch die Möglicheit die Datenbank zu sichern und dazu noch die Verzeichnisse Data und media.
Aber das wäre ein anderes Thema.

Wenn du am experimentieren bist kannst du auf der synology das Tool Snapshot Replication nutzen um eine Art Momentaufnahme zu erstellen und wenn alles schiefläuft wieder zurück zu spielen