Zum Inhalt springen
SONOYA.com
Web & Code

Stirling-PDF selbst hosten: PDF-Werkzeuge ohne Upload

PDFs zusammenführen, verkleinern, schwärzen und per OCR durchsuchbar machen, ohne Upload zu Online-Diensten: Stirling-PDF mit Docker einrichten.

Von

PDF-Symbol auf dunkelgrünem Verlauf für Stirling-PDF, das PDF-Werkzeuge auf dem eigenen Server statt bei Online-Konvertern bereitstellt

Steuerbescheid, Arbeitsvertrag, Kontoauszüge: Genau die Dokumente, die Du am häufigsten zusammenfügen, verkleinern oder umwandeln musst, enthalten die sensibelsten Daten. Und trotzdem landen sie oft bei einem der vielen kostenlosen Online-Konverter, deren Betreiber Du nicht kennst und deren Server Du nicht kontrollierst.

Stirling-PDF bietet über 50 PDF-Werkzeuge in einer Weboberfläche, die auf Deinem eigenen Server läuft: zusammenführen, aufteilen, Seiten drehen und sortieren, komprimieren, in Word oder Bilder umwandeln, Texterkennung, Schwärzen, Wasserzeichen und Signaturen. Die Dateien verlassen Dein Netz nicht. Diese Anleitung installiert Stirling-PDF mit Docker, schaltet die Anmeldung ein und richtet die deutsche Texterkennung ein. Stand ist Stirling-PDF 3.3, Grundlage sind die Beispieldateien im offiziellen GitHub-Repository.

Was Du brauchst

Einen Linux-Server, Mini-PC oder Raspberry Pi 4 oder 5 mit Docker und dem Compose-Plugin. Stirling-PDF ist ein Java-Programm und braucht für sich rund 1 bis 2 GB RAM, je nach Werkzeug auch mehr. Auf einem Raspberry Pi mit 4 GB läuft es, auf einem Gerät mit 8 GB ist es angenehmer.

Für Zugriff von außen brauchst Du eine Subdomain mit HTTPS. Für die Nutzung im Heimnetz oder über ein VPN reicht die IP-Adresse.

Schritt 1: Stirling-PDF mit Docker Compose starten

Lege die Ordner an und erstelle die Compose-Datei:

Code
mkdir -p ~/stirling-pdf/tessdata ~/stirling-pdf/configs ~/stirling-pdf/logs
cd ~/stirling-pdf
nano compose.yml

Füge diesen Inhalt ein:

Code
services:
  stirling-pdf:
    image: docker.stirlingpdf.com/stirlingtools/stirling-pdf:latest
    container_name: stirling-pdf
    restart: unless-stopped
    ports:
      - "8080:8080"
    volumes:
      - ./tessdata:/usr/share/tessdata
      - ./configs:/configs
      - ./logs:/logs
    environment:
      SECURITY_ENABLELOGIN: "true"
      SECURITY_INITIALLOGIN_USERNAME: admin
      SECURITY_INITIALLOGIN_PASSWORD: ein-langes-startpasswort
      SYSTEM_DEFAULTLOCALE: de-DE
      SYSTEM_MAXFILESIZE: "200"

Was die Einstellungen bewirken:

  • SECURITY_ENABLELOGIN schaltet die Anmeldung ein. Ohne sie kann jeder im Netz die Werkzeuge nutzen. Im Heimnetz mag das gehen, sobald der Dienst aus dem Internet erreichbar ist, ist der Login Pflicht.
  • SECURITY_INITIALLOGIN_USERNAME und SECURITY_INITIALLOGIN_PASSWORD legen das erste Administratorkonto fest. Ersetze das Passwort durch ein eigenes. Es gilt nur für die erste Anmeldung, danach änderst Du es in der Oberfläche.
  • SYSTEM_DEFAULTLOCALE: de-DE stellt die Oberfläche auf Deutsch.
  • SYSTEM_MAXFILESIZE begrenzt die Größe hochgeladener Dateien in Megabyte.
  • Der Ordner tessdata enthält die Sprachdaten für die Texterkennung. Dazu gleich mehr.

Starte den Container:

Code
docker compose up -d

Der erste Start dauert etwa eine Minute, weil Java hochfahren muss. Mit docker compose logs -f siehst Du, wann Stirling-PDF bereit ist.

Schritt 2: Anmelden und Passwort ändern

Öffne http://IP-DES-SERVERS:8080 im Browser und melde Dich mit dem Benutzer admin und dem Startpasswort an. Ändere das Passwort danach in den Kontoeinstellungen. Als Administrator kannst Du dort auch weitere Benutzer für Familie oder Kollegen anlegen.

Entferne anschließend die Zeile mit SECURITY_INITIALLOGIN_PASSWORD aus der compose.yml, damit das Startpasswort nicht im Klartext auf dem Server liegen bleibt, und starte neu mit docker compose up -d.

Schritt 3: Deutsche Texterkennung einrichten

Gescannte Dokumente sind für den Computer nur Bilder. Mit der Texterkennung, kurz OCR, macht Stirling-PDF daraus durchsuchbare PDFs, in denen Du Text markieren und kopieren kannst. Die Erkennung übernimmt Tesseract, und Tesseract braucht für jede Sprache eine Datei mit Sprachdaten.

Lade die Dateien für Deutsch und Englisch aus dem offiziellen Tesseract-Repository in den Ordner tessdata:

Code
cd ~/stirling-pdf/tessdata
curl -LO https://github.com/tesseract-ocr/tessdata_fast/raw/main/deu.traineddata
curl -LO https://github.com/tesseract-ocr/tessdata_fast/raw/main/eng.traineddata
cd ..
docker compose restart

Die Variante tessdata_fast ist schnell und für normale Dokumente genau genug. Weil der Ordner als Volume eingebunden ist, ersetzt er den Inhalt im Container, deshalb lädst Du Englisch mit herunter. Nach dem Neustart steht Deutsch im OCR-Werkzeug zur Auswahl.

Die nützlichsten Werkzeuge im Alltag

Die Oberfläche hat eine Suchleiste, über die Du jedes Werkzeug schnell findest. Diese wirst Du am häufigsten brauchen:

  • Zusammenführen: mehrere PDFs zu einem, etwa alle Belege für die Steuererklärung.
  • Komprimieren: große Scans auf eine Größe bringen, die ein Upload-Formular von Behörde oder Versicherung annimmt.
  • OCR: Scans durchsuchbar machen.
  • Schwärzen: Textstellen dauerhaft entfernen, etwa Kontonummern, bevor Du ein Dokument weitergibst. Anders als ein schwarzer Balken in einem normalen PDF-Programm entfernt das Werkzeug den Text darunter, wenn Du die Option zum Umwandeln in ein Bild-PDF wählst.
  • Seiten organisieren: Reihenfolge ändern, Seiten löschen oder drehen, etwa nach einem schief eingezogenen Scan.
  • Konvertieren: PDF in Word, Bilder oder umgekehrt.

Mehrere Schritte nacheinander lassen sich als Pipeline speichern. So wird aus „zusammenführen, OCR, komprimieren“ ein einziger Klick.

Von außen erreichbar machen

Willst Du Stirling-PDF auch unterwegs nutzen, gehört HTTPS davor, zum Beispiel mit Caddy und einem Eintrag wie diesem in /etc/caddy/Caddyfile:

Code
pdf.example.com {
    reverse_proxy localhost:8080
}

Läuft Coolify, trägst Du die Domain dort ein. Noch sicherer ist es, den Dienst gar nicht ins Internet zu stellen und unterwegs über ein VPN wie Tailscale darauf zuzugreifen. Wenn Du mehrere Dienste mit einer gemeinsamen Anmeldung absichern willst, kann Stirling-PDF auch per OpenID Connect an einen Identity Provider angebunden werden, wie in Authentik einrichten: ein Login für alle eigenen Dienste beschrieben. Einige dieser Anmeldeverfahren gehören allerdings zu den kostenpflichtigen Funktionen.

Typische Fehler

Die Seite lädt nicht, der Container startet immer wieder neu. Meist fehlt Arbeitsspeicher. Prüfe mit docker compose logs, ob dort OutOfMemoryError steht, und gib dem Server mehr RAM oder schließe andere Dienste.

OCR bietet Deutsch nicht an. Die Datei deu.traineddata liegt nicht im richtigen Ordner, oder der Container wurde nicht neu gestartet. Prüfe mit docker exec stirling-pdf ls /usr/share/tessdata.

Große Dateien brechen beim Hochladen ab. Erhöhe SYSTEM_MAXFILESIZE. Läuft ein Reverse Proxy davor, hat auch er oft eine eigene Grenze für die Größe von Uploads.

Fazit

Stirling-PDF ersetzt die vielen Online-Konverter durch einen Dienst, der Deine Dokumente nicht aus der Hand gibt. Die Einrichtung dauert eine Viertelstunde, die wichtigsten Punkte sind der Login und die deutschen Sprachdaten für die Texterkennung. Wenn Du Deine Papierdokumente nicht nur bearbeiten, sondern automatisch archivieren willst, ist Paperless-ngx: Papierpost scannen und automatisch ablegen die passende Ergänzung.

Weiterlesen.