aperless NGX für deine papierlose Dokumentenstruktur und Ablage deiner wichtige Unterlagen. Die Installation erfolgt hier ohne Docker
auf einer Proxmox VM Debian 11. Als Datenbank nutzen wir MariaDB (siehe weiter unten) und als Webserver Nginx.
Paperless zeichnet sich durch eine intelligente OCR-Texterkennung aus. Das Verwalten und die Digitalisierung deiner Dokumente wird zum Kinderspiel. Selbst aus mehreren 100 Dokumenten findest Du durch die Suchfunktion jederzeit dein PDF-Dokument wieder.
Paperless Debian Installation
System aktualisieren
apt update && apt upgrade -y
Erforderliche Pakete installieren
apt install python3 python3-pip python3-dev python3-virtualenv imagemagick fonts-liberation libpoppler-cpp-dev gnupg libpq-dev gnupg2 optipng default-libmysqlclient-dev libmagic-dev mime-support libzbar0 poppler-utils pkg-config mariadb-client -y
Abhängigkeiten für die Texterkennung installieren
apt install unpaper ghostscript icc-profiles-free qpdf liblept5 libxml2 pngquant zlib1g tesseract-ocr tesseract-ocr-deu -y
Redis installieren und konfigurieren
apt install redis-server
Überprüfe den Redis-Status
systemctl status redis.service
Bearbeite redis.conf (je nach Bedarf)
nano /etc/redis/redis.conf
Nach Änderung an der /etc/redis/redis.conf – Server neustarten
systemctl restart redis.service
Paperless User
Erstelle den User paperless
inkl. Homeverzeichnis & Gruppe
adduser paperless --system --home /opt/paperless --group
Adminrechte vergeben
usermod -a -G sudo paperless
User-ID auslesen
id paperless
Hier nun direkt per SSH-Konsole die User-ID für paperless
ausfindig machen, diese ID wird später benötigt.
Paperless NGX downloaden
wget https://github.com/paperless-ngx/paperless-ngx/releases/download/v2.5.4/paperless-ngx-v2.5.4.tar.xz
Die aktuellste Release-Version von Paperless NGX findest Du hier.
Entpacke die heruntergeladene Datei
tar -xf paperless-ngx-v2.5.4.tar.xz
Verschiebe den Inhalt nach /opt/paperless
mv paperless-ngx/.[^.]* /opt/paperless
mv paperless-ngx/* /opt/paperless
Es werden alle Dateien aus dem Ordner paperless-ngx nach /opt/paperless verschoben. Auch die versteckten Dateien z.B. .env
– Den entpackten Ordner paperless-ngx und die Datei .tar.xz anschließend löschen.
rmdir -p paperless-ngx && rm -r paperless-ngx-v2.5.4.tar.xz
Zusätzliche Paperless-Verzeichnisse erstellen
mkdir -p /opt/paperless/media mkdir -p /opt/paperless/data mkdir -p /opt/paperless/consume mkdir -p /opt/paperless/export
User-Rechte für Verzeichnisse setzen
chown -R paperless:paperless /opt/paperless
Vorhandene Konfigurationsdatei umbenennen
mv /opt/paperless/paperless.conf /opt/paperless/paperless.conf.default
Neue Konfigurationsdatei erstellen und anpassen
nano /opt/paperless/paperless.conf
Die wichtigsten Paperless-Parameter in die neu erstellte paperless.conf
einfügen und deine Werte entsprechend anpassen. Unten aufgeführte Variablen sind die erforderlichen Werte, damit Paperless NGX fehlerfrei funtionieren kann. Es gibt eine Reihe weitere Definitionsparameter, die Du auf der DOC-Seite nachlesen kannst.
USERMAP_UID=108
USERMAP_GID=116
# Webadresse oder DynDNS-Adresse
PAPERLESS_URL=https://deine-web-adresse.de
PAPERLESS_CORS_ALLOWED_HOSTS=https://deine-web-adresse.de,http://192.168.XXX.XXX:8888
PAPERLESS_CSRF_TRUSTED_ORIGINS=https://deine-web-adresse.de,http://192.168.XXX.XXX:8888
PAPERLESS_ALLOWED_HOSTS=deine-web-adresse.de,192.168.XXX.XXX
PAPERLESS_SECRET_KEY=LANGE-SICHERE-FOLGE-VON-ZUFALLSZEICHEN
PAPERLESS_TIME_ZONE=Europe/Berlin
PAPERLESS_OCR_LANGUAGE=deu
PAPERLESS_FILENAME_FORMAT={created_year}-{created_month}-{correspondent}-{title}
# Admin und Passwort frei vergeben
PAPERLESS_ADMIN_USER=admin
PAPERLESS_ADMIN_PASSWORD=DEIN-GEHEIMES-PASSWORT
# Paperless gescannte Dokumente und Daten
PAPERLESS_CONSUMPTION_DIR=’/opt/paperless/consume‘
PAPERLESS_DATA_DIR=’/opt/paperless/data‘
PAPERLESS_MEDIA_ROOT=’/opt/paperless/media‘
PAPERLESS_REDIS=redis://localhost:6379
PAPERLESS_DBENGINE=mariadb
PAPERLESS_DBHOST=localhost
PAPERLESS_DBNAME=paperless
PAPERLESS_DBUSER=paperless
PAPERLESS_DBPASS=DEIN-GEHEIMES-DATENBANK-PASSWORT
PAPERLESS_DBPORT=3306
PAPERLESS_OCR_THREADS=3
Datei-Rechte für die neue paperless.conf setzen
chown -R paperless:paperless /opt/paperless/paperless.conf
MariaDB installieren
apt install mariadb-server
Datenbank-Status prüfen
systemctl status mariadb.service
MariaDB Secure Mode durchführen
mysql_secure_installation
Beantworte nun die Fragen mit Y. Falls du das Root-Passwort schon gesetzt hattest, brauchst du bei dieser Frage nur ein N setzen. Bei allen anderen Fragen mit YES die Abfragen durchgehen 🙂
Datenbank erstellen und Benutzer einrichten
mysql -u root -p CREATE DATABASE paperless; CREATE USER 'paperless'@'localhost' IDENTIFIED BY 'DEIN-GEHEIMES-PASSWORT'; GRANT ALL PRIVILEGES ON paperless.* TO 'paperless'@'localhost'; FLUSH PRIVILEGES; QUIT
Folgende Daten sind auch gemäß der hier erstellten Werte in der paperless.conf
definiert: DB=paperless / DBUser=paperless / DBPasswort=DEIN-DATENBANK-PASSWORT (Achte auf die Änderungen deiner Einstellungen)
Python-Anforderungen installieren aus Datei requirements.txt
cd /opt/paperless
Virtuelle Umgebung erstellen
python3 -m virtualenv --python=/usr/bin/python3 envsp source envsp/bin/activate
sudo -Hu paperless pip3 install -r requirements.txt
Wechsle in das /src
Verzeichnis und führe die Befehle aus:
cd /opt/paperless/src
sudo -Hu paperless python3 manage.py migrate
sudo -Hu paperless python3 manage.py createsuperuser
Folge den Anweisungen und richte den Superuser mit Namen, Emailadresse und Passwort abschließend ein.
Virtuelle Umgebung verlassen
deactivate
WARNING: The script sqlformat is installed in ‚/opt/paperless/.local/bin‘ which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use –no-warn-script-location.
Bei o.g. Warnmeldung, Installationspfad hinzufügen
export PATH=$PATH:/opt/paperless/.local/bin
NGINX Webserver installieren
apt install nginx
Aktiviere den NGINX-Webserver für den Autostart
systemctl enable nginx.service
Überprüfe den NGINX-Status
systemctl status nginx.service
Lösche die Default von NGINX und erstelle eine neue Datei
rm /etc/nginx/sites-enabled/default nano /etc/nginx/sites-available/paperless
Füge den Code in die Datei ein
server { listen 80; listen [::]:80; server_name deine-webadresse.ddnss.de; access_log /var/log/nginx/paperless_access.log; error_log /var/log/nginx/paperless_error.log; location / { proxy_pass http://127.0.0.1:8888; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Host $server_name; } }
Diese Definition ist eine Möglichkeit per NGINX Proxy Manager und DynDNS-Adresse auf die im Heimnetzwerk interne IP-Adresse zugreifen zu können. Hast Du eine andere Konstellation, musst Du diese natürlich entsprechend anpassen. Ich bitte dies entsprechend zu berücksichtigen.
Symlink erstellen und neue Definition aktivieren
ln -s /etc/nginx/sites-available/paperless /etc/nginx/sites-enabled
Neue NGINX-Config prüfen
nginx -t
Webserver neu starten
systemctl restart nginx
Paperless Debian Installation
Zum Testen ob der Server läuft
cd /opt/paperless/src sudo -Hu paperless python3 manage.py runserver
Standard-Port 8000 auf Port 8888 ändern (optional)
nano /opt/paperless/gunicorn.conf.py
Systemd-Dienste einrichten
nano /etc/systemd/system/paperless-webserver.service
[Unit] Description=Paperless-Webserver After=network.target Wants=network.target Requires=redis.service [Service] User=paperless Group=paperless WorkingDirectory=/opt/paperless/src ExecStart=/opt/paperless/.local/bin/gunicorn -c /opt/paperless/gunicorn.conf.py paperless.asgi:application [Install] WantedBy=multi-user.target
Webserver und Consumer Dienste einrichten und Inhalte in die erstellten Dateien einfügen.
nano /etc/systemd/system/paperless-consumer.service
[Unit] Description=Paperless-Consumer Requires=redis.service [Service] User=paperless Group=paperless WorkingDirectory=/opt/paperless/src ExecStart=python3 manage.py document_consumer [Install] WantedBy=multi-user.target
Systemdienste starten
systemctl daemon-reload systemctl start paperless-webserver.service systemctl start paperless-consumer.service
Status prüfen
systemctl status paperless-webserver.service systemctl status paperless-consumer.service
Automatischen Systemstart aktivieren
systemctl enable paperless-webserver.service systemctl enable paperless-consumer.service
Paperless Debian Installation
Paperless-Server neu starten und Local mit IP-ADRESSE:8888 oder Extern mit https://dyndns-adresse.de . Hier sollte natürlich das Let’s Encrypt Zertifikat eingerichtet vorhanden sein.
Viel Spass 😉