- #4: LXC/Container Drop-in (lxc-compat.conf) deaktiviert systemd-Hardening; Installer erkennt Container automatisch und bietet Drop-in an - #5: WorkingDirectory=/opt/pdf-ocr-hotfolder in Template-Unit ergänzt - #6: Installer bietet auf Debian 12 bei betroffenen GS-Versionen automatisch bookworm-backports Upgrade an (statt nur Warnung) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,5 +1,16 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## [0.3.1] - 2026-04-10
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- **Issue #4**: LXC/Container-Kompatibilität — systemd-Hardening (`PrivateTmp`, `ProtectSystem`, etc.)
|
||||||
|
verursacht Error 226/NAMESPACE in LXC-Containern. Installer erkennt Container-Umgebung automatisch
|
||||||
|
und bietet ein Drop-in an. Zusätzlich liegt `systemd/lxc-compat.conf` als Vorlage im Repo.
|
||||||
|
- **Issue #5**: `WorkingDirectory=/opt/pdf-ocr-hotfolder` in der systemd Template-Unit ergänzt —
|
||||||
|
ohne diesen Eintrag konnte das Python-Modul nicht gefunden werden.
|
||||||
|
- **Issue #6**: Auf Debian 12 bietet der Installer bei betroffenen Ghostscript-Versionen (10.0.0–10.02.0)
|
||||||
|
jetzt automatisch an, bookworm-backports zu aktivieren und GS zu upgraden (statt nur zu warnen).
|
||||||
|
|
||||||
## [0.3.0] - 2026-04-09
|
## [0.3.0] - 2026-04-09
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|||||||
@@ -190,6 +190,24 @@ Service-User braucht **rw** auf alle vier Verzeichnisse unter `/var/lib/pdf-ocr-
|
|||||||
sudo chown -R DOMAIN\\scanuser:DOMAIN\\scangroup /var/lib/pdf-ocr-hotfolder
|
sudo chown -R DOMAIN\\scanuser:DOMAIN\\scangroup /var/lib/pdf-ocr-hotfolder
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### LXC/Container: Error 226/NAMESPACE
|
||||||
|
In LXC-Containern schlagen systemd-Hardening-Optionen fehl. Der Installer erkennt Container automatisch und bietet ein Drop-in an. Manuell:
|
||||||
|
```bash
|
||||||
|
sudo mkdir -p /etc/systemd/system/pdf-ocr-hotfolder@.service.d/
|
||||||
|
sudo cp /opt/pdf-ocr-hotfolder/systemd/lxc-compat.conf \
|
||||||
|
/etc/systemd/system/pdf-ocr-hotfolder@.service.d/
|
||||||
|
sudo systemctl daemon-reload
|
||||||
|
sudo systemctl restart 'pdf-ocr-hotfolder@*'
|
||||||
|
```
|
||||||
|
|
||||||
|
### Ghostscript PDF/A-Bug auf Debian 12
|
||||||
|
GS 10.00.0–10.02.0 (Debian 12 Default) zerstört OCR bei `pdfa_level` + `skip_text=true`. Der Installer bietet automatisch bookworm-backports an. Manuell:
|
||||||
|
```bash
|
||||||
|
echo 'deb http://deb.debian.org/debian bookworm-backports main' | \
|
||||||
|
sudo tee /etc/apt/sources.list.d/bookworm-backports.list
|
||||||
|
sudo apt update && sudo apt install -t bookworm-backports ghostscript
|
||||||
|
```
|
||||||
|
|
||||||
### veraPDF-Validierung schlägt immer fehl
|
### veraPDF-Validierung schlägt immer fehl
|
||||||
veraPDF binary prüfen (`[verapdf].binary`). Wenn nicht zwingend gebraucht: `enabled = false`.
|
veraPDF binary prüfen (`[verapdf].binary`). Wenn nicht zwingend gebraucht: `enabled = false`.
|
||||||
|
|
||||||
@@ -221,5 +239,5 @@ MIT — © Sonith UG
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
**Version:** 0.2.0
|
**Version:** 0.3.1
|
||||||
**Repo:** https://gitea.sonith.de/sonith_ug/pdf-ocr-hotfolder
|
**Repo:** https://gitea.sonith.de/sonith_ug/pdf-ocr-hotfolder
|
||||||
|
|||||||
+39
-5
@@ -52,7 +52,7 @@ install_base() {
|
|||||||
icc-profiles-free ca-certificates curl
|
icc-profiles-free ca-certificates curl
|
||||||
log_info "System-Pakete ok ✓"
|
log_info "System-Pakete ok ✓"
|
||||||
|
|
||||||
# Ghostscript-Versions-Check (Issue #3)
|
# Ghostscript-Versions-Check (Issue #3 + Issue #6)
|
||||||
if command -v gs >/dev/null 2>&1; then
|
if command -v gs >/dev/null 2>&1; then
|
||||||
GS_VER="$(gs --version 2>/dev/null || echo 0.0)"
|
GS_VER="$(gs --version 2>/dev/null || echo 0.0)"
|
||||||
log_info "Ghostscript: $GS_VER"
|
log_info "Ghostscript: $GS_VER"
|
||||||
@@ -62,16 +62,50 @@ install_base() {
|
|||||||
log_warn "═══════════════════════════════════════════════════════════════"
|
log_warn "═══════════════════════════════════════════════════════════════"
|
||||||
log_warn "Ghostscript $GS_VER ist vom PDF/A-Bug betroffen (10.0.0–10.02.0)."
|
log_warn "Ghostscript $GS_VER ist vom PDF/A-Bug betroffen (10.0.0–10.02.0)."
|
||||||
log_warn "Mit pdfa_level + skip_text=true kann ocrmypdf KEINE PDFs verarbeiten."
|
log_warn "Mit pdfa_level + skip_text=true kann ocrmypdf KEINE PDFs verarbeiten."
|
||||||
log_warn ""
|
|
||||||
log_warn "Workarounds:"
|
|
||||||
log_warn " 1. ghostscript aus bookworm-backports installieren (>=10.02.1)"
|
|
||||||
log_warn " 2. In der Config [ocr].pdfa_level = \"\" setzen (Default ab v0.2.2)"
|
|
||||||
log_warn "═══════════════════════════════════════════════════════════════"
|
log_warn "═══════════════════════════════════════════════════════════════"
|
||||||
echo
|
echo
|
||||||
|
# Prüfe ob Debian bookworm (12) — Backports anbieten
|
||||||
|
if grep -q 'bookworm' /etc/os-release 2>/dev/null; then
|
||||||
|
read -r -p "Ghostscript via bookworm-backports upgraden? [J/n]: " UPGRADE_GS
|
||||||
|
UPGRADE_GS="${UPGRADE_GS:-J}"
|
||||||
|
if [[ "$UPGRADE_GS" =~ ^[JjYy]$ ]]; then
|
||||||
|
log_info "Aktiviere bookworm-backports..."
|
||||||
|
if ! grep -q 'bookworm-backports' /etc/apt/sources.list /etc/apt/sources.list.d/*.list 2>/dev/null; then
|
||||||
|
echo 'deb http://deb.debian.org/debian bookworm-backports main' \
|
||||||
|
> /etc/apt/sources.list.d/bookworm-backports.list
|
||||||
|
apt-get update -qq
|
||||||
|
fi
|
||||||
|
apt-get install -y -t bookworm-backports ghostscript
|
||||||
|
GS_VER_NEW="$(gs --version 2>/dev/null || echo '?')"
|
||||||
|
log_info "Ghostscript aktualisiert: $GS_VER → $GS_VER_NEW ✓"
|
||||||
|
else
|
||||||
|
log_warn "Workaround: In der Config [ocr].pdfa_level = \"\" setzen (Default ab v0.2.2)"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
log_warn "Kein Debian bookworm erkannt — manuelles Upgrade nötig."
|
||||||
|
log_warn "Workaround: In der Config [ocr].pdfa_level = \"\" setzen (Default ab v0.2.2)"
|
||||||
|
fi
|
||||||
|
echo
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# LXC/Container-Erkennung (Issue #4)
|
||||||
|
if systemd-detect-virt --container -q 2>/dev/null; then
|
||||||
|
VIRT_TYPE="$(systemd-detect-virt --container 2>/dev/null || echo 'container')"
|
||||||
|
log_warn "Container-Umgebung erkannt ($VIRT_TYPE)."
|
||||||
|
log_warn "systemd-Hardening kann in Containern fehlschlagen (Error 226/NAMESPACE)."
|
||||||
|
read -r -p "LXC-Kompatibilitäts-Drop-in installieren? [J/n]: " LXC_FIX
|
||||||
|
LXC_FIX="${LXC_FIX:-J}"
|
||||||
|
if [[ "$LXC_FIX" =~ ^[JjYy]$ ]]; then
|
||||||
|
local LXC_DROPIN_DIR="/etc/systemd/system/pdf-ocr-hotfolder@.service.d"
|
||||||
|
mkdir -p "$LXC_DROPIN_DIR"
|
||||||
|
cp "$REPO_DIR/systemd/lxc-compat.conf" "$LXC_DROPIN_DIR/lxc-compat.conf"
|
||||||
|
systemctl daemon-reload
|
||||||
|
log_info "LXC-Kompatibilitäts-Drop-in installiert ✓"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
log_step "Default-User '$DEFAULT_USER' prüfen"
|
log_step "Default-User '$DEFAULT_USER' prüfen"
|
||||||
if id "$DEFAULT_USER" &>/dev/null; then
|
if id "$DEFAULT_USER" &>/dev/null; then
|
||||||
log_info "'$DEFAULT_USER' existiert bereits"
|
log_info "'$DEFAULT_USER' existiert bereits"
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
"""PDF OCR Hotfolder — Scanner-PDFs automatisch durchsuchbar machen."""
|
"""PDF OCR Hotfolder — Scanner-PDFs automatisch durchsuchbar machen."""
|
||||||
|
|
||||||
__version__ = "0.1.0"
|
__version__ = "0.3.1"
|
||||||
|
|||||||
@@ -0,0 +1,10 @@
|
|||||||
|
# Drop-in für LXC/Container-Betrieb
|
||||||
|
# Kopieren nach: /etc/systemd/system/pdf-ocr-hotfolder@.service.d/lxc-compat.conf
|
||||||
|
# Danach: systemctl daemon-reload && systemctl restart 'pdf-ocr-hotfolder@*'
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
PrivateTmp=false
|
||||||
|
ProtectSystem=false
|
||||||
|
ProtectKernelTunables=false
|
||||||
|
ProtectKernelModules=false
|
||||||
|
ProtectControlGroups=false
|
||||||
@@ -7,6 +7,7 @@ Wants=network-online.target
|
|||||||
Type=simple
|
Type=simple
|
||||||
User=pdfocr
|
User=pdfocr
|
||||||
Group=pdfocr
|
Group=pdfocr
|
||||||
|
WorkingDirectory=/opt/pdf-ocr-hotfolder
|
||||||
ExecStart=/opt/pdf-ocr-hotfolder/venv/bin/python -m pdf_ocr_hotfolder --config /etc/pdf-ocr-hotfolder/%i.toml
|
ExecStart=/opt/pdf-ocr-hotfolder/venv/bin/python -m pdf_ocr_hotfolder --config /etc/pdf-ocr-hotfolder/%i.toml
|
||||||
Restart=on-failure
|
Restart=on-failure
|
||||||
RestartSec=5
|
RestartSec=5
|
||||||
|
|||||||
Reference in New Issue
Block a user