Sie interessieren sich für das vorgestellte Produkt?
Sprechen Sie uns an! Bei WZ-IT übernehmen wir Beratung, Installation, Support, Betrieb, Wartung und Monitoring Ihrer Lösung.
Vereinbaren Sie hier Ihr kostenloses und unverbindliches Gespräch:
Termin vereinbaren.

Aktuellste politische Entwicklungen zeigen, dass es immer wichtiger wird, die Kontrolle über die eigenen Daten zu behalten. Paperless-ngx ist eine Open-Source-Lösung, die es Ihnen ermöglicht, Ihr eigenes DMS zu hosten und dabei volle Kontrolle über Ihre Daten zu behalten. In dieser Anleitung zeigen wir Ihnen, wie Sie Paperless-ngx auf einem Ubuntu 24.04 Server installieren und automatisch SSL-Zertifikate von Let's Encrypt mit Caddy einrichten.

Voraussetzungen

  • Ein Ubuntu 24.04 Server (z.B. ein VPS von Hetzner oder einem anderen Anbieter)
  • Zugriff auf den Server via SSH
  • Domain, die auf den Server zeigt (mind. A Eintrag) (z.B. paperless.example.com)

In unserem Beispiel verwenden wir die Domain paperless-demo.wz-it.com. Sie können diese Domain in der Anleitung durch Ihre eigene Domain ersetzen. Wir haben die Domain mit einem A Eintrag auf die IP-Adresse des Servers gesetzt, auf dem wir Paperless-ngx installieren möchten. Hier ein Auszug aus der DNS-Konfiguration:

DNS Eintrag für Paperless-ngx

Schritt 1: Server vorbereiten

Wir melden uns per SSH als root oder einem Benutzer mit sudo-Rechten auf dem Server an und aktualisieren die Paketliste:

apt update && apt upgrade -y

Schritt 2: Docker und Docker Compose installieren

curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
rm get-docker.sh

Dieses Skript installiert die neuste Version von Docker und Docker Compose. Schauen Sie sich auch gerne den Inhalt des Skripts an, um zu verstehen, was genau passiert. Generell ist es keine gute Idee, Skripte aus dem Internet blind auszuführen, aber in diesem Fall ist es eine gängige Methode, um Docker zu installieren.

Schritt 3: Benutzer für Paperless-ngx erstellen

Wir erstellen einen neuen Benutzer, der später für die Paperless-ngx Installation verwendet wird. Außerdem fügen wir den Benutzer zur Docker-Gruppe hinzu, damit er Docker-Befehle ohne sudo ausführen kann. Dies ist wichtig, da Paperless-ngx in einem Docker-Container läuft und der Benutzer Zugriff auf die Docker-Ressourcen benötigt.

adduser --system --group --home /opt/paperless paperless
sudo usermod -aG docker paperless

Schritt 4: Paperless-ngx installieren

Paperless-ngx bietet eine offizielle Docker-Compose Vorlage, die wir verwenden können. Es wird jedoch auch ein Skript bereitgestellt, das die Installation vereinfacht. In unserem Fall, wo wir den Server ausschließlich für Paperless-ngx verwenden möchten, ist dies eine sinnvolle Option. Möchten wir Paperless-ngx jedoch in einem anderen Setup unterbringen, ist diese Installationsmethode evtl. nicht passend. Wir laden das Skript herunter und führen es aus:

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

Das Skript führt uns durch einen Interaktiven Installationsprozess, bei dem wir einige Einstellungen vornehmen können.

Folgende Einstellungen sind für unsere Installation wichtig:

  • URL: Hier geben wir die Domain ein, unter der Paperless-ngx erreichbar sein soll, z.B. https://paperless-demo.wz-it.com.
  • OCR Language: Wir wählen deu für Deutsch, damit die Texterkennung in deutscher Sprache erfolgt.

Alle anderen Einstellungen können wir auf den Standardwerten belassen und mit "Enter" bestätigen. Am Ende legen wir noch ein Passwort für den Admin-Benutzer fest, der später für den Zugriff auf Paperless-ngx verwendet wird.

Das Skript installiert nun Paperless-ngx und alle erforderlichen Abhängigkeiten. Es erstellt auch die notwendigen Verzeichnisse und Konfigurationsdateien.

Jetzt ist Paperless-ngx installiert und wir können auf unsere Instanz mit http://IP_DES_SERVERS:8000 zugreifen. Allerdings ist die Verbindung noch nicht gesichert, da wir noch kein SSL-Zertifikat eingerichtet haben.

Schritt 5: Caddy als Reverse Proxy und SSL-Zertifikat einrichten

Caddy ist ein einfacher und leistungsstarker Webserver, der automatisch SSL-Zertifikate von Let's Encrypt ausstellt und verwaltet. Wir verwenden Caddy, um Paperless-ngx über HTTPS erreichbar zu machen. Wir können Caddy zu dem Docker-Compose

Wir öffnen die Datei docker-compose.yml im Verzeichnis /opt/paperless und fügen den Caddy-Service hinzu. So sieht die aktualisierte docker-compose.yml aus:

services:
  broker:
    image: docker.io/library/redis:8
    restart: unless-stopped
    volumes:
      - redisdata:/data
  db:
    image: docker.io/library/postgres:17
    restart: unless-stopped
    volumes:
      - pgdata:/var/lib/postgresql/data
    environment:
      POSTGRES_DB: paperless
      POSTGRES_USER: paperless
      POSTGRES_PASSWORD: paperless
  webserver:
    image: ghcr.io/paperless-ngx/paperless-ngx:latest
    restart: unless-stopped
    depends_on:
      - db
      - broker
    ports:
      - "8000:8000"
    volumes:
      - data:/usr/src/paperless/data
      - media:/usr/src/paperless/media
      - ./export:/usr/src/paperless/export
      - /opt/paperless/paperless-ngx/consume:/usr/src/paperless/consume
    env_file: docker-compose.env
    environment:
      PAPERLESS_REDIS: redis://broker:6379
      PAPERLESS_DBHOST: db
  caddy:
    image: caddy
    network_mode: "host"
    volumes:
      - ./caddy/data/:/data/
      - ./caddy/config/:/config/
      - ./caddy/Caddyfile:/etc/caddy/Caddyfile

volumes:
  data:
  media:
  pgdata:
  redisdata:

Wir erstellen nun die Verzeichnisse für Caddy und die Konfigurationsdatei Caddyfile:

mkdir -p /opt/paperless/caddy
chown -R paperless:paperless /opt/paperless/caddy

Wir erstellen die Datei Caddyfile im Verzeichnis /opt/paperless/caddy mit folgendem Inhalt:

{
    email [email protected] # Ihre E-Mail-Adresse für Let's Encrypt Benachrichtigungen
}

paperless-demo.wz-it.com { # Ersetzen Sie dies durch Ihre Domain
    reverse_proxy http://127.0.0.1:8000
}

Hier geben wir die Domain an, unter der Paperless-ngx erreichbar sein soll, und leiten den Verkehr an den Paperless-ngx Webserver weiter. Ersetzen Sie paperless-demo.wz-it.com durch Ihre eigene Domain. Die E-Mail-Adresse wird für die Let's Encrypt Zertifikatsregistrierung verwendet. Sie sollten eine gültige E-Mail-Adresse angeben, um Benachrichtigungen über Zertifikatsprobleme zu erhalten.

Schritt 6: Paperless-ngx und Caddy starten

Wir starten nun Paperless-ngx und Caddy mit Docker Compose. Wir wechseln in das Verzeichnis /opt/paperless und führen den folgenden Befehl aus:

sudo -u paperless docker-compose up -d

Jetzt sollte Paperless-ngx über HTTPS erreichbar sein. Sie können dies überprüfen, indem Sie in Ihrem Browser https://paperless-demo.wz-it.com aufrufen. Sie sollten die Paperless-ngx Login-Seite sehen. Paperless-ngx Login Hier können Sie sich mit dem Admin-Benutzer anmelden, den Sie während der Installation festgelegt haben. Der Standardbenutzername ist paperless und das Passwort ist das, das Sie bei der Installation festgelegt haben.

Firewall-Konfiguration

Wenn Sie eine Firewall auf Ihrem Server eingerichtet haben, stellen Sie sicher, dass die Ports 80 (HTTP) und 443 (HTTPS) geöffnet sind. Dies ist notwendig, damit Caddy die Anfragen über HTTP und HTTPS entgegennehmen kann. Sie können dies mit ufw tun oder über die Firewall Ihres Cloud-Anbieters konfigurieren.

Fazit

Mit dieser Anleitung haben Sie Paperless-ngx erfolgreich auf einem Ubuntu 24.04 Server installiert und mit Caddy ein SSL-Zertifikat von Let's Encrypt eingerichtet. Sie können nun Ihre Dokumente sicher und privat verwalten, ohne auf externe Cloud-Dienste angewiesen zu sein. Bei der Installation handelt es sich um eine absolute Basisinstallation. Um bestimmte Features zu nutzen, sind evtl. weitere Schritte notwendig, um diese zu aktivieren. In der offiziellen Dokumentation von Paperless-ngx finden Sie weitere Informationen zu den verfügbaren Funktionen und wie Sie diese konfigurieren können: Paperless-ngx Dokumentation.