Sicherlich wolltest auch du schon einmal mehrere PDF-Dokumente zu einem zusammenführen, Texte daraus extrahieren, PDF’s zuschneiden, konvertieren, sonst wie ändern oder ein Passwort entfernen/hinzufügen…. – die Liste ist lang.
Dann bist du bestimmt auch über pdf24.org gestolpert, bzw. den Dienst von Adobe selbst, den du aber kostenlos nur in einem Testzeitraum von 7 Tagen nutzen kannst. In beiden Fällen hattest du bestimmt Bauchschmerzen, die PDF zum Anbieter hochzuladen – Datenschutz lässt grüßen.
Aber da ist ein Licht am Ende des Tunnels. Denn du kannst das alles selber hosten, wenn du einen kleinen Server besitzt und ein paar Minuten Arbeit investierst. Ich habe dafür mal wieder meinen Proxmox-Server genutzt, der läuft hier so wie so.
Aber beginnen wir ganz am Anfang. Was du also brauchst ist der Proxmox-Host, in dem du einen Container (CT) mit Alpine als Basis-Betriebssystem installiert. 8 GB Festplattenkapazität und 512 MB RAM reichen hier völlig.
Wenn das soweit erledigt ist, startest du den Container, loggst dich ein und bringst den Container erstmal auf den aktuellen Stand mittels:
Stirling-PDF:~# apk update && apk upgrade
Im nächsten Schritt installieren wir Docker und konfigurieren das System so, das Docker beim Systemstart automatisch mit gestartet wird.
Stirling-PDF:~# apk add --update docker openrc
Stirling-PDF:~# rc-update add docker boot
Stirling-PDF:~# service docker start
Dann prüfen wir kurz, ob der Docker-Dienst läuft, aber wenn die Befehle oben ohne Fehler akzeptiert wurden, sollte dem auch so sein:
Stirling-PDF:~# service docker status
* status: started
Als nächstes legen wir und die nötigen Datenverzeichnisse (Docker-Volumes) an:
Stirling-PDF:~# mkdir -p /opt/stirling-pdf/trainingData
Stirling-PDF:~# mkdir /opt/stirling-pdf/extraConfigs
Dann starten wir den Stirling-PDF-Docker-Container (heruntergeladen wird er dabei automatisch)
Stirling-PDF:~# docker run -d \
-p 80:8080 \
-v /opt/stirling-pdf/trainingData:/usr/share/tesseract-ocr/5/tessdata \
-v /opt/stirling-pdf/extraConfigs:/configs \
-v /opt/stirling-pdf/logs:/logs \
-e DOCKER_ENABLE_SECURITY=true \
--name stirling-pdf \
--restart always \
frooodle/s-pdf:lates
Das Ergebnis kannst du mit docker ps
überprüfen:
Stirling-PDF:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
61df2d98005b frooodle/s-pdf:latest "tini -- /scripts/in…" 2 days ago Up 24 hours 0.0.0.0:80->8080/tcp, :::80->8080/tcp stirling-pdf
Grundsätzlich ist Stirling-PDF damit bereits lauffähig, du kannst den Container über dessen Adresse mittels http://<IP> aufrufen:
OCR
Für die OCR-Texterkennung, die du sicherlich auch haben möchtest, sind noch ein paar Ergänzungen nötig:
Stirling-PDF:~# cd /opt/stirling-pdf/trainingData
Stirling-PDF:~# wget https://github.com/tesseract-ocr/tessdata/raw/main/deu.traineddata
Das war es auch schon. Darüber hinaus kannst du auch weitere Anpassungen machen, indem du die Datei /opt/stirling-pdf/extraConfigs/settings.yml bearbeitest.
Stirling-PDF:~# nano /opt/stirling-pdf/extraConfigs/settings.yml
Dort kannst du u.a. die benutzeranmeldung aktivieren, initialen Username und Passwort (Standard: admin/stirling) festlegen oder aber auch Funktionen, die du nicht brauchst entfernen (die Liste dazu findest du unter Stirling-PDF/Endpoint-groups.md at main · Stirling-Tools/Stirling-PDF (github.com). Denke nur daran, bei gemachten Änderungen, den Container im Anschluss neu zu starten:
Stirling-PDF:~# docker restart stirling-pdf
Update
Ach ja….sollte ein Update verfügbar sein, musst du den Container anhalten, löschen, den neuen herunterladen und dann mit dem Docker run-Befehl (wie oben) wieder neu starten:
Stirling-PDF:~# docker stop stirling-pdf
Stirling-PDF:~# docker rm stirling-pdf
Stirling-PDF:~# docker pull frooodle/s-pdf:latest
Stirling-PDF:~# docker run -d \
-p 80:8080 \
-v /opt/stirling-pdf/trainingData:/usr/share/tesseract-ocr/5/tessdata \
-v /opt/stirling-pdf/extraConfigs:/configs \
-v /opt/stirling-pdf/logs:/logs \
-e DOCKER_ENABLE_SECURITY=true \
--name stirling-pdf \
--restart always \
frooodle/s-pdf:latest
Viel Spaß damit, die Möglichkeiten sind schier endlos: