Paperless NGX Docker installation
Hier kommt Ordnung und Überblick über deine Akten! Die Paperless NGX Docker installation hilft dir alles zu verwalten und wider zu finden 👍
Warum Dokumenten Management ?!?!
Ein papierloses Dokumentenmanagement bietet sowohl für Privatanwender als auch für Unternehmen immense Vorteile. Es geht weit über die bloße Reduzierung von Papier hinaus und optimiert grundlegend, wie Informationen verwaltet und genutzt werden.
Im Detail gehe ich in diesem Beitrag:
ein. Fazit ist es zur Zeit so das immer mehr Kontrolle und Nachweispflicht gesetzlich eingeführt wird. Das Betrifft Geld & Vermögen, Cryptos, Rente und erst recht die Ausgewanderten.
Unser Projekt „Paperless“
Voraussetzungen
Linux, WINDOWS 10 / 11 mit Docker
Eine Installationsanleitung für Docker unter WINDOWS WSL findest du hier
Für die Installation von Paperless-ngx wurde ein Docker Compose Setup gewählt, um alle notwendigen Dienste containerisiert zu betreiben. Dazu gehören die Paperless-Anwendung selbst, eine PostgreSQL-Datenbank, ein Redis Cache sowie die Erweiterungen Gotenberg für Office-Dateikonvertierungen und Apache Tika für Texterkennung.
In einem Projektordner liegen zwei wichtige Dateien: eine .env
, in der sensible Einstellungen wie Datenbank-Zugangsdaten, Passwörter und externe Service-URLs hinterlegt sind, sowie die docker-compose.yml
, die die Container definiert und vernetzt.
Die docker-compose.yml
beschreibt die Dienste wie folgt:
- db: Ein PostgreSQL-Container, der persistent Daten in einem Docker-Volume speichert.
- redis: Ein Redis-Server für die Verarbeitungscache von Paperless.
- webserver: Der Paperless-ngx Webserver Container, der die Weboberfläche bereitstellt und Dokumente verwaltet. Er greift auf Datenbank und Redis zu und liest die
.env
Variablen ein. - gotenberg: Ein Container, der Office-Dateien in PDF konvertiert und über eine HTTP-API vom Paperless-Server angesprochen wird.
- tika: Ein Apache Tika Server Container, der zur Texterkennung und Inhaltsanalyse verwendet wird.
Die Netzwerke und Volumes sind so definiert, dass die Dienste intern kommunizieren können und die Daten persistent bleiben. Die Paperless-Weboberfläche ist nach dem Start über http://localhost:8010
erreichbar.
Dokumente können in den consume/
Ordner gelegt werden, wo Paperless sie automatisch verarbeitet. Alternativ können Dokumente auch über die Weboberfläche hochgeladen werden, was insbesondere bei .eml
-Dateien praktisch ist. Für E-Mails, die nur HTML enthalten, empfiehlt sich ein vorheriges Speichern als PDF, da Paperless sonst eine Fehlermeldung wegen „Dateityp text/html nicht unterstützt“ ausgibt.
Insgesamt ist das Setup so gestaltet, dass es leicht erweiterbar ist, beispielsweise durch Automatisierung des Mail-Imports oder weitere Konvertierungsdienste. Die Konfiguration über .env
macht es einfach, Passwörter und URLs ohne Änderung der Compose-Datei anzupassen.
Video: Paperless NGX Docker installation
Sprache: 🇩🇪
☝️ Benutze YouTube Untertitel für alle Sprachen.
Beispiel docker-compose.yml
:
# version: "3.7"
services:
dbpg:
image: postgres:15-alpine
volumes:
- ./paperless_db:/var/lib/postgresql/data
environment:
POSTGRES_DB: paperless
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
redis:
image: redis:6-alpine
volumes:
- ./redisdata:/data
webserver:
image: ghcr.io/paperless-ngx/paperless-ngx:latest
depends_on:
- dbpg
- redis
- gotenberg
- tika
ports:
- "${PAPERLESS_PORT}:8000"
environment:
PAPERLESS_DBHOST: dbpg
PAPERLESS_DBUSER: ${POSTGRES_USER}
PAPERLESS_DBPASS: ${POSTGRES_PASSWORD}
PAPERLESS_SECRET_KEY: ${SECRET_KEY}
PAPERLESS_FILENAME_FORMAT: "{{ correspondent }}/{{ created_year }}/{{ document_type }}/{{ title }}"
PAPERLESS_OCR_LANGUAGE: deu
PAPERLESS_TIKA_ENABLED: 1
PAPERLESS_REDIS: redis://redis:6379/0
PAPERLESS_GOTENBERG_URL: http://gotenberg:3000
PAPERLESS_TIKA_URL: http://tika:9998
PAPERLESS_EMAIL_ATTACHMENT_ONLY: ${PAPERLESS_EMAIL_ATTACHMENT_ONLY}
volumes:
- ./data:/usr/src/paperless/data
- ./consume:/usr/src/paperless/consume
- ./export:/usr/src/paperless/export
- ./media:/usr/src/paperless/media
gotenberg:
image: gotenberg/gotenberg:latest
ports:
- "3000:3000"
tika:
image: ghcr.io/paperless-ngx/tika:latest
ports: - "9998:9998"
Die .env Datei
Die .env
-Datei (Environment-Datei) wird verwendet, um Umgebungsvariablen zu definieren, die von Anwendungen – in diesem Fall Paperless NGX und seiner Datenbank – beim Start gelesen werden. Sie ist besonders nützlich, um sensible Informationen wie Passwörter oder Konfigurationsdetails außerhalb des Haupt-Quellcodes zu halten und einfach zu verwalten.
Hier ist eine Erklärung der bereitgestellten Zeilen:
POSTGRES_USER=BenutzerName
Diese Zeile legt den Benutzernamen fest, den Paperless NGX verwenden wird, um sich mit der PostgreSQL-Datenbank zu verbinden. Du solltestBenutzerName
durch einen tatsächlichen Benutzernamen ersetzen, den du für die Datenbank festgelegt hast oder festlegen möchtest.POSTGRES_PASSWORD=PasswortGeheim
Hier wird das Passwort für den oben genannten PostgreSQL-Benutzer definiert. ErsetzePasswortGeheim
unbedingt durch ein starkes und sicheres Passwort. Dieses Passwort ist entscheidend für die Sicherheit deiner Datenbank.SECRET_KEY=777-76uz.hztd.UzZ6
DerSECRET_KEY
ist ein kryptografischer Schlüssel, der von Paperless NGX (basierend auf Django) für verschiedene Sicherheitszwecke verwendet wird, wie z.B. für die Generierung von sicheren Hashes, die Passwortzurücksetzung oder für Cookies. Die hier gezeigte Zeichenfolge ist ein Beispiel; du solltest diesen Wert durch eine wirklich zufällige und einzigartige Zeichenfolge ersetzen, bevor du Paperless NGX in einer Produktionsumgebung einsetzt.PAPERLESS_PORT=8010
Diese Variable gibt den Port an, auf dem der Paperless NGX-Webserver innerhalb seines Containers lauscht. Standardmäßig ist dies oft8000
, aber du kannst es auf einen anderen Port wie8010
ändern, um Konflikte zu vermeiden oder Präferenzen zu berücksichtigen. Beachte, dass dies der interne Container-Port ist; die Port-Weiterleitung von deinem Host-System zum Container wird separat in deinerdocker-compose.yml
Datei konfiguriert.PAPERLESS_EMAIL_ATTACHMENT_ONLY=False
Diese Einstellung steuert, wie Paperless NGX mit E-Mail-Anhängen umgeht. Wenn aufFalse
gesetzt (wie hier), verarbeitet Paperless NGX nicht nur Anhänge, sondern versucht möglicherweise auch, den Textkörper der E-Mail selbst als Dokument zu interpretieren oder Metadaten daraus zu extrahieren. Setzt du diesen Wert aufTrue
, würde Paperless NGX nur die Anhänge von E-Mails verarbeiten und den E-Mail-Textkörper ignorieren.
Wichtiger Hinweis zur Sicherheit: Die
.env
-Datei enthält sensible Informationen. Stelle sicher, dass diese Datei niemals öffentlich zugänglich ist (z.B. nicht in einem öffentlichen Git-Repository). Sie sollte auch nicht direkt in deinen Container kopiert werden, sondern über Docker Compose als Umgebungsvariablen an die Dienste übergeben werden.
POSTGRES_USER=BenutzerName
POSTGRES_PASSWORD=PasswortGeheim
SECRET_KEY=777-76uz.hztd.UzZ6PAPERLESS_PORT=8010
PAPERLESS_EMAIL_ATTACHMENT_ONLY=False
So kannst du das Projekt starten mit:
docker-compose up -d
Danach ist Paperless-ngx unter http://localhost:8010
erreichbar und kann verwendet werden. Beim ersten Start werden zunächst die Container geladen – das kann ein paar Minuten dauern. Auch der Start von Paperless (normalerweise) benötigt etwa 3 Minuten. Also nicht gleich nervös werden, nur weil es nicht sofort losgeht.
Link zur Unterstützung / Spende für denn Kanal
PayPal Link
Überweisung, Bitcoin und Lightning
#PaperlessNGX #Docker #Dokumentenmanagement #SelfHosted #Anleitung #OpenSource #Papierlos #Homelab #DMS #Installation #SchrittFuerSchrittAnleitung
Pingback: Paperless: Warum Dokumentenmanagement und Leistungsumpfang | Michael Klissner