Ein paar irrelevante Tutorials

Paperless NGX

Paperless NGX ist eine einfach zu bedienende Lösung zur Verwaltung von Dokumenten. Es kann PDF-Dateien, Office-Dokumente, Bilddateien und Mails verarbeiten.

Installation

Am Einfachsten und zu empfehlen ist die Installation als Docker-Container.

Vorbereitung Docker

Zunächst wird eine Docker-Laufzeitumgebung benötigt. Ubuntu bringt eine Docker-Umgebung mit. Allerdings funktioniert diese mitgelieferte Umgebung oftmals und hier konkret mit den Paperless-Paketen nicht. Darum ist eine Installation von Docker auf der Grundlage der Docker-Dokumentation zuverlässiger (s. https://docs.docker.com/engine/install/ubuntu/). Das habe ich in dem Beitrag über Docker beschrieben.

Installation Paperless NGX

Die eigentliche Installation von Paperless NGX kann bequem über das Install-Script vorgenommen werden:

$ bash -c "$(curl --location --silent --show-error https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/main/install-paperless-ngx.sh)"

Im folgenden Dialog können die meisten Vorgaben übernommen werden. Wichtig ist, die Frage nach der Installation von TIKA zu bejaen, damit auch Office-Dokumente und Mails verarbeitet werden. Wenn Paperless NGX nicht über eine Domain erreichbar sein soll und wird, dann kann diese entsprechende Frage leer bestätigt werden. Bei den Fragen nach den Pfaden, sollten zumindest die Pfade für consume und Media auf das lokale Homeshare gelegt werden

Freigabe des Consume-Ordners für den Scanner

Damit direkt in das DMS gescannt werden kann, muss der Scanner Dateien im Consume-Ordner ablegen können. Wenn dazu das SMB-Protokoll genutzt werden soll, dann ist auf dem DMS-Server ein Samba-Server zu installieren und eine entsprechende Freigabe einzurichen. Die Freigabe wird in der Datei "/etc/samba/smb.conf" eingetragen:

   [paperless]
comment = Paperless Eingangsordner
path = /home/andreas/paperless-ngx/paperless-ngx/consume
browsable = yes
read only = no
guest ok = no

Nach jeder Änderung der smb.conf ist der Samba-Server neu zu starten:

sudo systemctl daemon-reload && sudo systemctl restart smbd

Nun ist der Consume-Ordner als Freigabe im Netz verfügbar. Verarbeitbare Dateien (Office-Dateien, Mails, Textdateien, Grafiken und natürlich PDF), die in diesen Ordner geschrieben werden, werden von Paperless-NGX verarbeitet.

Datensicherung

Mein DMS-Server, ein LXC auf einem Proxmox-Host, wird jede Nacht auf den Proxmox-Backup-Server gesichert und kann komplett zurück gesichert werden und es kann auch ein Filerestore vorgenommen werden. Da der PBS immer sieben Sicherungen aufbewahrt, kann jederzeit auf die Stände der letzten sieben Tage zurück gesichert werden.

Zur Offsite-Sicherung wird jeden Tag um 12:00 Uhr eine verschlüsselte, inkrementelle Sicherung des Eportproduktes per duplicati durchgeführt. Dazu wird zunächst per Cronjob um 11:30 Uhr der Export durchgeführt:

30 11   * * *   andreas docker exec paperless-webserver-1 document_exporter /usr/src/paperless/data/export

Der Pfad "/usr/src/paperless/data/" ist in der docker-compose-yml für Duplicati (s. dort) hinterlegt und entspricht auf dem DMS-Server dem Pfad "/home/andreas/paperless-ngx/paperless-ngx/data". Dort ist ein Verzeichnis "export" eingerichtet, in das dann per cronjob und exporter die Export-Dateien abgelegt werden.

Dieses Verzeichnis ist per Samba freigegeben. Dazu steht in der Datei "/etc/samba/smb.conf" des DMS-Servers:

   [export]
comment = Export von Paperless-NGX
path = /home/andreas/paperless-ngx/paperless-ngx/data/export
browsable = yes
read only = no
guest ok = no

Dieses Verzeichnis ist auf dem Server, auf dem Duplicati läuft, unter "/export" gemounted:


//10.10.0.110/export /export cifs vers=3.0,username=ichhalt,password=**********,uid=1000,gid=1000 0 0

In der Datei "docker-compose.yml" für Ducati ist dieses Verzeichnis als Volume eingetragen:

         volumes:
...
- /export:/dms-export

In Duplicati ist nun ein Sicherungsjob namens "dms", eingerichtet, der die Daten täglich um 12:00 Uhr incrementell und verschlüsselt in das Verzeichnis "/backup/dms" sichert. Das Verzeichnis "backup" ist in der Datei "docker-compose.yml" als Volume mit dem Ziel "/remote-backup" eingetragen.
Das Verzeichnis "/remote-backup" auf dem Duplicati-Server ist eine SMB-Freigabe auf einen vServer von Netcup, auf den per Wireguard-Tunnel zugegriffen wird, und die auf dem Duplicati-Server gemounted ist.  

Die nachfolgende Grafik veranschaulicht das Prinzip (hoffentlich):

Updates

Updates können bequem durch Aktualisierung Container durchgeführt werden. Dazu wechselt man zunächst auf der Linux-Konsole in den Ordner mit der entsprechenden YAML-Datei (docker-compose.yml).

cd /home/andreas/paperless-ngx

Dort setzt man den Befehl zum Stoppen des Containers ab:

docker-compose down

Dann pullt man die aktuelle Version:

docker-compose pull

Das funktioniert, wenn wir bei der Installation die Version "latest" vorgegeben haben. Danach muss die neue Version gestartet werden:

docker-compose up -d

Wenn das ohne Fehlermeldungen durchgelaufen ist, dann ist die Paperless NGX-Instanz aktualisiert.

Migration/Umzug

Für eine Migration oder einen Umzug müssen zunächst die Quell- und die Zielinstanz in der selben Version vorliegen. Ggf. ist zunächst ein Update durchzuführen. Dann wird von der Quellinstanz der Export durchgeführt:

docker exec -it paperless-webserver-1 document_exporter ../data/export

Die Daten liegen dann im Verzeichnis ../data/export (also z.B. "/home/andreas/paperless-ngx/data/export").

Zum Importieren müssen sie zunächst auf den Zielserver übertragen werden. Wenn sie in den oben genannten Ordner kopiert wurden, dann können sie nun mit dem Befehl

docker exec -it paperless-webserver-1 document_importer ../data/export

importiert werden. Dadurch wird die Datenbank überschrieben und alle Daten werden importiert. Der Name des betreffenden Containers (hier "paperless-webserver-1" genannt) muss natürlich passen. Er kann mit 

docker ps

ausgelesen werden.

Hinweis

Das hat erst geklappt, nachdem ich die Daten mit

docker cp export paperless-webserver-1:/usr/src/paperless/export

vom Verzeichnis /home/andreas/paperless-ngx/export in den Container kopiert habe. Dann konnte ich 

docker exec -it paperless-webserver-1 document_importer /usr/src/paperless/export/export

ausführen und der Import startete.

Trouble Shooting

Wenn der Webserver nach einem Neustart des Servers nicht auf Port 8000 lauscht, dann hilft es, zunächst die Firewall des Server temporär zu deaktivieren und den Webserver (über Portainer) neu zu starten. Danach kann die Firewall wieder aktiviert werden.