From b196bdc7fe5fd7b7cb4fe7bbd8155ef419d9c2ed Mon Sep 17 00:00:00 2001 From: data Date: Wed, 11 Feb 2026 18:33:39 +0100 Subject: [PATCH] V 2.0.3 - PUID/PGID Support, ZUGFeRD-Fix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - PUID/PGID Unterstützung für Unraid/Docker hinzugefügt - Entrypoint-Skript für Benutzer-Wechsel - ZUGFeRD-Dateien werden jetzt direkt in Zielordner verschoben (kein extra zugferd/ Unterordner) - Dokumentation aktualisiert Co-Authored-By: Claude Opus 4.5 --- Source/Dockerfile | 10 ++++++- Source/README.md | 12 ++++++++- Source/backend/app/main.py | 2 +- .../backend/app/services/scheduler_service.py | 9 +++---- Source/docker-compose.yml | 2 ++ Source/entrypoint.sh | 27 +++++++++++++++++++ 6 files changed, 54 insertions(+), 8 deletions(-) create mode 100755 Source/entrypoint.sh diff --git a/Source/Dockerfile b/Source/Dockerfile index 99f0147..a2e17ea 100755 --- a/Source/Dockerfile +++ b/Source/Dockerfile @@ -14,6 +14,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ mariadb-client \ postgresql-client \ gzip \ + gosu \ && rm -rf /var/lib/apt/lists/* # Arbeitsverzeichnis @@ -28,8 +29,14 @@ COPY backend/ ./backend/ COPY frontend/ ./frontend/ COPY regeln/ ./regeln/ +# Entrypoint für PUID/PGID +COPY entrypoint.sh /entrypoint.sh +RUN chmod +x /entrypoint.sh + # Umgebungsvariablen ENV PYTHONPATH=/app +ENV PUID=1000 +ENV PGID=1000 # Port EXPOSE 8000 @@ -38,5 +45,6 @@ EXPOSE 8000 HEALTHCHECK --interval=30s --timeout=10s --retries=3 \ CMD curl -f http://localhost:8000/health || exit 1 -# Start +# Entrypoint und Start +ENTRYPOINT ["/entrypoint.sh"] CMD ["uvicorn", "backend.app.main:app", "--host", "0.0.0.0", "--port", "8000"] diff --git a/Source/README.md b/Source/README.md index 745679f..fe0ae79 100755 --- a/Source/README.md +++ b/Source/README.md @@ -1,4 +1,4 @@ -# Dateiverwaltung +# Dateiverwaltung v2.0.3 Dokumenten-Management-System für automatische Verarbeitung, Sortierung und Benennung von Dokumenten. @@ -47,6 +47,16 @@ Neuen Container erstellen mit folgenden Einstellungen: |----------|--------------|----------| | `DATABASE_URL` | Datenbank-Verbindung (MariaDB/MySQL) | `mysql+pymysql://user:pass@host/db` | | `TZ` | Zeitzone | `Europe/Berlin` | +| `PUID` | User-ID für Dateiberechtigungen | `1003` | +| `PGID` | Group-ID für Dateiberechtigungen | `100` | + +**Wichtig für Unraid/NAS:** PUID und PGID sollten auf den Benutzer gesetzt werden, der Zugriff auf die gemounteten Ordner hat. So werden Dateien mit den richtigen Berechtigungen erstellt. + +```bash +# Benutzer-ID herausfinden: +id +# Beispiel: uid=1003(deep) gid=100(users) +``` **Beispiel DATABASE_URL Formate:** diff --git a/Source/backend/app/main.py b/Source/backend/app/main.py index ed0c380..211dea9 100755 --- a/Source/backend/app/main.py +++ b/Source/backend/app/main.py @@ -45,7 +45,7 @@ async def lifespan(app: FastAPI): app = FastAPI( title="Dateiverwaltung", description="Modulares Dokumenten-Management-System", - version="1.0.0", + version="2.0.3", lifespan=lifespan ) diff --git a/Source/backend/app/services/scheduler_service.py b/Source/backend/app/services/scheduler_service.py index 89779ad..85585d4 100755 --- a/Source/backend/app/services/scheduler_service.py +++ b/Source/backend/app/services/scheduler_service.py @@ -611,13 +611,12 @@ def execute_grobsortierung(db, zeitplan: Zeitplan) -> Dict: if not ist_zugferd: # Keine ZUGFeRD-PDF -> überspringen continue - # ZUGFeRD-PDF in separaten Ordner verschieben - zugferd_ziel = ziel_basis / "zugferd" - zugferd_ziel.mkdir(parents=True, exist_ok=True) - neuer_pfad = zugferd_ziel / datei.name + # ZUGFeRD-PDF direkt in Zielordner verschieben + ziel_basis.mkdir(parents=True, exist_ok=True) + neuer_pfad = ziel_basis / datei.name counter = 1 while neuer_pfad.exists(): - neuer_pfad = zugferd_ziel / f"{datei.stem}_{counter}{datei.suffix}" + neuer_pfad = ziel_basis / f"{datei.stem}_{counter}{datei.suffix}" counter += 1 datei.rename(neuer_pfad) db.add(VerarbeiteteDatei( diff --git a/Source/docker-compose.yml b/Source/docker-compose.yml index 6cb5d6b..027c6e3 100755 --- a/Source/docker-compose.yml +++ b/Source/docker-compose.yml @@ -15,6 +15,8 @@ services: environment: - TZ=Europe/Berlin - DATABASE_URL=mysql+pymysql://data:8715@192.168.155.11/dateiverwaltung + - PUID=1000 + - PGID=1000 healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8000/health"] interval: 30s diff --git a/Source/entrypoint.sh b/Source/entrypoint.sh new file mode 100755 index 0000000..183b3c4 --- /dev/null +++ b/Source/entrypoint.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +# PUID/PGID Unterstützung für Unraid/Docker +PUID=${PUID:-1000} +PGID=${PGID:-1000} + +echo "Starting with UID: $PUID, GID: $PGID" + +# Gruppe erstellen/anpassen +if getent group appgroup > /dev/null 2>&1; then + groupmod -g "$PGID" appgroup 2>/dev/null || true +else + groupadd -g "$PGID" appgroup 2>/dev/null || groupadd appgroup +fi + +# Benutzer erstellen/anpassen +if id -u appuser > /dev/null 2>&1; then + usermod -u "$PUID" -g "$PGID" appuser 2>/dev/null || true +else + useradd -u "$PUID" -g "$PGID" -m -s /bin/bash appuser 2>/dev/null || useradd -g appgroup appuser +fi + +# Rechte auf /app setzen +chown -R appuser:appgroup /app 2>/dev/null || true + +# Als appuser starten +exec gosu appuser "$@"