Ich habe Paperless-NGX als Docker-Container neben einer Nextcloud-Installation betrieben. Nextcloud läuft als rootless Docker-Container mittels Podman. Eine Verbindung zwischen den Verzeichnissen „consume“ und „archive“ von Paperless und Nextcloud wurde eingerichtet, jedoch mussten einige Herausforderungen gelöst werden.
Die Verzeichnisse von Paperless als Volume direkt in Nextcloud einzubinden, war aufgrund von Berechtigungsproblemen nicht möglich:
Paperless verwendet standardmäßig paperless (UID=1000) als Benutzer innerhalb des Containers.
Nextcloud läuft als rootless Docker-Container mit einem anderen Benutzer (UID=33, standardmäßig für www-data).
Dies führte zu Zugriffsproblemen, da die Berechtigungen der Verzeichnisse zwischen den beiden Containern inkompatibel waren.
Um dieses Problem zu umgehen, habe ich folgende Ansätze evaluiert und umgesetzt:
Eine mögliche Lösung wäre, beide Container mit denselben Benutzer- und Gruppen-IDs auszuführen. Dies kann durch das Setzen der Umgebungsvariablen USERMAP_UID und USERMAP_GID auf 1000 erreicht werden:
USERMAP_UID=1000
USERMAP_GID=1000
Diese Methode würde es ermöglichen, dass beide Container Zugriff auf dieselben Verzeichnisse haben. In meinem Fall war Paperless bereits so konfiguriert, jedoch habe ich mich für eine andere Lösung entschieden, da der Aufwand für die Anpassung von Nextcloud nicht unerheblich war.
Stattdessen habe ich einen FTP-Server (vsftpd) als Vermittler zwischen Paperless und Nextcloud eingerichtet. Der Workflow sieht wie folgt aus:
Paperless speichert exportierte Dokumente direkt auf ein Volume.
Nextcloud synchronisiert diese Verzeichnisse über FTP, periodisch über die interne OCC-Dateiscanschnittstelle. Die Synchronisierung durch Nextcloud ist sehr unzuverlässig. Vor allem, weil Dateiänderungen durch Paperless nicht registriert werden. Durch das triggern einer Synchronisation bemerkt das der User des Nextcloud Shares nicht.
Der Vorteil dieser Methode ist, dass beide Container unabhängig voneinander laufen können, ohne dass Berechtigungen direkt synchronisiert werden müssen.
Für ein Backup der exportierten Dokumente aus Paperless nutze ich den folgenden Befehl:
podman exec -ti dmsserver_webserver_1 document_exporter ../export
Hierbei wird der document_exporter von Paperless aufgerufen, um die Dokumente in das angegebene Verzeichnis zu exportieren.
Wichtig: Wenn Dokumente von Nextcloud in das Paperless-Archiv verschoben (nicht kopiert) werden, sind sie nicht mehr im Datenbestand von Nextcloud verfügbar. Daher ist eine regelmäßige Datensicherung beider Datenbestände (Nextcloud und Paperless) essenziell.
Die Verzeichnissynchronisation in Nextcloud erfolgt über einen Crontab-Job, der den folgenden Befehl ausführt:
podman exec -u 33 nextcloud ./occ files:scan archiv
Dabei ist zu beachten:
Der Benutzer archiv in Nextcloud teilt die relevanten Verzeichnisse.
Der OCC-Scan bezieht sich ausschließlich auf die FTP-Shares. Dies beschleunigt die Synchronisation erheblich.
Ein vollständiger Scan der Verzeichnisse eines normalen Nutzers würde ungefähr 5 Minuten dauern.
Die Kombination von Paperless-NGX und Nextcloud bietet eine leistungsfähige Lösung für Dokumentenmanagement und -archivierung. Mit dem Umweg über einen FTP-Server konnten Berechtigungsprobleme elegant umgangen werden, ohne die Flexibilität der beiden Systeme einzuschränken.
Weitere Optimierungen sind möglich, insbesondere wenn die beiden Container zukünftig mit einer einheitlichen Benutzer-ID betrieben werden.