fix: Inbox/Uploads unter gemeinsamem Bind-Mount (EXDEV bei Path.replace)

Beim E2E-Smoke-Test schlug der Import mit 'Invalid cross-device link'
fehl: rename() funktioniert nicht ueber zwei getrennte Bind-Mounts.
Inbox und Uploads liegen jetzt unter einem einzigen /data-Mount.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-17 19:45:36 +02:00
parent 557928ac3f
commit 1338bd66d5

View File

@@ -31,8 +31,15 @@ GRAFANA_CONTAINER_PORT='3000'
BIND_DIR="$HOME/.local/share/$POD_NAME"
POSTGRES_DATA_DIR="$BIND_DIR/postgres-data"
GRAFANA_DATA_DIR="$BIND_DIR/grafana-data"
INBOX_DIR="$BIND_DIR/inbox"
UPLOADS_DIR="$BIND_DIR/uploads"
# inbox and uploads must live under one shared bind mount: process_pdf()
# moves a file from inbox to uploads via Path.replace() (os.replace/rename),
# which fails with EXDEV ("Invalid cross-device link") across two separate
# bind mounts even when both point at the same underlying host filesystem
# (Linux permits a filesystem to be mounted at multiple points, but rename()
# does not work across different mount points - see `man 2 rename`).
DATA_DIR="$BIND_DIR/data"
INBOX_DIR="$DATA_DIR/inbox"
UPLOADS_DIR="$DATA_DIR/uploads"
USER_SYSTEMD_DIR="$HOME/.config/systemd/user"
FINANCE_DIR="$HOME/bin/finance"
@@ -142,8 +149,7 @@ podman run -d --name "$API_CTR_NAME" --pod "$POD_NAME" \
-e FB_GUI_PASSWORD_HASH \
-e FB_INBOX_DIR=/data/inbox \
-e FB_UPLOADS_DIR=/data/uploads \
-v "$INBOX_DIR:/data/inbox:Z" \
-v "$UPLOADS_DIR:/data/uploads:Z" \
-v "$DATA_DIR:/data:Z" \
"$API_IMAGE"
echo "Container '$API_CTR_NAME' started (rc=$?)"