Addon: Paperless-ngx

Hi, ich habe mich diese Woche auch mal in an die Installation von Libre Workspace gewagt. Super Projekt mit viel Potential.

Beim Einbinden von Parperless mit der hier angebotenen zip Datei habe ich ebenfalls diesen Fehler gehabt.

Der Fehler liegt in der Datei docker-composer.yaml beim JSON Eintrag von PAPERLESS_SOCIALACCOUNT_PROVIDERS. Dort muss in Zeile 47 das Komma entfernt werden, dann läuft die Installation problemlos.
Die Anmeldung über die Paperless-Anmeldung funktioniert, jedoch bekomme ich einen “Server Error (500)” wenn ich mich bei Paperless über “anmelden mit Libre Workspace” einloggen möchte.
docker-compose logs spuckt mir folgenden Fehler aus

requests.exceptions.ConnectionError: HTTPSConnectionPool(host='portal.int.de', port=443): Max retries exceeded with url: /openid/.well-known/openid-configuration (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0x7fee88338290>: Failed to resolve 'portal.int.de' ([Errno -2] Name or service not known)"))

Konnte bisher leider keine Lösung dafür finden.

Bei mir hat es wie folgt funktioniert:

  1. In der docker-compose.yml habe ich die Verbindung wie folgt eingefügt:

PAPERLESS_APPS: “allauth.socialaccount.providers.openid_connect”
PAPERLESS_SOCIALACCOUNT_PROVIDERS: ‘{“openid_connect”: {“APPS”: [{“provider_id”: “libreworkspace”,“name”: “Libre Workspace”,“client_id”: “XXXX”,“secret”: “XXX”,“settings”: { “server_url”: “https://portal.XXX.tld/openid/.well-known/openid-configuration”}}]}}’

Die client_ID und secret der OpenIDConnect aus LibreWorkspace entnehmen.

  1. Danach mit admin “konventionell (Username/PW” in Paperless einloggen und dort BenutzerInnen mit den entsprechenden Berechtigungen anlegen, z.B. user1, user2 …

  2. Dann mit dem Benutzer/der Benutzerin (zB user1), der/die sich in Paperless via OpenID einloggen können soll, sich in Libre-Workspace anmelden, von dort aus (!) Paperless aufrufen und sich konventionell (user1, PW) einloggen und dann über Profil die Verbindung zu libreworkspace als OpenID-Anbieter genehmigen. Anschliessend kann sich user1 per OpenID anmelden.

1 „Gefällt mir“

Stimmt, mein Fehler. Zip ist aktualisiert :slight_smile:

2 „Gefällt mir“

Moin, erstmal 1000 Dank, für das Addon von Paperless. Leider habe ich ein kleines Problem mit der Persistenz der Daten - und zwar aller Daten in Paperless. Weder die Datenbank noch die Dokumente werden dauerhaft gespeichert :frowning:
Die Einträge in yml und env sehen so aus, wie sie das Script vorgibt. Im Gegensatz zur Original-Paperless.yml werden allerdings UID/GID gesetzt.
Meine Ordner sehen so aus:

drwxr-xr-x  2 www-data www-data 4096 19. Mai 15:39 consume
-rw-r--r--  1 root     root      339 19. Mai 15:31 docker-compose.env
-rw-r--r--  1 root     root     1579 19. Mai 15:27 docker-compose.yml
drwxr-xr-x  2 www-data www-data 4096 19. Mai 15:27 export
drwxr-xr-x  2 root     root     4096 19. Mai 15:27 pgdata

Der Datenordner sieht so aus:

drwxr-xr-x 2 root root 4096 19. Mai 15:33 data
drwxr-xr-x 2 root root 4096 19. Mai 15:33 media

Die eingescannten Ideen sind etwa hier gespeichert:
/var/lib/docker/volumes/b44e881e953093364d138e6d246ed724905e27148dfb42b3189a19437364f4a1/_data/documents/originals/0000001.pdf

Eigentlich habe ich “nur” das Addon installiert, die Ordner wurden manuell erzeugt.

Hat jemand eine Idee?
Viele Grüße
Marc

Was für eine Docker Version und was für eine Distribution hast Du?
Kannst Du mir mal den docker-compose File reinsenden, den Du verwendest?

Hi Jean,
vielen Dank für deine schnelle Reaktion. Ich habe den Libre-WS direkt von der ISO installiert.

> docker --version
Docker version 20.10.24+dfsg1, build 297e128
> uname -a
Linux la 6.1.0-35-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.137-1 (2025-05-07) x86_64 GNU/Linux

und docker-compose.yml sieht so aus:

services:
  broker:
    image: docker.io/library/redis:7
    restart: unless-stopped
    volumes:
      - ./redisdata/data/paperless/data

  db:
    image: docker.io/library/postgres:16
    restart: unless-stopped
    volumes:
      - ./pgdata:/var/lib/postgresq/data/paperless/data
    environment:
      POSTGRES_DB: paperless
      POSTGRES_USER: xyr
      POSTGRES_PASSWORD: xyz

  webserver:
    image: ghcr.io/paperless-ngx/paperless-ngx:latest
    restart: unless-stopped
    depends_on:
      - db
      - broker
    ports:
      - "13125:8000"
    volumes:
      - /data/paperless/data:/usr/src/paperles/data/paperless/data
      - /data/paperless/media:/usr/src/paperles/data/paperless/media
      - ./export:/usr/src/paperless/export
      - ./consume:/usr/src/paperless/consume
    env_file: docker-compose.env
    environment:
      PAPERLESS_REDIS: redis://broker:6379
      PAPERLESS_DBHOST: db
      PAPERLESS_APPS: allauth.socialaccount.providers.openid_connect
      PAPERLESS_SOCIALACCOUNT_PROVIDERS: >
          {
            "openid_connect": {
              "APPS": [
                {
                  "provider_id": "libreworkspace",
                  "name": "Libre Workspace",
                  "client_id": "xyz",
                  "secret": "zyx",
                  "settings": {
                  "server_url": "https://portal.example.de/openid/.well-known/openid-configuration"
                  }
                }
              ],
              "OAUTH_PKCE_ENABLED": "True"
            }
          }

Die Daten und Dokumente müssten im Ordner /data/paperless/ gespeichert werden.
Hast Du da mal nachgesehen?

ja, der Ordner ist leider leer :frowning: Die Dokumente sind hier gespeichert:

/var/lib/docker/volumes/b44e881e953093364d138e6d246ed724905e27148dfb42b3189a19437364f4a1/_data/documents/originals/0000001.pdf

Und “natürlich” ist die VolumeID nach jedem Neustart eine andere. Ich habe gerade nochmal in die Logs geschaut. Bei jedem Neustart der Container werden die Ordner / Datenbank neu erzeugt. Unter anderem sehe ich dieses:

[init-user] Mapping GID for paperless to 33
[init-folders] Running with root privileges, adjusting directories and permissions
mkdir: created directory '/tmp/paperless'
mkdir: created directory '/usr/src/paperless/data/index'
mkdir: created directory '/usr/src/paperless/media/documents'
mkdir: created directory '/usr/src/paperless/media/documents/originals'
mkdir: created directory '/usr/src/paperless/media/documents/thumbnails'
changed ownership of '/usr/src/paperless/data' from www-data:1000 to paperless:paperless
changed ownership of '/usr/src/paperless/data/index' from root:root to paperless:paperless
changed ownership of '/usr/src/paperless/data/log' from www-data:1000 to paperless:paperless
changed ownership of '/usr/src/paperless/media' from www-data:1000 to paperless:paperless
changed ownership of '/usr/src/paperless/media/documents' from root:root to paperless:paperless
changed ownership of '/usr/src/paperless/media/documents/originals' from root:root to paperless:paperless
changed ownership of '/usr/src/paperless/media/documents/thumbnails' from root:root to paperless:paperless
changed ownership of '/tmp/paperless' from root:root to paperless:paperless
Connected to PostgreSQL

Irgendwie zieht die persistente Host-Zuordnung nicht

1 „Gefällt mir“

Mhm, aber der docker compose file sagt ja eigentlich was anderes. Eigentlich müsste da Docker entweder eine Fehlermeldung ausgeben, oder die Config fressen.
Ich schaue mir das mal auf einer Test-Maschine bei Gelegenheit an .

Ansonsten mal ein docker-compose down
und ein docker-compose up -d nochmal eingeben. Aber eigentlich sollte sich da nichts dran ändern.

1 „Gefällt mir“

sehr merkwürdig - die Docker-compose für Matrix, NocoDB etc. laufen ohne Probleme. Bei Paperless ist keines der Laufwerke persistent. Weder vom Webserver, aber auch nicht .pgdata und .redisdata.
Bei jedem compose down und compose up ist es wie eine Neuinstallation von Paperless.

1 „Gefällt mir“

ist dein user paperless in der gruppe docker?

1 „Gefällt mir“

ich habe keinen User “paperless” unter Linux. Der docker compose wird von root gestartet. Auch eine Gruppe “paperless” habe ich nicht

1 „Gefällt mir“

Probiere mal, das /data Verzeichnis in Deiner Docker-compose zu änderen.
Kann das sein, dass bei Dir irgendwie /data auf ein temporäres Verzeichnis gemappd wird?

Das wären dann die veränderten Zeilen.

      - ./data:/usr/src/paperles/data/paperless/data
      - ./media:/usr/src/paperles/data/paperless/media
1 „Gefällt mir“

Danke für den Hinweis. Auf /data ist mein Massenspeicher, auf einem separatem Laufwerk. Für die Nextcloud klappt das ganz wunderbar:

xxx@la:/data$ ls -la
insgesamt 32
drwxr-xr-x  5 www-data www-data  4096 19. Mai 15:33 .
drwxr-xr-x 21 root     root      4096 25. Mai 02:01 ..
drwx------  2 www-data www-data 16384  7. Feb 16:01 lost+found
drwxrwx---  8 www-data www-data  4096 31. Mär 01:45 nextcloud
drwxr-xr-x  4 root     root      4096 19. Mai 15:33 paperless

Und im Paperless-Ordner sieht es dann so aus:

xxx@la:/data/paperless$ ls -la
insgesamt 16
drwxr-xr-x 4 root     root     4096 19. Mai 15:33 .
drwxr-xr-x 5 www-data www-data 4096 19. Mai 15:33 ..
drwxr-xr-x 2 root     root     4096 19. Mai 15:33 data
drwxr-xr-x 2 root     root     4096 19. Mai 15:33 media

Das komische ist ja auch, das etwa /root/paperlessngx/pgdata niemals Daten enthält. Darum ist ja nach jedem Neustart des Container jegliche Konfiguration weg.

Ich habe es trotzdem nochmal ausprobiert mit ./data … und sinngemäß auch für ./media. Leider mit dem gleichen Ergebnis. Keines der Volumes ist persistent. Sehr merkwürdig :frowning:

1 „Gefällt mir“

Habe am Wochenende nochmal viel mit paperlessngx gemacht, da lief alles wie geplant.
Wenn Du möchtest können wir uns das mal im kommerziellen Support ansehen.
Wenn die Docker Compose jetzt auf ./data und ./media eingestellt ist, sollte das eigentlich auch hinhauen. Da muss irgendwo ein anderer Fehler sein :slight_smile:

1 „Gefällt mir“

Hallo zusammen,

ich wollte gerade PaperlessNGX auf meiner lokalen VM Instanz testen. Nach der Installation wollte ich mich via Libre Workspace anmelden. Das hat nicht funktioniert. Ich bekomme von PaperlessNGX einen 500 Error. In der Log steht:

webserver_1  | requests.exceptions.ConnectionError: HTTPSConnectionPool(host='portal.int.de', port=443): Max retries exceeded with url: /openid/.well-known/openid-configuration (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0x7fa3c4f8b740>: Failed to resolve 'portal.int.de' ([Errno -2] Name or service not known)"))

In der Docker Compose ist alles richtig eingetragen, wie du in dem Teil Fehlerbehebung im SSO Video auf Linux Guides Admin gezigt hast. Was kann ich da jetzt machen?

Wie kann ich das beheben?

VG, der LinuxFan

Edit: Benutzername war admin und das Libre Workspace Passwort

1 „Gefällt mir“

Scheint so, als ob der Host nicht gefunden werden kann.
Evtl. in die Docker-Compose Datei die IP-Adressen überprüfen:
(Kann sein, dass ich das noch nicht für lokale Instanzen bis jetzt hatte, evtl. das hier in der Docker compose hinzufügen mit der richtigen IP-Adresse Deines Servers)

  extra_hosts:
   - portal.int.de: 1.2.3.4
1 „Gefällt mir“

Wo muss ich das eintragen in dieser Docker Compose:

services:
  broker:
    image: docker.io/library/redis:7
    restart: unless-stopped
    volumes:
      - ./redisdata:/data

  db:
    image: docker.io/library/postgres:16
    restart: unless-stopped
    volumes:
      - ./pgdata:/var/lib/postgresql/data
    environment:
      POSTGRES_DB: paperless
      POSTGRES_USER: paperless
      POSTGRES_PASSWORD: paperless

  webserver:
    image: ghcr.io/paperless-ngx/paperless-ngx:latest
    restart: unless-stopped
    depends_on:
      - db
      - broker
    ports:
      - "13125:8000"
    volumes:
      - ./data:/usr/src/paperless/data
      - ./media:/usr/src/paperless/media
      - ./export:/usr/src/paperless/export
      - ./consume:/usr/src/paperless/consume
    env_file: docker-compose.env
    environment:
      PAPERLESS_REDIS: redis://broker:6379
      PAPERLESS_DBHOST: db
      PAPERLESS_APPS: allauth.socialaccount.providers.openid_connect
      PAPERLESS_SOCIALACCOUNT_PROVIDERS: >
          {
            "openid_connect": {
              "APPS": [
                {
                  "provider_id": "libreworkspace",
                  "name": "Libre Workspace",
                  "client_id": "CLIENT_ID_SED",
                  "secret": "CLIENT_SECRET_SED",
                  "settings": {
                  "server_url": "https://PORTAL_DOMAIN_SED/openid/.well-known/openid-configuration"
                  }
                }
              ],
              "OAUTH_PKCE_ENABLED": "True"
            }
          }

Als ich es im Bereich Webserver unter dem Port eingetragen habe, wollte er sich erst nicht bauen und dann beim zweiten Versuch war das Portal nicht zu erreichen…

1 „Gefällt mir“
version: '2.1'
services:
  broker:
    image: docker.io/library/redis:7
    restart: unless-stopped
    volumes:
      - ./redisdata:/data

  db:
    image: docker.io/library/postgres:16
    restart: unless-stopped
    volumes:
      - ./pgdata:/var/lib/postgresql/data
    environment:
      POSTGRES_DB: paperless
      POSTGRES_USER: paperless
      POSTGRES_PASSWORD: paperless

  webserver:
    image: ghcr.io/paperless-ngx/paperless-ngx:latest
    restart: unless-stopped
    depends_on:
      - db
      - broker
    ports:
      - "13125:8000"
    volumes:
      - ./data:/usr/src/paperless/data
      - ./media:/usr/src/paperless/media
      - ./export:/usr/src/paperless/export
      - ./consume:/usr/src/paperless/consume
    env_file: docker-compose.env
    extra_hosts:
      - portal.int.de: 1.2.3.4
    environment:
      PAPERLESS_REDIS: redis://broker:6379
      PAPERLESS_DBHOST: db
      PAPERLESS_APPS: allauth.socialaccount.providers.openid_connect
      PAPERLESS_SOCIALACCOUNT_PROVIDERS: >
          {
            "openid_connect": {
              "APPS": [
                {
                  "provider_id": "libreworkspace",
                  "name": "Libre Workspace",
                  "client_id": "CLIENT_ID_SED",
                  "secret": "CLIENT_SECRET_SED",
                  "settings": {
                  "server_url": "https://PORTAL_DOMAIN_SED/openid/.well-known/openid-configuration"
                  }
                }
              ],
              "OAUTH_PKCE_ENABLED": "True"
            }
          }
1 „Gefällt mir“

Das will er nicht:

ERROR: The Compose file './docker-compose.yml' is invalid because:
services.webserver.extra_hosts contains {"potral.int.de": "192.168.178.129"}, which is an invalid type, it should be a string

Ja und ich habe mich bei Portal verschrieben, aber das ist ja auch nicht das Problem, da er will, dass es ein String sein soll und ich weiß nicht wie, weil ich mich mit Docker Compose nicht auskenne…

1 „Gefällt mir“