In diesem Beitrag erkläre ich die Installation und Einrichtung von der Dokumentenverwaltung-Software Paperless-ngx mithilfe von Docker unter Debian.
INHALTSVERZEICHNIS
- 1.Docker installieren
- 2.Kurze Einführung in Paperless-ngx
- 3. Virtual Host Datei für Aufruf ohne Port
- 4. Backup von Paperless-ngx erstellen
In der heutigen digitalen Welt wird die Verwaltung und Archivierung von Dokumenten immer wichtiger. Hier kommt Paperless-ngx ins Spiel, eine leistungsstarke Open-Source-Software, die entwickelt wurde, um die Aufbewahrung und Suche nach Dokumenten zu vereinfachen. Die Dokumentenverwaltungssystem wurde entwickelt, um Dokumente zu digitalisieren, zu organisieren und leicht zugänglich zu machen. Es bietet eine benutzerfreundliche Weboberfläche und leistungsstarke Funktionen zur Verwaltung von Dokumenten aller Art. Egal, ob du Rechnungen, Verträge, Notizen oder andere wichtige Papiere speichern möchtest.
Meine Anleitung für die Installation von Paperless-ngx bezieht sich auf die Version 1.17.4.
Docker installieren
Die einfachste Installation für Paperless-ngx erfolgt über Docker. Falls noch nicht geschehen, musst du also zunächst Docker und Docker Compose installieren.
Verbinde dich per PuTTY auf deinen Server. Suche zunächst nach Updates, um den Server auf den aktuellsten Stand zu bringen:
sudo apt update
Installiere die erforderlichen Abhängigkeiten, die von Docker benötigt werden:
sudo apt install apt-transport-https ca-certificates curl software-properties-common
Füge den offiziellen Docker-GPG-Schlüssel hinzu, um die Paketsignaturen zu überprüfen:
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
Füge die Docker-Repository hinzu:
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Aktualisiere erneut dein Paketverzeichnis, um die Informationen aus dem Docker-Repository zu erhalten:
sudo apt update
Installiere Docker nun mit dem folgenden Befehl:
sudo apt install docker-ce docker-ce-cli containerd.io
Starte den Docker-Dienst und aktiviere ihn, damit er bei jedem Systemstart gestartet wird:
sudo systemctl start docker
sudo systemctl enable docker
Stelle sicher, dass curl bei deinem System installiert ist:
sudo apt install curl
Führe den folgenden Befehl aus, um Docker Compose herunterzuladen und in das Verzeichnis /usr/local/bin zu verschieben. Dieser Befehl installiert die neueste Version von Docker Compose:
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
Gib ausführbare Berechtigungen für Docker Compose:
sudo chmod +x /usr/local/bin/docker-compose
Docker wurde nun installiert. Jetzt kann Paperless-ngx installiert werden.
Die Installation von Paperless-ngx erfolgt als nicht-Root Benutzer. Falls noch kein anderer Benutzer existiert, erstellst du einen:
sudo adduser paperless
Befolge die weiteren Schritte, um den Benutzer anzulegen.
Vergib dem neuen Benutzer die Berechtigung, Docker zu verwenden:
sudo usermod -aG docker paperless
Wechsel jetzt die Sitzung in den neuen Benutzer:
su paperless
Verwende für die Installation das Docker-Script von GitHub:
bash -c "$(curl -L https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/main/install-paperless-ngx.sh)"
Nun wird die Software in einigen Schritten konfiguriert. Den Anfang macht die Angabe der URL, unter der Paperless-ngx später erreichbar sein wird. Sofern auch ein SSL-Zertifikat für deine Domain vorhanden ist, solltest du hier die Seite mit https angeben.
1. Application configuration ============================ The URL paperless will be available at. This is required if the installation will be accessible via the web, otherwise can be left blank. Example: https://paperless.example.com URL []: http://paperless.domain.tld
Als nächstes gibst du den Port der Software an. Ich belasse es beim Standard 8000. Später kannst du in der Virtual Host Datei von Apache2 auch hinterlegen, dass der Port gar nicht eingegeben werden muss.
The port on which the paperless webserver will listen for incoming connections. Port [8000]: 8000
Gib im nächsten Schritt die Zeitzone für Deutschland an.
Paperless requires you to configure the current time zone correctly. Otherwise, the dates of your documents may appear off by one day, depending on where you are on earth. Example: Europe/Berlin See here for a list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones Current time zone [Europe/Berlin]: Europe/Berlin
Nun musst du einen Datenbank-Typ auswählen. Ich verwende MariaDB.
Database backend: PostgreSQL, MariaDB, and SQLite are available. Use PostgreSQL if unsure. If you're running on a low-power device such as Raspberry Pi, use SQLite to save resources. Database backend (postgres sqlite mariadb) [postgres]: mariadb
Möchtest du, dass Paperless-ngx auch Office-Dokumente analysieren können soll, aktiviert du Tika. Dieses Feature benötigt jedoch zusätzliche Ressourcen.
Paperless is able to use Apache Tika to support Office documents such as Word, Excel, Powerpoint, and Libreoffice equivalents. This feature requires more resources due to the required services. Enable Apache Tika? (yes no) [no]: yes
Für die OCR-Texterkennung gibst du jetzt an, in welcher Sprache sich die meisten deiner Dokumente befinden. Das sollte Deutsch sein.
Specify the default language that most of your documents are written in. Use ISO 639-2, (T) variant language codes: https://www.loc.gov/standards/iso639-2/php/code_list.php Common values: eng (English) deu (German) nld (Dutch) fra (French) This can be a combination of multiple languages such as deu+eng OCR language [eng]: deu
In den nächsten beiden Schritten bestätigst du jeweils die User-ID und Group-ID, welche bereits in der eckigen Klammer steht. Das Setup wird die Berechtigungen entsprechend für den aktuellen Benutzer setzen.
Im nächsten Schritt legst du fest, wo die Daten von Paperless-ngx liegen sollen. Das sollte dort sein, von wo aus die Website laut Virtual Host Datei direkt erreichbar ist.
The target folder is used to store the configuration files of paperless. You can move this folder around after installing paperless. You will need this folder whenever you want to start, stop, update or maintain your paperless instance. Target folder [/home/paperless-ngx]: /home/paperless/www
Die gleiche Syntax wird jetzt noch für die Verzeichnisse media, data und database festgelegt.
The consume folder is where paperless will search for new documents. Point this to a folder where your scanner is able to put your scanned documents. CAUTION: You must specify an absolute path starting with / or a relative path starting with ./ here. Examples: /mnt/consume ./consume Consume folder [/home/paperless/www/consume]: /home/paperless/www/consume
Im letzten Schritt legst du die Anmeldedaten für dein Administrator-Konto fest. Eine E-Mail-Adresse muss hinterlegt werden, wird aber für nichts verwendet.
3. Login credentials ==================== Specify initial login credentials. You can change these later. A mail address is required, however it is not used in paperless. You don't need to provide an actual mail address. Paperless username [paperless]: paperless Paperless password: Paperless password (again): Email [paperless@localhost]: mail@example.com
Dir wird die Konfiguration zusammengefasst. Drücke Enter, um die Installation von Paperless-ngx zu starten.
Nach der Installation kannst du Paperless-ngx über deinen Browser aufrufen:
http://paperless.domain.tld:8000
Kurze Einführung in Paperless-ngx
In Paperless-ngx angemeldet empfehle ich als erstes die Einstellungen durchzugehen und nach eigenem Empfinden einzustellen. Außerdem sollten unter Verwalten Tags eigene Tags erstellt werden, damit gescannten Dokumente und Briefe später einfacher zugeordnet und gefunden werden können. Die Tour erklärt dir ebenfalls die Grundfunktionen.
Unter Verwalten lassen sich auch Dokumenttypen erstellen. Ich persönlich nutzt als Typ Brief, Dokument und Sonstiges.
Über die Startseite kannst du einen Scan auswählen und hochladen. Anschließend findest du das Dokument unter Dokumente. Über das Stift-Symbol kannst du Details und weiterer Optionen dieses Dokuments ändern. Ein Titel, das Datum und die entsprechenden Tags sollten als minimum gesetzt werden.
Die Software erkennt anhand der OCR-Texterkennung das Datum der Dokumente in der Regel automatisch, oder es wird das Erstelldatum verwendet, und trägt dieses Datum entsprechend ein, außerdem lernt eine KI die verschiedenen Arten der Dokumente und vergibt dann automatisch nach dem Hochladen den passenden Tag, wie beispielsweise Versicherung, Gesundheit oder Steuerunterlagen. Diesen automatische Zuweisungsalgorithmus kannst du unter Tags im entsprechenden Tag auch deaktivieren oder festlegen, dass der Tag bei bestimmten vorkommenden Worten automatisch gesetzt wird.
Virtual Host Datei für Aufruf ohne Port
Im folgenden habe ich einmal eine Virtual Host Datei für Apache2 zusammengestellt, die dafür sorgt, dass der Dienst ohne Port erreichbar ist.
<VirtualHost *:80> ServerAdmin webmaster@domain.tld ServerName paperless.domain.tld.xyz DocumentRoot /home/paperless/www ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined <Directory /home/paperless/www> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> ProxyPass / http://127.0.0.1:8000/ ProxyPassReverse / http://127.0.0.1:8000/ </VirtualHost>

Backup von Paperless-ngx erstellen
Wie bei allen Diensten solltest du dafür sorgen, dass die Daten regelmäßig für den Fall der Fälle gesichert werden. Sollte es zu einem Datenverlust kommen oder du versehentlich etwas löschen, kannst du so deine Dokumente wiederherstellen.
In folgendem findest du ein kleines Bash-Script, welches Docker beendet, das Verzeichnis von Paperless-ngx sichert und Docker wieder startet. Du solltest hierfür noch mit einem Cronjob für eine Automatisierung sorgen und die Datei extern verschieben lassen. Auch solltest du über eine Verschlüsselung des Backups nachdenken. Die Pfade musst du entsprechend anpassen.
#!/bin/bash sudo docker-compose down tar -czf /home/paperless/paperless_$(date +%Y-%m-%d).tar.gz -C /home/paperless www docker-compose up -d
Bei Fragen oder Anregungen freue ich mich natürlich über eure Kommentare.