NFS Share für Container Volumes meiner Docker VM

shirocko

New Member
Dec 31, 2024
7
2
3
Hallo zusammen,

ich versuche gerade etwas verzweifelt einen gangbaren Weg für folgendes Problem zu finden, der trotzdem eine gewisse Sicherheit bietet:

Ich habe eine VM unter Proxmox mit einer Docker Installation. Dort möchte ich sukzessive alle meine Docker Container von meinen beiden Raspis und meiner Synology Disk Station hin ziehen. Für die Volumes der einzelnen Docker Container möchte ich ein gemeinsames NFS Shares nutzen, welches ich ursprünglich direkt auf dem Proxmox Host erstellen wollte, mir dann aber doch eine Openmediavault VM für die Erstellung und Verwaltung des Shares angelegt habe.

Nun hänge ich aber an dem Problem, dass ich einen Paperless NGX Stack rüber ziehen möchte und dabei ständig Rechteprobleme bekomme, da die einzelnen Docker Container immer die Rechte der Ordner verändern wollen bei der Erstellung mittels chown und chmod.
Ich könnte das NFS Share mittels "no_root_squash" anlegen, aber dieses großes Loch möchte ich nicht ins Sicherheitsnetz meines Heimnetzes ziehen.
Ich habe aktuell einen User und Gruppe mit dem Namen "dockerdata" und der UID und GID 2000, sowohl auf der OMV VM, als auch auf dem Docker Host angelegt.
Das NFS Shares besitzt die Rechte 770 mit Besitzer dockerdata:dockerdata.
Der NFS Export sieht wie folgt aus:
/export/dockerdata 192.168.1.71(fsid=cfff0a2f-58c8-4e26-b21a-58e54d54f904,rw,subtree_check,insecure,anonuid=2000,anongid=2000)
Der Mount sieht wie folgt aus:
192.168.1.90:/dockerdata /mnt/dockerdata nfs defaults 0 0

Beim Start des Docker Stack erhalte ich mehrere Permission Denied Warnungen und 4 oder 5 Versuchen startet er trotzdem, aber die Container meckern weiter über Berechtigungsprobleme:
Der Stack sieht wie folgt aus:
Code:
services:
  redis:
    image: redis
    container_name: PaperlessNGX-REDIS
    restart: no
    user: 2000:2000
    volumes:
      - /mnt/dockerdata/paperlessngx/redis:/data:rw

  db:
    image: postgres:16
    container_name: PaperlessNGX-DB
    user: 2000:2000
    restart: always

    volumes:
      - /mnt/dockerdata/paperlessngx/db:/var/lib/postgresql/data:rw
    environment:
      POSTGRES_DB: paperless
      POSTGRES_USER: paperless
      POSTGRES_PASSWORD: xxx

  webserver:
    image: ghcr.io/paperless-ngx/paperless-ngx
    container_name: PaperlessNGX
    restart: always
    user: 2000:2000
    depends_on:
      - db
      - redis
      - gotenberg
      - tika
    ports:
      - 8080:8000
    volumes:
      - /mnt/dockerdata/paperlessngx/data:/usr/src/paperless/data
      - /mnt/dockerdata/paperlessngx/media:/usr/src/paperless/media
      - /mnt/dockerdata/paperlessngx/export:/usr/src/paperless/export
      - /mnt/dockerdata/paperlessngx/dmsinput:/usr/src/paperless/consume
    environment:
      PAPERLESS_REDIS: redis://redis:6379
      PAPERLESS_DBHOST: db
      USERMAP_UID: 1045
      USERMAP_GID: 100
      PAPERLESS_TIME_ZONE: Europe/Berlin
      PAPERLESS_ADMIN_USER: xxx
      PAPERLESS_ADMIN_PASSWORD: xxx
      PAPERLESS_URL: https://paperless.xxx
      PAPERLESS_CSRF_TRUSTED_ORIGINS: https://paperless.xxx
      PAPERLESS_OCR_LANGUAGE: deu+eng
      PAPERLESS_TIKA_ENABLED: 1
      PAPERLESS_TIKA_GOTENBERG_ENDPOINT: http://gotenberg:3000/forms/libreoffice/convert#
      PAPERLESS_TIKA_ENDPOINT: http://tika:9998
      PAPERLESS_FILENAME_FORMAT: "{correspondent}/{created_year}-{created_month}-{created_day}_{correspondent} {document_type} {title}"
      PAPERLESS_TRASH_DIR: ../media/trash
      PAPERLESS_OCR_USER_ARGS: '{"continue_on_soft_render_error": true, "invalidate_digital_signatures": true}'


  gotenberg:
    image: gotenberg/gotenberg
    restart: on-failure:5
    container_name: PaperlessNGX-GOTENBERG
    user: 2000:2000
    ports:
      - 3000:3000
    command:
      - "gotenberg"
      - "--chromium-disable-routes=true"
 
  tika:
    image: ghcr.io/paperless-ngx/tika
    container_name: PaperlessNGX-TIKA
    user: 2000:2000
    ports:
      - 9998:9998
    restart: always

Wie muss ich die Rechte für den NFS Share setzen und was muss ich beim Docker Stack einstellen, damit ich hier zum Ziel komme?

Vielen Dank
shirocko