Befunde aus dem ersten echten Erstinstallations-Test auf frischen Debian-12-
und Debian-13-Containern. Der Weg selbst hat getragen (Basis-Install,
Instanz-Anlage, zweite Instanz, Update mit Rauchtest, Rollback) — diese
Stellen haben gelogen oder gefehlt:
- Das Ghostscript-Backports-Angebot auf Debian 12 war ein garantierter
Leerlauf, der "aktualisiert ✓" meldete: bookworm-backports enthaelt gar
kein ghostscript (am Paketindex verifiziert). Die Routine sucht jetzt den
echten Kandidaten, vergleicht vorher/nachher und raeumt eine nur zur Probe
angelegte Quelle wieder weg.
- Derselbe untaugliche Rat stand in der Preflight-Meldung, der
pdfa_level-Warnung, config.example.toml und vier Doku-Dateien — ueberall
ersetzt durch die echten Optionen.
- Mehrzeilige Log-Hinweise waren durch "echo -e" zerrissen und nicht
kopierbar; log_* nutzt jetzt printf mit %s.
- pip-freeze.txt landete beim Rollback als /pip-freeze.txt im
Wurzelverzeichnis, liegt jetzt unter opt/pdf-ocr-hotfolder/.
- git und sudo fehlen auf dem Proxmox-Debian-Template; "sudo ./install.sh"
scheitert dort. Beide Wege dokumentiert, git als Voraussetzung ergaenzt,
HTTPS-Clone als Normalfall.
- Rollback: systemctl start kann kein Glob. journald-Reparatur: Instanzen
danach neu starten, sonst bleibt das Journal leer.
254 Tests gruen.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Vor dem Rollout durchgesehen und die verbliebenen Stellen geschlossen, an
denen etwas schiefgehen konnte, ohne dass es irgendwo sichtbar wurde.
Datenverlust:
- veraPDF: das in [verapdf].binary konfigurierte Programm wird im Preflight
geprueft. Bisher galt bei falschem Pfad JEDE Datei als "nicht konform" —
Ergebnis nach error/, Original geloescht (Default delete). run_verapdf()
trennt jetzt ausserdem ein echtes FAIL-Urteil von einer Stoerung
(VeraPdfUnavailable: nicht startbar, abgestuerzt, kein PASS/FAIL in der
Ausgabe). Bei Stoerung wandern Original UND Ergebnis nach error/, das
Original wird nicht entsorgt.
- Gleichnamige Dateien wurden in outgoing/, error/ und beim Ordner-Upload
mit abweichendem target kommentarlos ueberschrieben. Jetzt Zeitstempel
daneben, mit Warnung; ProcessResult.output traegt den echten Pfad.
Robustheit:
- Kaputtes oder nicht lesbares TOML beim Start: Exit 2 statt Traceback.
- RestartPreventExitStatus=2 in der Unit — Exit 2 (Config/Preflight) laeuft
nicht mehr endlos neu, die Instanz bleibt sichtbar failed stehen.
- Toter watchdog-Observer wird erkannt: Exit 3, systemd setzt den Watch neu
auf. Vorher blieb die Unit "active" und verarbeitete nichts mehr.
- Relative Pfade in [paths]/archive_dir/target sind ein Config-Fehler statt
still unter /opt zu landen.
- Fehler beim Archivieren entwertet den Durchlauf nicht mehr: Upload und
Mail laufen, Sichtbarkeit ueber log.error + "OK mit Warnung"-Mail.
- Nicht-PDFs in incoming/ werden beim Start-Scan gesammelt gemeldet.
- Logging explizit nach stdout (die Doku versprach das schon).
Struktur:
- Neue lib/common.sh, von install.sh und update.sh gesourct. Die doppelte
venv_is_healthy() gibt es nur noch einmal, in der gruendlichen Fassung —
die schlanke in install.sh haette eine nach einem Distro-Sprung kaputte
venv als gesund durchgewunken (nachgewiesen).
- install.sh warnt in Containern, wenn systemd-journald nicht laeuft.
Doku: Dateisystem-Festlegung (ext4/xfs/zfs, kein CIFS/NFS wegen inotify),
Debian 13 in LXC auf Proxmox scheitert an journald (243/CREDENTIALS,
AppArmor blockiert sd-mkdcreds) inkl. Abhilfe, echte Speicher-Messwerte,
Exit-Code-Tabelle.
254 Tests gruen (vorher 152).
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>