Paperless-NGX: Papierloses Büro mit Synology NAS und Docker
Dokumentenverwaltung Paperless-ngx mit Docker auf einem Synology NAS installieren.
Inhaltsverzeichnis
Paperless-ngx Dokumentenverwaltung
Paperless-NGX ist eine Open-Source-Dokumentenverwaltungssoftware bzw. ein Dokumenten-Management-System (DMS), das darauf abzielt, den Papierverbrauch in Büros und anderen Arbeitsumgebungen zu reduzieren, indem es die Verwaltung von Dokumenten elektronisch ermöglicht. Mit Paperless-ngx können Benutzer Dokumente organisieren, verwalten und von jedem Gerät aus darauf zugreifen. Die Software bietet auch verschiedene Funktionen wie OCR (Optical Character Recognition), um Dokumente digital durchsuchbar zu machen. Die Verwendung von Paperless-ngx kann dazu beitragen, den Papierverbrauch zu reduzieren und die Effizienz in der Arbeitsumgebung zu verbessern.
Warum Paperless-ngx ausprobieren?
- Es ist kostenlos und Open-Source
- Die Dokumente bleiben im eigenen Besitz
- Die archivierten Dokumente liegen strukturiert auf dem NAS, sodass man nicht auf ewig an Paperless gebunden wird
- Paperless-ngx ist einfach zu installieren und zu bedienen
Glossar: Wichtige Begriffe und Technologien
Begriff | Beschreibung |
---|---|
ARM-CPU | Prozessorarchitektur, die von einigen Synology NAS-Geräten verwendet wird. |
Caddy | Alternativer Reverse-Proxy-Server. |
Cloud Sync | Synology-Dienst zur Synchronisierung von Daten mit Cloud-Speicherdiensten. |
Docker | Containerisierungsplattform für die Installation und Ausführung von Paperless-NGX. |
Gotenberg | Tool zur Konvertierung von Dokumenten in PDF-Dateien. |
IMAP | Protokoll zum Empfangen von E-Mails. |
Nginx Proxy Manager | Reverse-Proxy-Server, der den Zugriff auf Paperless-NGX von außerhalb des Netzwerks ermöglicht. |
OCR (Optical Character Recognition) | Technologie zur Texterkennung in gescannten Dokumenten. |
Paperless-ng | Vorgängerversion von Paperless-NGX |
Paperless-NGX | Open-Source-Dokumentenverwaltungssoftware |
Portainer | Grafische Benutzeroberfläche zur Verwaltung von Docker-Containern. |
PostgreSQL | Datenbankmanagementsystem für die Speicherung von Paperless-NGX-Daten. |
Redis | In-Memory-Datenspeicher, der als Message Broker für Paperless-NGX verwendet wird. |
SMTP | Protokoll zum Senden von E-Mails. |
SQLite | Alternative Datenbankoption für Paperless-NGX. |
Synology NAS | Network Attached Storage-Gerät, auf dem Paperless-NGX installiert werden kann. |
Installation auf Synology NAS mit Docker
Ich habe bereits eine Anleitung zur Installation auf einem Linux Server im Blog veröffentlicht. Mit der Zeit wurde es etwas unübersichtlich. Als dann die erste Version von Paperless-NGX als Nachfolger von Paperless-ng veröffentlicht wurde, habe ich beschlossen einen eigenen Blogpost für die Installation auf einem Synology NAS zu veröffentlichen. In dieser Anleitung beschreibe ich auf Deutsch, wie man Paperless ngx mithilfe von Docker auf einem Synology-NAS installiert.
Voraussetzungen
Für diese Anleitung wird ein Synology-NAS benötigt. Ich selbst nutze ein Synology DS220+(Amazon Affiliate-Link) mit zusätzlichen 8 GB RAM(Amazon Affiliate-Link). So viel RAM ist nicht zwingend notwendig. Es hängt auch stark davon ab, wie viele andere Anwendungen auf dem NAS parallel laufen. Mindestens 1 GB ist jedoch empfehlenswert. Wenn man viele Dokumente mit OCR bearbeiten möchte und auch Docx-Dokumente mit Tika und Gotenberg hochladen und konvertieren möchte, wären eher 2 GB wünschenswert.
Auf dem Synology NAS sind Docker aus dem Paket-Zentrum sowie Portainer, wie hier beschrieben, installiert. Wir möchten Paperless in einem Docker-Container installieren. Portainer ermöglicht die Nutzung einer docker-compose Datei in einer grafischen Oberfläche, dadurch wird die Installation vereinfacht. Ferner wird auch die Verwaltung der Container erleichtert. Auf die anderen Möglichkeiten (Compose über SSH oder Ausführung über Aufgabenplaner usw.) möchte ich hier nicht eingehen.
Das Dokumentenmanagement Paperless-ngx läuft natürlich auch auf einem NAS eines anderen Herstellers wie QNAP oder ASUSTOR, insbesondere dann, wenn Portainer installiert ist und das NAS eine x64 CPU hat. Nur die Vorbereitung wie die Erstellung der Freigabeordner ist dann etwas anders. Am Ende müssen aber auch hier die Container in Docker laufen.
(Optional) Im Netzwerk befindet sich ein Nginx Proxy Manager, dieser kann aber auch bei Bedarf auf dem Synology NAS selbst installiert werden. Des Weiteren sorgt ein DNS-Server für die interne Weiterleitung. Damit ist es möglich, dass Paperless nicht nur über {IP-Adresse-Synology}:{Portnummer}
aufgerufen werden kann, sondern über so etwas wie dms.domain.de
. Ermöglicht wird dadurch auch auf Wunsch der externe Zugriff.
(Optional) Eine E-Mail-Adresse, die von Paperless gescannt werden darf. Damit ist es möglich, dass Anhänge aus E-Mails automatisch in Paperless archiviert werden. Man kann dazu natürlich auch einen eigenen Mail-Server benutzen. An diese Adresse leitet man dann E-Mails mit Anhängen weiter, die archiviert werden sollen. Die Anhänge werden geladen, die E-Mail kann automatisch verschoben oder gelöscht werden.
(Optional) Netzwerkscanner. Ich selbst nutze einen Xerox 6515DNI (Amazon Affiliate-Link), der entweder einen Scan an die oben erwähnte E-Mail-Adresse senden oder auch die Datei direkt ins NAS ablegen kann (wenn er gerade nicht Probleme damit hat, es zu finden). Dadurch spart man sich den Schritt des manuellen Uploads. Möchte man keinen Drucker, sondern nur einen Scanner haben, ist der Brother ADS-1700W (Amazon Affiliate-Link) empfehlenswert.
(Optional) Speicher zur Sicherungskopie. Dabei lassen sich auch solche Dienste wie Google Drive oder Microsoft OneDrive nutzen sowie andere WebDAV-Speicher. Natürlich kann man für ein Backup auch etwas Simples wie eine externe Festplatte nehmen. Man sollte nicht vergessen, dass RAID kein Backup ist.
(Optional) Android Smartphone. Dafür gibt es die beiden Apps Paperless und Paperless Share, die die Handhabung von Paperless mit einem Android-Smartphone erleichtern.
Systemauslastung
Nachdem ich alle nötigen Container gestartet habe, sieht die Systemauslastung im Leerlauf folgendermaßen aus (Werte aus dem Container Manager):
Service | RAM |
---|---|
Gotenberg | 42 MB |
Paperless | 904 MB |
Postgres | 90 MB |
Postgres-Backup | 20 MB |
Redis | 20 MB |
Tika | 234 MB |
Vorbereitung
Neuer Benutzer anlegen
Aus Sicherheitsgründen empfiehlt es sich, für den Paperless-Container einen separaten Benutzer anzulegen, anstatt das Administrator-Konto zu verwenden. Dazu erstellen wir zunächst eine “docker” Gruppe.
Anschließend legen wir einen neuen Benutzer an. Für eine noch granularere Rechtevergabe könnte man an dieser Stelle auch den Benutzer “paperless” erstellen.
Diesen Benutzer fügen wir der Docker-Gruppe hinzu.
Um die UserID des erstellten Benutzers und die GruppenID der “docker” Gruppe herauszufinden, aktivieren wir temporär den SSH-Dienst und verbinden uns über ein Terminal mit dem NAS.
ssh adminbenutzername@{ip-adresse-vom-nas}
Mit folgendem Befehl erhalten wir die UserID des docker-Benutzers:
id docker
Die Ausgabe sollte etwa so aussehen:
uid=1010(docker) gid=100(users) groups=100(users),65555(docker)
In diesem Beispiel notieren wir uns die 1010 als UserID und die 65555 als GruppenID.
exit
Anschließend schalten wir den SSH-Dienst wieder aus.
Neue Ordner
Als nächstes erstellen wir einen neuen Freigabeordner ohne Prüfsummen-Check.
Synology schreibt dazu Folgendes:
Um die Qualität der Dienste sicherzustellen, empfehlen wir, Daten-Prüfsumme nicht zu aktivieren, wenn der freigegebene Ordner für folgende Dienste genutzt wird:
- Hosting von Datenbanken oder virtuellen Maschinen
- Speichern von Videoaufnahmen von Surveillance Station
- Ausführen von Diensten, die kleine oder zufällige Schreiboperationen erfordern
Auch wenn es sich in unserem Fall nicht um eine Datenbank mit vielen Schreiboperationen handelt, verzichten wir auf den Prüfsummencheck.
Die Docker-Gruppe benötigt Zugriffsrechte auf den Ordner.
Auch der Docker-Benutzer sollte Zugriffsrechte erhalten.
Im paperless-Ordner erstellen wir folgende Unterordner:
- data
- db
- db-backup
- export
- media
- redis
Zusätzlich legen wir im Home-Verzeichnis einen Ordner an, aus dem Paperless automatisch Dokumente extrahieren soll.
Alternativ könnte man dem Netzwerk-Scanner ein eigenes Benutzerkonto auf der DiskStation zuweisen und den Inbox-Ordner im Homeverzeichnis dieses Benutzers anlegen. So benötigt der Scanner keinen Zugriff auf das Hauptkonto, kann aber dennoch in diesen Ordner scannen. Eine weitere Option wäre die Erstellung eines zusätzlichen Freigabeordners, wenn man auch manuell Dateien dort ablegen möchte.
Für den Inbox-Ordner passen wir die Berechtigungen an. Der Docker-Benutzer erhält Schreib- und Leserechte, ebenso der Netzwerk-Scanner und der eigene Benutzer.
Damit sind alle Vorbereitungen abgeschlossen.
Patrick hat mich darauf aufmerksam gemacht, dass der Inbox-Ordner sich nicht richtig verhält, solange man Synology Drive nutzt.
“Derzeit kann der Server von Synology Drive keine Dateiänderungen in einem Ordner erkennen, der an einen Docker-Container angebunden ist. Synology Drive Server, Client und ShareSync können keine Dateien mit Docker angebundenen Ordnern synchronisieren. Die Einschränkung wird hier erwähnt und hier. Derzeit gibt es keine Möglichkeit, es ordnungsgemäß zu machen. Es gibt leider auch kein Binärprogramm, das für diesen Fall ausgelöst werden könnte. Die Dateien müssten stattdessen direkt vom Hostsystem gelöscht werden, anstatt vom Container.”
Firewall
Um sicherzustellen, dass die erstellten Container miteinander kommunizieren können, empfiehlt es sich bei einer restriktiven Firewall entweder gleich den kompletten internen IP-Bereich freizugeben oder nach der Installation die von den Containern verwendeten IP-Adressen zu überprüfen. Andernfalls kann es vorkommen, dass die Container nicht miteinander kommunizieren können und der Datenbank-Container vom Paperless-Container nicht gefunden wird.
Installation
Paperless unterstützt PostgreSQL und SQLite für die Speicherung der Daten. Da mehrere Vorgänge gleichzeitig geschrieben werden können, wird jedoch empfohlen PostgreSQL zu verwenden, da SQLite in dieser Hinsicht seine Grenzen hat.
Deshalb wollen wir auch hier Paperless-ngx mit einer PostgreSQL-Datenbank nutzen. Zudem muss ein Redis-Broker eingesetzt werden. Redis ist dafür verantwortlich, Aufgaben vom Webserver zum Aufgabenplaner zu bringen.
Ich habe die letzten Wochen Paperless-ngx mit Redis 7.0 und PostgreSQL 16 genutzt (statt ursprünglich 6.0 und 13). Es lief stabil und ohne jegliche Probleme. Deshalb nutze ich hier diesmal diese neueren Versionen. Zudem starte ich einen Container, der für das Backup automatisch jede Woche einen dump der Datenbank erstellt. Weiterhin auch Tika/Gotenberg, um nicht nur PDFs, sondern auch Office-Dokumente (wie “.docx”, “.doc”, “.odt”, “.ppt”, “.pptx”, “.odp”, “.xls”, “.xlsx” und “.ods”) verarbeiten zu können.
Seit Version 1.11.0 von Paperless werden auch bei E-Mails nicht nur die Anhänge verarbeitet, sondern auch der Text der E-Mail selbst kann mit Gotenberg archiviert werden.
Wir rufen Portainer auf und können mit der Installation beginnen.
Neuer Stack (Docker-Compose)
Unter Stacks kann nun ein neuer Stack hinzugefügt werden.
Wenn dieser Menüpunkt fehlt, sollte man erneut sichergehen, dass man die lokale (“local”) Umgebung ausgewählt hat und Portainer mit dem Image portainer/portainer-ce und nicht portainer/portainer betrieben wird.
Hier fügen wir den Docker Compose Code ein.
networks:
internal:
external: false
services:
broker:
container_name: paperless-redis
image: redis:7
# Wenn man lieber 6.0 nutzen möchte
# image: redis:6.0
networks:
- internal
volumes:
# Hier den richtigen Pfad eintragen
- /volume1/paperless/redis:/data
# - /volume2/paperless/redis:/data
restart: unless-stopped
user: "1010:65555" # BenutzerID und GruppenID des Docker-Benutzers
sysctls:
- net.core.somaxconn=511
cap_add:
- SYS_RESOURCE
deploy:
resources:
limits:
memory: 256M
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 30s
timeout: 5s
retries: 3
db:
container_name: paperless-db
image: postgres:16
# Wenn man lieber die 13 Version von PostgreSQL möchte
# image: postgres:13
# Nicht einfach up- oder downgraden, die Datenbank wird dann nicht mehr laden.
networks:
- internal
restart: unless-stopped
volumes:
# Hier den richtigen Pfad eintragen
- /volume1/paperless/db:/var/lib/postgresql/data
# - /volume2/paperless/db:/var/lib/postgresql/data
environment:
POSTGRES_DB: paperless
POSTGRES_USER: paperless
# Hier ein anderes Passwort verwenden
POSTGRES_PASSWORD: xzdN19DTd3CxWOuXP6eSyfhB19HRAx
deploy:
resources:
limits:
memory: 512M
healthcheck:
test: ["CMD", "pg_isready", "-U", "paperless"]
interval: 30s
timeout: 5s
retries: 3
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "5"
webserver:
container_name: paperless
image: ghcr.io/paperless-ngx/paperless-ngx:2.9
networks:
# Wenn sich der Proxy Manager auf der Synology befindet, sollte hier zusätzlich das Netzwerk davon eingetragen werden, statt einen Port freizugeben.
- internal
restart: unless-stopped
depends_on:
- db
- broker
ports:
# Diesen Teil löschen, wenn der Proxy Manager auf der Synology ist.
# Ansonsten hier einen Port auswählen, der frei ist.
- 8010:8000
# - 8011:8000
# - 8012:8000
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000"]
interval: 30s
timeout: 10s
retries: 5
volumes:
# Hier die richtigen Pfade eintragen
- /volume1/paperless/data:/usr/src/paperless/data
- /volume1/paperless/media:/usr/src/paperless/media
- /volume1/paperless/export:/usr/src/paperless/export
- /volume1/homes/benutzername/Paperless-Inbox:/usr/src/paperless/consume
environment:
PAPERLESS_REDIS: redis://broker:6379
PAPERLESS_DBHOST: db
PAPERLESS_DBPASS: xzdN19DTd3CxWOuXP6eSyfhB19HRAx # Das ist das Passwort von oben
USERMAP_UID: 1010 # UserID für den docker Benutzer
USERMAP_GID: 65555 # GruppenID für den docker Benutzer
PAPERLESS_OCR_LANGUAGES: eng deu
# Hier einen zufälligen Key eintragen, wenn man Paperless von Außen erreichbar machen möchte.
PAPERLESS_SECRET_KEY: C3Q2dLkVPqZWDKTXgkHwWhJ6jk8XqAbeDmDZjCxvb3c2jXl6pTGQXqJFqEkS9umFmXrk4WmzT8rlwjqWan6A2G54Q5IgraBv96CS
# Hier die eigene Domain hinter localhost eintragen, wenn man einen Proxy Host benutzt, ansonsten diese Umgebungsvariable löschen.
PAPERLESS_ALLOWED_HOSTS: "localhost,paperless.domain.de"
PAPERLESS_TIME_ZONE: Europe/Berlin
PAPERLESS_OCR_LANGUAGE: deu
# Hier anpassen, wenn man eine andere Ordnerstruktur haben möchte
PAPERLESS_FILENAME_FORMAT: "{created_year}/{correspondent}/{title}"
# Die nächsten drei Zeilen weglassen, wenn man Tika/Gotenberg nicht einsetzen möchte.
PAPERLESS_TIKA_ENABLED: 1
PAPERLESS_TIKA_GOTENBERG_ENDPOINT: http://gotenberg:3000/ #bzw. http://gotenberg:3000/forms/libreoffice/convert#
PAPERLESS_TIKA_ENDPOINT: http://tika:9998
# Die nächste Zeile setzen, wenn man einen Proxy Server benutzt.
PAPERLESS_URL: "https://paperless.domain.de"
deploy:
resources:
limits:
memory: 2048M
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "5"
db-backup:
container_name: paperless-db-backup
# Das Image ggf. an das obere anpassen
image: postgres:16
volumes:
# Hier den richtigen Pfad eintragen
- /volume1/paperless/db-backup:/dump
- /etc/localtime:/etc/localtime:ro
environment:
PGHOST: db
PGDATABASE: paperless
PGUSER: paperless
PGPASSWORD: xzdN19DTd3CxWOuXP6eSyfhB19HRAx # Das ist das Passwort von oben
BACKUP_NUM_KEEP: 10
BACKUP_FREQUENCY: 7d # Alle 7 Tage, kann man anpassen
entrypoint: |
bash -c 'bash -s <<EOF
trap "break;exit" SIGHUP SIGINT SIGTERM
sleep 2m
while /bin/true; do
pg_dump -Fc > /dump/dump_\`date +%d-%m-%Y"_"%H_%M_%S\`.psql
(ls -t /dump/dump*.psql|head -n $$BACKUP_NUM_KEEP;ls /dump/dump*.psql)|sort|uniq -u|xargs rm -- {}
sleep $$BACKUP_FREQUENCY
done
EOF'
networks:
- internal
deploy:
resources:
limits:
memory: 256M
# Diesen Part weglassen, wenn man keine Umwandlung von Office-Dokumenten, Mails haben möchte.
gotenberg:
container_name: paperless-gotenberg
image: gotenberg/gotenberg:8
restart: unless-stopped
environment:
CHROMIUM_DISABLE_ROUTES: 1
command:
- "gotenberg"
- "--chromium-disable-javascript=true"
- "--chromium-allow-list=file:///tmp/.*"
networks:
- internal
deploy:
resources:
limits:
memory: 512M
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3000/health"]
interval: 30s
timeout: 5s
retries: 3
tika:
container_name: paperless-tika
image: apache/tika:2.9.2.1
restart: unless-stopped
networks:
- internal
deploy:
resources:
limits:
memory: 512M
In den Kommentaren habe ich die Stellen angegeben, die eventuell angepasst werden müssen. Weiter unten befindet sich auch ein experminteller Generator, den ich hinzugefügt habe. Die Pfade zu den Verzeichnissen sollten angepasst werden. Insbesondere der Pfad zur Paperless-Inbox wird anders lauten.
Die Images können angepasst werden, ich rate davon ab latest
zu nutzen, da es zu Problemen führen kann, wenn ein neues Image veröffentlicht wird, das nicht kompatibel ist. Bei Paperless kann man hier gucken, welches Image momentan das neuste ist. Gibt man z. B. 2.7
ein, wird das Image 2.7.0
oder 2.7.1
usw. genutzt.
Das Passwort der Datenbank muss an drei Stellen geändert werden.
PAPERLESS_ALLOWED_HOSTS
sollte gelöscht werden, wenn man nicht über einen Proxy-Host auf Paperless zugreifen möchte. Ansonsten sorgt es dafür, dass nur das Synology-NAS selbst Zugriff hat sowie Geräte, die über die eingetragene Domain Paperless aufrufen. Geändert werden muss auch der PAPERLESS_SECRET_KEY
. Wenn man nicht plant, Paperless öffentlich zu betreiben, kann man die Zeile auch auskommentieren oder löschen. Der Key kann zufällig sein.
Die UserID und GruppenID sollten geändert werden (ansonsten ist kein Zugriffsrecht auf die Ordner sichergestellt).
Bei PAPERLESS_FILENAME_FORMAT
hat man folgende Variablen zur Verfügung:
- { asn }: Die Archivierungs-Seriennummer des Dokuments
- { correspondent }
- { document_type }
- { tag_list }: Alle Tags mit einem Komma getrennt
- { title }: Name des Dokuments
- { created }
- { created_year }
- { created_month }: Monat (1–12)
- { created_day }: Tag (1–31)
- { added }: Zeitpunkt, indem das Dokument zu Paperless hinzugefügt wurde
- { added_year }
- { added_month }
- { added_day }
Die Dateien werden nach dem gewählten Schema im Ordner media
abgelegt. Im Beispiel oben würde mein Steuerbescheid 2020 beispielsweise in dem Verzeichnis “/media/documents/originals/2021/Finanzamt” abgelegt werden. Wenn ich aber zum Beispiel {created}_{title}
stattdessen nutze, wird die nicht in einem Unterordner abgelegt, sondern der Name der Datei erhält das Präfix mit dem Erstellungsdatum (z. B. 20211217_namederdatei.pdf). Hier ist es wichtig, dass man die Struktur nicht manuell anfasst! Möchte man diese im Nachhinein ändern, muss der Befehl document_renamer
im Paperless-Container ausgeführt werden.
Hat man wenig Systemressourcen, kann man den Teil mit Tika und Gotenberg weglassen. Dann können weiterhin noch PDF-Dokumente, PNG-Grafiken, JPEG-, TIFF- und GIF-Bilder verarbeitet werden.
Weitere Konfigurationsmöglichkeiten finden sich in der Dokumentation.
Das Deployment kann etwas Zeit in Anspruch nehmen, wenn alle Images bisher nicht heruntergeladen wurden. Nach ein bisschen Warten sollten alle Container gestartet sein.
Die Container mit den Healthchecks sollten als healthy
angezeigt werden:
Generator
Docker Compose Generator
Nginx Proxy
In der Zwischenzeit kann man einen Proxy-Host für Paperless erstellen. Dabei gebe ich die Adresse meines Synology-NAS sowie die oben gewählte Portnummer ein. Außerdem kann ich mit einer Access Liste einstellen, ob nur ein lokaler Zugriff möglich ist.
Wenn sich der Nginx Proxy Manager auf dem NAS befindet und der Webserver im gleichen Docker Netzwerk ist, kann man hier den Containernamen des Webservers eingeben sowie den Port 8000.
Nachdem ich das SSL Zertifikat für den Proxy Host besorgt habe, füge ich aber auch noch ein paar zusätzliche Einstellungen in die “Custom Nginx Configuration” ein.
client_max_body_size 20M;
proxy_redirect off;
Das sorgt dafür, dass auch größere Dateien (20 MB) über das Web Interface zu Paperless geladen werden können.
Caddy Proxy
Alternativ können auch andere Proxy Server genutzt werden. Insbesondere dann, wenn man ein anderes Gerät dafür verwendet, gibt es viele Optionen. Mit Caddy kann das so aussehen:
{
acme_ca https://acme-v02.api.letsencrypt.org/directory
email mail@domain.com
}
paperless.domain.de {
@blocked not remote_ip private_ranges
respond @blocked 403
reverse_proxy 192.168.1.123:8010
}
Neuer Benutzer
Als Letztes benötigen wir noch ein Benutzerkonto in Paperless. Dazu drücke ich in Portainer auf den paperless Container.
Anschließend auf Console.
Und dann gebe ich python3 manage.py createsuperuser
als Befehl ein.
Anschließend werde ich dann nach Benutzernamen, Passwort sowie E-Mail-Adresse gefragt.
Jetzt sollte möglich sein, sich in Paperless anzumelden. Hat man keinen Proxy Host eingerichtet, ist Paperless unter der IP-Adresse des NAS inklusive gewähltem Port (8010) erreichbar.
Archivierung
Ablage von Dokumenten
Es gibt mehrere Möglichkeiten, Dokumente in Paperless zu archivieren:
- Drag & Drop: Zur Archivierung kann man die Dateien einfach in die Web-Ansicht von Paperless ziehen.
- Paperless Inbox: Man kann die Dokumente aber auch in den angelegten Paperless-Inbox Ordner legen.
- E-Mail: Ebenso kann man eine Mail schicken, wenn man die entsprechenden Einstellungen im Admin-Menü dafür konfiguriert hat.
Wenn Tika und Gotenberg korrekt eingerichtet sind, sollte es auch möglich sein Dateiformate wie *.docx hochzuladen. Gibt es dabei Fehler, könnte es beispielsweise daran liegen, dass die Synology DiskStation eine ARM-CPU hat. In diesem Fall benötigt man andere Images.
Bearbeiten von Meta-Daten
Nach dem Hochladen eines Dokuments in Paperless ist es wichtig, die Meta-Daten zu bearbeiten, um es später leicht wiederzufinden:
-
Titel: Der Titel des Dokuments
-
Archiv-Seriennummer: Wichtig insbesondere für Dokumente, die man auch analog ablegt. Auf diese kann man vor dem Scan eine Nummer schreiben und diese anschließend in einen Ordner legen. So ist es dann möglich, mithilfe von Paperless später auch den analogen Beleg wiederzufinden.
-
Korrespondent: Hier würde ich die Person eintragen, von der die Datei erstellt wurde oder an wem sie geht. Im Zweifel würde ich es eher breiter definieren. Das bedeutet, wenn ich eine Rechnung von Netcup (Affiliate-Link) bekomme, ist Netcup der Korrespondent. Meine Versicherungspolice ist in meinem Fall bei Getsafe (Affiliate-Link) Manchmal habe ich darüber nachgedacht, ein paar Korrespondenten zu gruppieren. So wäre es beispielsweise für mich denkbar Finanzamt, Gewerbeamt usw. unter “Behörde” zusammenzufassen.
-
Dokumenttyp: Hier würde ich die Art des Dokuments eintragen. So etwas wie Rechnung, Bericht, Anleitung, Vertrag, Sonstiges usw. Ich packe die Dokumente in Sonstiges, bis ich mir denke, dass ein Typ häufiger vorkommt und es sinnvoll wäre zu trennen. Die Versicherungspolice wäre dann unter Vertrag zu finden. Schriftverkehr mit der Versicherung würde ich unter Sonstiges oder Mitteilung packen, solange es nicht den eigentlichen Vertrag ändert.
-
Tags: Hier kann man mehrere Filter für das Dokument eintragen. Z. B. den Empfänger des Dokuments, welchen Betreff das Dokument hat und ggf. auch welches Jahr es betrifft. Wichtig sind vermutlich auch solche Tags wie “Steuer”, wenn es die Steuer betrifft oder “Arbeit”, wenn die Dokumente mit der Arbeit zu tun haben (also sowohl Arbeitsvertrag als auch Lohnabrechnungen oder ein einfacher Brief). Alles, was mit meinem Gewerbe zu tun hat, bekommt den Tag Gewerbe. Manchmal habe ich auch Jahreszahlen als Tag, wenn ich etwa ein Dokument im Jahr 2022 erhalte, das sich aber auf 2021 bezieht, bekommt es den Tag 2021.
Damit bin ich bisher ganz zufrieden. Am Ende muss das jeder für sich entscheiden. Glücklicherweise hilft auch das OCR sehr beim Wiederfinden der gesuchten Informationen.
PDF-Viewer
In den Einstellungen lässt sich ein PDF-Web-Betrachter aktivieren, der zumindest unter Chrome zuverlässig funktioniert.
Aktualisierung der Docker Container
Gegebenenfalls möchte man seine Paperless Instanz oder die anderen Container auf den neuesten Stand bringen. Die neuste Paperless-Version finde ich hier.
Die aktuell installierte Version sieht man unten links in der Paperless-ngx UI. Vor dem Update empfehle ich, eine Sicherung zu erstellen. Auch die anderen Container können aktualisiert werden.
Dazu einfach im Image Menü von Portainer das Image “ghcr.io/paperless-ngx/paperless-ngx:latest” oder gleich die richtige Minor-Version “ghcr.io/paperless-ngx/paperless-ngx:2.7” neu pullen.
Ebenso können Postgres:16, Redis:7 und Gotenberg/Gotenberg:8 aktualisiert werden. Postgres:16 bedeutet, dass das aktuellste Image von Postgres mit einer 14 am Anfang verwendet werden soll. Das kann 16.0 sein, aber auch 16.1.2 (falls es das gibt). Bei Postgres nicht die Major-Version ändern (also Postgres:17), da die Datenbank ohne Migration nicht mehr geladen wird.
Wenn es ein neues Image gibt, bekommt das ursprüngliche den Tag <none>
.
Nun muss nur noch der Stack einmal neu gestartet werden, dazu Stack auswählen, “Stop this stack” drücken und dann wieder “Start this stack”.
Update: Noch schneller geht es inzwischen, wenn man in Portainer in den Stack Editor von Paperless navigiert und auf den Knopf “Update the stack” drückt. Anschließend kann man die Option “Re-pull image and redeploy” auswählen.
Backup
Für ein Backup müssen die Ordner db-backup (Datenbank), media (archivierte PDF-Dokumente) und data (Einstellungen) gesichert werden. Das lässt sich manuell machen. Man kann aber auch Cloud Sync aus dem Paket-Zentrum nutzen.
Hier kann man sich drei Aufgaben erstellen.
Damit werden diese Ordner automatisch mit dem eingestellten Dienst synchronisiert.
Document Exporter
Paperless-ngx besitzt auch einen Dokument-Exporter, mit dem alle gespeicherten Dokumente exportierten und in einem anderen Paperless wieder importiert werden können.
Der Einsatz wird ungefähr so bewerkstelligt:
Schritt 1: Im Paperless Verzeichnis auf der Synology einen neuen Ordner erstellen, zum Beispiel mit dem Namen export.
Schritt 2: In Portainer den Paperless Container aufrufen und einen benutzerdefinierten Befehl ausführen: document_exporter ../export
.
Schritt 3: Nach ein paar Minuten im Ordner export nachsehen, ob sich dort nun die Dateien befinden.
Schritt 4: Paperless woanders aufsetzen.
Schritt 5: Den kompletten Ordner export zum neuen Paperless Verzeichnis kopieren.
Schritt 6: In Portainer den Paperless Container aufrufen und einen benutzerdefinierten Befehl eingeben: document_importer ../export
Schritt 7: Überprüfen, ob es funktioniert hat.
Die Einrichtung ist damit fertig. Viel Spaß beim Archivieren :)
Bei Fragen / Anmerkungen / Verbesserungsvorschlägen usw. freue ich mich über Kommentare. Mich würde auch interessieren, wie ihr eure Dokumente archiviert.
FAQs
Wofür das NGX in Paperless NGX?
NGX steht für Next Gen X. Paperless-ngx ist der Nachfolger von Paperless-ng, welches wiederum ein Fork des originalen Projekts ist.
Kann ich Paperless-ngx auf meinem Synology NAS installieren?
Ja, das ist mit Hilfe von Docker möglich.
Was ist Docker Compose und welches Verhältnis hat es zu Paperless?
Docker Compose ist ein Tool, um mehrere Docker Container gleichzeitig zu starten. Es hilft bei der Installation und Konfiguration von Paperless-ngx.
Wie kann ich DMS Paperless-ngx auf meinem Synology NAS installieren und konfigurieren?
Zuerst musst du Portainer auf deinem NAS installieren. Dann musst du das DMS Paperless-ngx Tool per Portainer auf deinem NAS installieren und konfigurieren. Achte darauf, dass du dabei die Ordnerstrukturen richtig einstellst!
Wie kann ich Dokumente im PDF- oder docx-Format in DMS Paperless-ngx hochladen?
Du musst nur deine PDF- oder docx-Datei per Drag&Drop in das Tool ziehen. Das Tool wird dann deine Datei scannen und die Metadaten extrahieren. Für Docx werden Tika und Gotenberg benötigt.
Wie lade ich Dokumente von Google Drive in Paperless-ngx hoch?
Du kannst Dokumente von Google Drive in Paperless-ngx hochladen, indem du sie in den Paperless-Inbox Ordner auf deinem NAS kopierst. Paperless-ngx wird sie dann automatisch archivieren. Dazu kann auch Cloud Sync genutzt werden.
Wie kann ich Redis auf meinem Synology NAS installieren?
Die Installation von Redis erfolgt über den Stack in Portainer.
Wie kann ich mein DMS Paperless-ngx konfigurieren?
Die Konfiguration vom DMS Paperless-ngx erfolgt hauptsächlich über das Tool selbst, bestimmte Einstellungen, wie z.B. der Reverse Proxy, müssen allerdings auf deinem NAS oder anderen Geräteen eingestellt werden.
Muss ich meine Dokumente mit OCR scannen, bevor ich sie in DMS Paperless-ngx hochlade?
Nein, das Tool scannt deine Dokumente automatisch, nachdem du sie hochgeladen hast. Denn wer hat schon Lust, all seine Dokumente vorher selbst zu scannen?
Welche Dokumente kann ich in DMS Paperless-ngx hochladen?
Du kannst PDF, PNG, JPEG, TIFF, and GIF Dokumente in Paperless hochladen. Zusätzlich kannst du auch emails und Office Dokumente wie docx, doc, odt, ppt, pptx, odp, xls, xlsx und ods hochladen, wenn du Tika und Gotenberg installiert hast.
Wo finde ich meine hochgeladenen Dokumente in DMS Paperless-ngx?
Nachdem du deine Dokumente hochgeladen hast, sind sie in DMS Paperless-ngx unter 'Dokumente' zu finden. So verlierst du nie den Überblick! Auf dem NAS selbst befinden sich die Dokumente im Ordner 'media'.
Kann ich DMS Paperless-ngx auf meinem Raspberry Pi installieren?
Ja, das ist möglich. Du musst dafür Docker und Docker Compose installieren. Außerdem musst du die docker-compose.yml Datei anpassen, damit sie auf deinem Raspberry Pi läuft. Eine allgemeinere Anleitung findest du unter https://deployn.de/blog/setup-paperless/.
Was kann ich mit den Metadaten meiner Dokumente in DMS Paperless-ngx machen?
Du kannst die Metadaten deiner Dokumente in DMS Paperless-ngx bearbeiten. So kannst du deine Dokumente besser organisieren und findest sie schneller wieder.
E-Mails werden nicht in Paperless nicht richtig archiviert. Was kann ich tun?
Achte darauf, dass die SMTP Einstellungen in Paperless richtig gesetzt sind. Der IMAP Server ist nicht die Mail-Adresse. Außerdem könnte der Pfad von Gotenberg falsch sein.
Ich habe ein anderes Problem mit Paperless. Was kann ich tun?
Du kannst gerne die Kommentarfunktion benutzen. Falls es jedoch ein Problem gibt wäre es gut zu wissen, welches Gerät du benutzt, in welchen Punkten von der Anleitung abgewichen wurde und was die Logs sagen.