paperless-ngx: Übertragungsverschlüsselung (encryption in transit) mithilfe von traefik einrichten

Nachdem wir paperless-ngx mit Docker-Compose und der standardmäßigen Installationsroutine installiert haben, gibt es ein paar empfehlenswerte Aufgaben. Eine davon: Verschlüsselung in transit, also Verschlüsselung bei der Übertragung von Daten, einrichten. SSL/TLS/HTTPS sind die passenden Schlagworte. Mit zwei relativ einfachen Änderungen können wir dies einrichten:

Schritt 1: Docker-Compose Override Textdatei einrichten – Texteditor öffnen

nano /home/user/paperless-ngx/docker-compose.override.yml

Schritt 2: Docker-Compose Override Textdatei einrichten – Text einfügen

services:
  traefik:
    image: "traefik:v3.5"
    container_name: "traefik"
    command:
      - "--api=true"
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entryPoints.websecure.address=:443"
      - "--entryPoints.websecure.transport.respondingTimeouts.readTimeout=24h"
      - "--certificatesresolvers.myresolver.acme.tlschallenge=true"
      - "--certificatesresolvers.myresolver.acme.email=info@manage-it-for.me"
      - "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.dashboard.rule=Host(`db.coders-home.de`) && (PathPrefix(`/api`) || PathPrefix(`/dashboard`))"
      - "traefik.http.routers.dashboard.service=api@internal"
      - "traefik.http.routers.dashboard.middlewares=auth"
      - "traefik.http.routers.dashboard.entrypoints=websecure"
      - "traefik.http.middlewares.auth.basicauth.users=admin:$$apr1$$slfgyrx1$$lVgrg32ghLPscs.1Y0dIc."
    ports:
      - "443:443"
    volumes:
      - certs:/letsencrypt
      - "/var/run/docker.sock:/var/run/docker.sock:ro"
  webserver:
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.paperless.rule=Host(`pl.coders-home.de`)"
      - "traefik.http.routers.paperless.entrypoints=websecure"
      - "traefik.http.routers.paperless.tls.certresolver=myresolver"
      - "traefik.http.routers.paperless.middlewares=limit@docker"
      - "traefik.http.middlewares.limit.buffering.maxRequestBodyBytes=100737418240"
      - "traefik.http.middlewares.limit.buffering.memRequestBodyBytes=200000000"
      - "traefik.http.middlewares.limit.buffering.maxResponseBodyBytes=100737418240"
      - "traefik.http.middlewares.limit.buffering.memResponseBodyBytes=200000000"
      - "traefik.http.middlewares.testheader.headers.stsSeconds=15552000"

volumes:
  certs:

Gespeichert wird die Datei in nano mittels „Strg+x“ dann „y“ dann „Enter“.

Schritt 3: paperless URL ändern

In der Datei docker-compose.env müssen wir nun die URL ändern. Das folgende Kommando fügt die Einstellung hinzu, sofern nötig. Oder ändert die bestehende Einstellung, wenn bereits vorhanden.

grep -q '^PAPERLESS_URL=' docker-compose.env && sed -i 's|^PAPERLESS_URL=.*|PAPERLESS_URL=https://pl.coders-home.de|' docker-compose.env || echo 'PAPERLESS_URL=https://pl.coders-home.de' >> docker-compose.env

Wichtig bei Schritt 2 und 3: Alle Vorkommnisse von „pl.coders-home.de“ natürlich mit eurer Domain oder Subdomain ersetzen.

Schritt 4: Docker-Compose neustarten

Um alle Änderungen anzuwenden:

docker compose -f /home/user/paperless-ngx/docker-compose.yml up -d

Nach ein paar Augenblicken ist die Instanz unter der neuen URL mit SSL verfügbar. Ein bisschen Zeit muss deshalb vergehen, weil das SSL-Zertifikat via traefik von Lets Encrypt angefordert werden muss. In der Zwischenzeit liefert traefik ein Standardzertifikat aus, welches in Webbrowsern eine Fehlermeldung erzeugt.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert