Das Problem mit PDF-Tools

Das Internet ist voll von PDF-Tools – und fast alle haben einen Haken. Zwei PDFs zusammenfügen? Kreditkarte hinterlegen. Eine Seite drehen? Nur mit Wasserzeichen. Text aus einem Scan extrahieren? Premium-Funktion.

Neben den Kosten gibt es ein weiteres Problem: Die Dokumente landen auf fremden Servern. Gehaltsabrechnungen, Verträge, Arztbriefe – einfach hochgeladen, weil es gerade praktisch war.

Stirling-PDF löst beides.


Was ist Stirling-PDF?

Stirling-PDF ist eine selbstgehostete Web-Anwendung mit über 50 PDF-Funktionen. Alles läuft lokal, in einem einzigen Docker-Container, ohne Cloud-Anbindung:

  • ✂️ PDFs zusammenfügen, aufteilen, komprimieren
  • 🔄 Seiten drehen, neu anordnen, löschen
  • 🔍 OCR – Text aus gescannten Dokumenten extrahieren
  • 🔒 PDFs verschlüsseln, entschlüsseln, mit Passwort schützen
  • 🖼️ PDF zu Bild, Bild zu PDF, Word zu PDF
  • ✍️ Wasserzeichen hinzufügen, Metadaten bearbeiten
  • 📋 Formulare ausfüllen

Die Weboberfläche ist übersichtlich, auf Deutsch verfügbar und funktioniert direkt im Browser – keine Installation, kein Account.

💡 Niveau: Einsteigerfreundlich. Es werden nur Docker und Docker Compose vorausgesetzt.


Architektur

Stirling-PDF ist bewusst schlank gehalten. Kein Verbund aus mehreren Diensten – alles läuft in einem einzigen Container:

┌─────────────────────────────────────────────┐
│          stirling-pdf (Port 8080)           │
│                                             │
│  Web-UI  │  PDF-Engine  │  OCR (Tesseract)  │
│                                             │
│  ./DATA/trainingData  → OCR-Sprachdaten     │
│  ./DATA/extraConfigs  → Konfiguration       │
│  ./DATA/customFiles   → eigene Dateien      │
│  ./DATA/logs          → Logdateien          │
│  ./DATA/pipeline      → Automatisierungen   │
└─────────────────────────────────────────────┘
         │
         └── erreichbar über http://server-ip:8088

Ein Container, fünf gemountete Verzeichnisse. Das macht Stirling-PDF so ideal für den Einstieg.


Vorbereitung

Docker prüfen

docker --version
docker compose version

Falls Docker noch nicht installiert ist, empfiehlt sich das offizielle Installationsskript:

curl -fsSL https://get.docker.com | sh

Verzeichnisstruktur anlegen

mkdir -p /opt/stirling-pdf
cd /opt/stirling-pdf

mkdir -p DATA/trainingData \
         DATA/extraConfigs \
         DATA/customFiles \
         DATA/logs \
         DATA/pipeline

Die Verzeichnisse werden vorab erstellt, damit Docker keine Root-Verzeichnisse anlegt – ein häufiger Fallstrick beim ersten Start.

Verzeichnis Inhalt
trainingData Sprachdaten für OCR (Tesseract .traineddata-Dateien)
extraConfigs Konfigurationsdateien von Stirling-PDF
customFiles Eigene Dateien, die in der App verfügbar sein sollen
logs Logdateien des Servers
pipeline Konfigurationen für automatisierte PDF-Workflows

docker-compose.yml

Vollständige Compose-Datei
version: '3.3'
services:
  stirling-pdf:
    image: docker.stirlingpdf.com/stirlingtools/stirling-pdf:latest
    container_name: stirling-pdf
    ports:
      - '8088:8080'
    volumes:
      - ./DATA/trainingData:/usr/share/tessdata
      - ./DATA/extraConfigs:/configs
      - ./DATA/customFiles:/customFiles/
      - ./DATA/logs:/logs/
      - ./DATA/pipeline:/pipeline/
    environment:
      - DISABLE_ADDITIONAL_FEATURES=false
      - LANGS=en_GB
    restart: unless-stopped
ports
ports:
  - '8088:8080'

Format: HOST:CONTAINER. Der Container lauscht intern auf Port 8080, nach außen ist er über 8088 erreichbar. Der Host-Port kann frei gewählt werden, solange er nicht bereits belegt ist.

volumes
volumes:
  - ./DATA/trainingData:/usr/share/tessdata
  - ./DATA/extraConfigs:/configs
  - ./DATA/customFiles:/customFiles/
  - ./DATA/logs:/logs/
  - ./DATA/pipeline:/pipeline/

Format: HOST_PFAD:CONTAINER_PFAD. Alles, was Stirling-PDF in seine internen Verzeichnisse schreibt, landet auf dem Host und überlebt damit jeden Container-Neustart oder Update.

environment
environment:
  - DISABLE_ADDITIONAL_FEATURES=false
  - LANGS=en_GB

DISABLE_ADDITIONAL_FEATURES=false aktiviert alle Funktionen inklusive OCR, Komprimierung und Konvertierung.

LANGS definiert die OCR-Sprache. Für deutsche Dokumente kann de ergänzt werden:

- LANGS=en_GB,de

Start

docker compose up -d

Beim ersten Start wird das Image heruntergeladen – je nach Verbindung dauert das 1–2 Minuten. Danach ist Stirling-PDF unter http://server-ip:8088 erreichbar.

# Logs beobachten
docker compose logs -f

# Status prüfen
docker compose ps

Updates & Wartung

Da alle Daten in ./DATA auf dem Host liegen, gehen bei einem Update keine Einstellungen oder Daten verloren.

# Neues Image holen und Container neu starten
docker compose pull
docker compose up -d

# Container stoppen
docker compose down

# Logs anzeigen
docker compose logs -f stirling-pdf

Fazit

Stirling-PDF ist ein solider Einstieg ins Self-Hosting: ein Container, keine Datenbank, minimale Konfiguration – und ein vollwertiger Ersatz für gängige Online-PDF-Tools. Die eigenen Dokumente bleiben dort, wo sie hingehören.