Paperless-ngx Paperless-ngx – DMS via Docker auf dem NAS

alexhell

Benutzer
Sehr erfahren
Mitglied seit
13. Mai 2021
Beiträge
2.604
Punkte für Reaktionen
758
Punkte
154
Container stoppen, löschen und neues Image ziehen und wieder starten. Oder Watchtower einrichten.
 

plang.pl

Benutzer
Contributor
Sehr erfahren
Maintainer
Mitglied seit
28. Okt 2020
Beiträge
14.180
Punkte für Reaktionen
4.915
Punkte
519
-via watchtower automatisisert
-manuell das neueste Image ziehen (vorher Container stoppen und danach wieder starten)
-im neuen Container Manager auf "Update" drücken
ACHTUNG: Wenn du einen Fehler in den Mounts hast / was vergessen hast, zu mounten, droht Datenverlust.
Was ich voraussetze: Du hast ein aktuelles Backup
 

Grischabock

Benutzer
Mitglied seit
10. Sep 2009
Beiträge
282
Punkte für Reaktionen
10
Punkte
24
Also Watchtower läuft, nur macht der nichts wenn ich den anstupsen will

Code:
sudo docker run -d \
>   --name watchtower \
>   -v /var/run/docker.sock:/var/run/docker.sock \
>   containrrr/watchtower
 

plang.pl

Benutzer
Contributor
Sehr erfahren
Maintainer
Mitglied seit
28. Okt 2020
Beiträge
14.180
Punkte für Reaktionen
4.915
Punkte
519
Ich würde es entweder so machen (RunOnce):
docker run --rm --name=watchtowertemp -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower:latest --cleanup --run-once
Oder so (läuft im Hintergrund):
docker run -d --name=watchtower -v /var/run/docker.sock:/var/run/docker.sock --restart=always containrrr/watchtower:latest --cleanup
Beachte, dass er nur Images updatet, die auf den Tag latest zeigen
 

Grischabock

Benutzer
Mitglied seit
10. Sep 2009
Beiträge
282
Punkte für Reaktionen
10
Punkte
24

alexhell

Benutzer
Sehr erfahren
Mitglied seit
13. Mai 2021
Beiträge
2.604
Punkte für Reaktionen
758
Punkte
154
Mit den standard Einstellungen, so wie du es hast guckt er alle 24 Stunden nach neuen Images.
Gibst du eine Version direkt an?
 

Grischabock

Benutzer
Mitglied seit
10. Sep 2009
Beiträge
282
Punkte für Reaktionen
10
Punkte
24

RalfPeter

Benutzer
Mitglied seit
02. Apr 2014
Beiträge
286
Punkte für Reaktionen
21
Punkte
24
Hallo Zusammen,

@Monacum : Danke für die ausführliche Installationsanleitung. Ich habe versucht es genau nach Anweisung zu installieren. Ordner angelegt, Danach habe ich im Ordner config 3 Dateien angelegt (.env, docker-compose.env, docker-compose.yaml). Die yaml Datei habe ich so gelassen, lediglich den Port geändert. Dann mit Telnet die Befehle nacheinander abgesetzt.

Der Download funktioniert. Beim Anlegen des users erhalte ich folgende Fehlermeldung:

Code:
The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/src/paperless/src/manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/usr/local/lib/python3.9/site-packages/django/core/management/__init__.py", line 446, in execute_from_command_line
    utility.execute()
  File "/usr/local/lib/python3.9/site-packages/django/core/management/__init__.py", line 440, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/usr/local/lib/python3.9/site-packages/django/core/management/base.py", line 402, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/usr/local/lib/python3.9/site-packages/django/core/management/base.py", line 448, in execute
    output = self.handle(*args, **options)
  File "/usr/local/lib/python3.9/site-packages/django/core/management/base.py", line 96, in wrapped
    res = handle_func(*args, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/django/core/management/commands/migrate.py", line 114, in handle
    executor = MigrationExecutor(connection, self.migration_progress_callback)
  File "/usr/local/lib/python3.9/site-packages/django/db/migrations/executor.py", line 18, in __init__
    self.loader = MigrationLoader(self.connection)
  File "/usr/local/lib/python3.9/site-packages/django/db/migrations/loader.py", line 58, in __init__
    self.build_graph()
  File "/usr/local/lib/python3.9/site-packages/django/db/migrations/loader.py", line 235, in build_graph
    self.applied_migrations = recorder.applied_migrations()
  File "/usr/local/lib/python3.9/site-packages/django/db/migrations/recorder.py", line 81, in applied_migrations
    if self.has_table():
  File "/usr/local/lib/python3.9/site-packages/django/db/migrations/recorder.py", line 57, in has_table
    with self.connection.cursor() as cursor:
  File "/usr/local/lib/python3.9/site-packages/django/utils/asyncio.py", line 26, in inner
    return func(*args, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/django/db/backends/base/base.py", line 323, in cursor
    return self._cursor()
  File "/usr/local/lib/python3.9/site-packages/django/db/backends/base/base.py", line 299, in _cursor
    self.ensure_connection()
  File "/usr/local/lib/python3.9/site-packages/django/utils/asyncio.py", line 26, in inner
    return func(*args, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/django/db/backends/base/base.py", line 282, in ensure_connection
    self.connect()
  File "/usr/local/lib/python3.9/site-packages/django/db/utils.py", line 91, in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
  File "/usr/local/lib/python3.9/site-packages/django/db/backends/base/base.py", line 282, in ensure_connection
    self.connect()
  File "/usr/local/lib/python3.9/site-packages/django/utils/asyncio.py", line 26, in inner
    return func(*args, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/django/db/backends/base/base.py", line 263, in connect
    self.connection = self.get_new_connection(conn_params)
  File "/usr/local/lib/python3.9/site-packages/django/utils/asyncio.py", line 26, in inner
    return func(*args, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/django/db/backends/postgresql/base.py", line 215, in get_new_connection
    connection = Database.connect(**conn_params)
  File "/usr/local/lib/python3.9/site-packages/psycopg2/__init__.py", line 122, in connect
    conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
django.db.utils.OperationalError: could not translate host name "db" to address: Name or service not known

Die Datenbank postgres kann wohl nicht gestartet werden. Im Docker Compose steht der Container auf gestoppt. Hat jemand einen Tipp, wo ich nach meinem Fehler suchen soll?

Hier meine yaml
Code:
version: "3.6"
services:
  broker:
    container_name: redis
    image: redis:latest
    restart: unless-stopped
    volumes:
      - ../redis:/data

  db:
    container_name: postgres
    image: postgres:15
    restart: unless-stopped
    volumes:
      - ../pgdata:/var/lib/postgresql/data
      - /volume1/docker/paperlessngx/exportpostgres:/var/lib/postgresql/data/backup
    environment:
      POSTGRES_DB: paperless
      POSTGRES_USER: paperless
      POSTGRES_PASSWORD: paperless

  webserver:
    container_name: paperlessngx
    image: ghcr.io/paperless-ngx/paperless-ngx:latest
    restart: unless-stopped
    depends_on:
      - db
      - broker
    ports:
      - 8777:8000
    healthcheck:
      test: ["CMD", "curl", "-fs", "-S", "--max-time", "2", "http://localhost:8000"]
      interval: 30s
      timeout: 10s
      retries: 5
    volumes:
      - /volume1/docker/paperlessngx/data:/usr/src/paperless/data
      - /volume1/docker/paperlessngx/media:/usr/src/paperless/media
      - /volume1/docker/paperlessngx/export:/usr/src/paperless/export
      - /volume1/docker/paperlessngx/consume:/usr/src/paperless/consume
    env_file: docker-compose.env
    environment:
      PAPERLESS_REDIS: redis://broker:6379
      PAPERLESS_DBHOST: db

volumes:
  data:
  media:
  pgdata:
  redisdata:

Danke und VG
 

Monacum

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
03. Jan 2022
Beiträge
2.049
Punkte für Reaktionen
900
Punkte
204
Hmm. So auf Anhieb habe ich keine Idee; was passiert denn, wenn du die .env nicht selbst erstellst? Die wird von Paperless-ngx selbst angelegt.

In dieser Diskussion wird über Zugriffsrechte diskutiert, die diese Meldungen verursachen, kannst du die bei dir mal kontrollieren?
 

RalfPeter

Benutzer
Mitglied seit
02. Apr 2014
Beiträge
286
Punkte für Reaktionen
21
Punkte
24
Die .env habe ich angelegt, nachdem der erste Versuch nicht funktionierte. Ich dachte vielleicht liegt es daran. Aber der Fehler war derselbe.
 

RalfPeter

Benutzer
Mitglied seit
02. Apr 2014
Beiträge
286
Punkte für Reaktionen
21
Punkte
24
DSM 7.2, Python 3.9 und Python2 sind als Pakete installiert.
 

Monacum

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
03. Jan 2022
Beiträge
2.049
Punkte für Reaktionen
900
Punkte
204
Schau bitte nochmal nach den Zugriffsberechtigungen, shamoon, der sich in der Diskussion beteiligt hat, ist einer der Hauptentwickler von Paperless-ngx.
 

Caramlo

Benutzer
Mitglied seit
11. Mai 2019
Beiträge
215
Punkte für Reaktionen
62
Punkte
34
volumes: - ../redis:/data
wozu sind die beiden Punkte? Für einen Pfad den wir nicht wissen sollen? Ansonsten müsste da noch eine Pfadangabe zu deinen Daten wie etwa sowas:
- /volume1/paperless/redis:/redis
Bei dem db Abschnitt ist es das gleiche.
 

RalfPeter

Benutzer
Mitglied seit
02. Apr 2014
Beiträge
286
Punkte für Reaktionen
21
Punkte
24
Ich habe jetzt mal portainer benutzt, und die Anweisungen / Webskript von Marius. Damit funktioniert es.
Den einzigen Unterschied den ich sehe ist: Marius benutzt postgres:latest. (??)

Welche Zugriffsberechtigungen? Auf die Ordner in /volume1/docker/paperlessngx?
 

RalfPeter

Benutzer
Mitglied seit
02. Apr 2014
Beiträge
286
Punkte für Reaktionen
21
Punkte
24
wozu sind die beiden Punkte? Für einen Pfad den wir nicht wissen sollen? Ansonsten müsste da noch eine Pfadangabe zu deinen Daten wie etwa sowas:
- /volume1/paperless/redis:/redis
Bei dem db Abschnitt ist es das gleiche.

Ich habe nur "blind" den Code aus der Anweisung kopiert. Muss ich diese Zeilen anpassen?
 

RalfPeter

Benutzer
Mitglied seit
02. Apr 2014
Beiträge
286
Punkte für Reaktionen
21
Punkte
24
Die postgres-DB startet auch nicht mit der latest-Version. Der Fehler heißt:
Code:
 conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
django.db.utils.OperationalError: connection to server at "db" (172.25.0.4), port 5432 failed: Connection refused
        Is the server running on that host and accepting TCP/IP connections?
 

Monacum

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
03. Jan 2022
Beiträge
2.049
Punkte für Reaktionen
900
Punkte
204
@Caramlo Das ist ein Platzhalter der für den Pfad des übergeordneten Ordners steht und so korrekt. Das system macht daraus /volume1/docker/was/auch/immer/.
 

Caramlo

Benutzer
Mitglied seit
11. Mai 2019
Beiträge
215
Punkte für Reaktionen
62
Punkte
34
Ja, das musst Du anpassen, ist bei mir jedenfalls so.
Ich gehe mal davon aus, dass Du auf Volume1 einen Ordner docker/paperlessngx/redis hast. Dann müsste in Deine Yaml so angepasst werden:
broker:
container_name: redis
image: redis:latest
restart: unless-stopped
volumes:
- volume1/docker/paperlessngx/redis:/data

Bei db analog das gleiche:
db:
container_name: postgres
image: postgres:15
restart: unless-stopped
volumes:
- volume1/docker/paperlessngx/pgdata:/var/lib/postgresql/data
- volume1/docker/paperlessngx/exportpostgres:/var/lib/postgresql/data/backup

Probiere es mal damit.
 

Monacum

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
03. Jan 2022
Beiträge
2.049
Punkte für Reaktionen
900
Punkte
204
Nein, muss es nicht. Vollständige Pfade sind kein Problem, aber an diesen Stellen kein Muss.
 

Monacum

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
03. Jan 2022
Beiträge
2.049
Punkte für Reaktionen
900
Punkte
204
Und zum wiederholten Mal:
  1. Könnte die Firewall den Traffic blockieren?
  2. Wie sind die Zugriffsrechte auf den Ordner gesetzt, in dem Paperless und die Datenbank liegen.
 


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat