Paperless-ngx Installation auf Ubuntu 24.04 mit Caddy und automatischen SSL-Zertifikaten
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:

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.
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.