Paperless-ngx unter Debian mit Docker: Wie Backup erstellen?

Pfandfinder

Lieutenant
Registriert
Nov. 2020
Beiträge
619
hallo,

ich habe paperless-ngx per Docker auf meinem Debian Server installiert. ich schaue jetzt, wie ich am besten regelmäßig Backups erstelle. Im Handbuch steht unter anderem etwas zum document exporter. Ich verstehe aber bei diesem Beispiel-Befehl den Wert "webserver" nicht:

Code:
docker-compose exec -T webserver document_exporter ../export

das scheint ja die paperless-Instanz zu sein oder so, aber woher bekomme ich den Namen meiner Instanz ? mit "docker ps" erhalte ich die Ausgabe:

Code:
CONTAINER ID   IMAGE                                        COMMAND                  CREATED             STATUS                    PORTS                                       NAMES
f110944c20ba   ghcr.io/paperless-ngx/paperless-ngx:latest   "/sbin/docker-entryp…"   About an hour ago   Up 21 minutes (healthy)   0.0.0.0:8000->8000/tcp, :::8000->8000/tcp   paperless-webserver-1
9be37c150837   ghcr.io/paperless-ngx/tika:latest            "/bin/sh -c 'exec ja…"   About an hour ago   Up 21 minutes             9998/tcp                                    paperless-tika-1
30ddfe486863   gotenberg/gotenberg:7.8                      "/usr/bin/tini -- go…"   About an hour ago   Up 21 minutes             3000/tcp                                    paperless-gotenberg-1
f4d8c6665a0d   redis:7                                      "docker-entrypoint.s…"   About an hour ago   Up 21 minutes             6379/tcp                                    paperless-broker-1
8c7c8ee62766   mariadb:10                                   "docker-entrypoint.s…"   About an hour ago   Up 21 minutes             3306/tcp                                    paperless-db-1

aber auch hier finde ich keinen Namen der dafür passen würde, bzw. erhalte ich hier einen Fehler, wenn das der Name sein sollte:

Code:
vps@mail:/usr/local/bin# ls
docker-compose  rclone  restic
root@vps:/usr/local/bin# docker-compose exec paperless-webserver-1 document_exporter /home/test/bkp1
no configuration file provided: not found

Und dann gibt es alternativ noch:

Code:
Backup the docker volumes. These usually reside within /var/lib/docker/volumes on the host and you need to be root in order to access them.
Paperless uses 4 volumes:

paperless_media: This is where your documents are stored.
paperless_data: This is where auxillary data is stored. This folder also contains the SQLite database, if you use it.
paperless_pgdata: Exists only if you use PostgreSQL and contains the database.
paperless_dbdata: Exists only if you use MariaDB and contains the database.

bei mir gibt es aber nur ein Volume, und dieser Name ist keiner von den vieren...?

Code:
root@vps:/var/lib/docker/volumes# ls
backingFsBlockDev  metadata.db  paperless_redisdata
 
Zuletzt bearbeitet:
Mit welchen Befehlen hast du den/die Container erstellt?

Außerdem zeig mal den Output von
Bash:
docker inspect paperless-webserver-1

Außerdem muss du im ersten Command folgendes ändern.

Bash:
- docker-compose exec -T webserver document_exporter ../export
+ docker-compose exec -T paperless-webserver-1 document_exporter ../export
Hast du ja schon hinbekommen, sorry.

Ha ne, war doch noch etwas nicht richtig. Der Command docker-compose exec ... schlägt fehl, weil der Command deine docker-compose.yml nicht findet.

Jetzt hast du zwei Möglichkeiten
1. Den Befehl nochmal ausführen in dem Directory wo deine docker-compose.yml sich befindet
oder
2. Statt docker-compose als Befehl zu benutzen, nutzt du nur docker und machst dann docker exec paperless-webserver-1 document_exporter /home/test/bkp1. Das sollte von überall aus gehen.
 
Zuletzt bearbeitet:
Pfandfinder schrieb:
hallo,

ich habe paperless-ngx per Docker auf meinem Debian Server installiert. ich schaue jetzt, wie ich am besten regelmäßig Backups erstelle. Im Handbuch steht unter anderem etwas zum document exporter. Ich verstehe aber bei diesem Beispiel-Befehl den Wert "webserver" nicht:

Code:
docker-compose exec -T webserver document_exporter ../export

das scheint ja die paperless-Instanz zu sein oder so, aber woher bekomme ich den Namen meiner Instanz ? mit "docker ps" erhalte ich die Ausgabe:
Das ist der name des containers.
Code:
docker container ls
Sollte helfen den Namen zu finden. Ansonsten kannst du ihn in deinem docker -compose file auch manuell auf etwas setzen, dass dir gefaellt.
 
Fehler gefunden, ich muss da sein, wo die docker-compose.yml liegt. paperless-webserver-1 scheint trotzdem falsch zu sein:

Code:
root@vps:/home/web/paperless# docker-compose exec paperless-webserver-1 document_exporter /home/test/bkp1
service "paperless-webserver-1" is not running

Installiert hab ich paperless mit diesem Script: https://docs.paperless-ngx.com/setup/#docker_script

Code:
root@vps:/home# docker container ls
CONTAINER ID   IMAGE                                        COMMAND                  CREATED             STATUS                    PORTS                                       NAMES
f110944c20ba   ghcr.io/paperless-ngx/paperless-ngx:latest   "/sbin/docker-entryp…"   About an hour ago   Up 38 minutes (healthy)   0.0.0.0:8000->8000/tcp, :::8000->8000/tcp   paperless-webserver-1
9be37c150837   ghcr.io/paperless-ngx/tika:latest            "/bin/sh -c 'exec ja…"   About an hour ago   Up 38 minutes             9998/tcp                                    paperless-tika-1
30ddfe486863   gotenberg/gotenberg:7.8                      "/usr/bin/tini -- go…"   About an hour ago   Up 38 minutes             3000/tcp                                    paperless-gotenberg-1
f4d8c6665a0d   redis:7                                      "docker-entrypoint.s…"   About an hour ago   Up 38 minutes             6379/tcp                                    paperless-broker-1
8c7c8ee62766   mariadb:10                                   "docker-entrypoint.s…"   About an hour ago   Up 38 minutes             3306/tcp                                    paperless-db-1
 
Hi, nutzt du docker mit docker-compose-plugin zufällig?
Also ich selbst mach sowas immer mit Ordnern vom Host in den Container., das geht bspw. mit dem docker befehl
Code:
docker -v "host/target:/container/target"
Falls ein Compose File vorhanden ist geht das unte dem Punkt volumes.

So kann man den Ordnr dann vom Host aus immer erreichen und gut backupn.

der Name des Containers ist eig der name des Services im docker-compose file, sollte dann laut doku bei dir nur "webserver" sein

ansonsten kannst du auch den volume path rausfinden mit docker volume inspect #volumename# und schauen wo es sich auf dem Host befindet.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: honky-tonk
sLgFiRE schrieb:
der Name des Containers ist eig der name des Services im docker-compose file, sollte dann laut doku bei dir nur "webserver" sein
Nicht zwangsläufig. Docker-compose fügt Prefix und Suffix hinzu (Siehe hier)
Ergänzung ()

Pfandfinder schrieb:
root@vps:/home/web/paperless# docker-compose exec paperless-webserver-1 document_exporter /home/test/bkp1
Ändert nichts an der Fehlermeldung, aber der Command wird nicht funktionieren, weil der Container das Verzeichnis /home/test/bkp1 nicht gemappt hat.
Ergänzung ()

Zeig mal bitte den Output von
Code:
docker inspect paperless-webserver-1
 
ok stimmt :) bei mir habe ich immer im docker-compose file "name:" gesetzt, ist bei mir schon standard, sry für die falsche info.

Map dir einfach einen ordner vom host in den container und mach darüber das backup.

docker-compose file:
Code:
    volumes:
      - /host/path:/container/path
wenn du mit docker deinen container startest dann halt mit -v

oder du mapps gleich den ordner wo paperless die files ablegt auf dein host und machst dann von deinem host das backup direkt irgendwo hin. (achtung hierbei ist der Ordner im Contaier dann erstmal leer, somit sind deine Daten falls du schon was hochgeladen hast weg.) hier wird immer der host-folder in den container geschoben, nicht andersrum.

wie und in welcher reihenfolge du das machst is dir überlasse :)
 
Zuletzt bearbeitet:
Code:
root@vps:/home# docker inspect paperless-webserver-1
[
    {
        "Id": "f110944c20ba24c22d3e42bbcade2f21575581482963ae76eda74ab91a8216b7",
        "Created": "2023-09-04T08:05:20.542603741Z",
        "Path": "/sbin/docker-entrypoint.sh",
        "Args": [
            "/usr/local/bin/paperless_cmd.sh"
        ],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 1587,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2023-09-04T08:50:25.45262596Z",
            "FinishedAt": "2023-09-04T08:49:29.728362941Z",
            "Health": {
                "Status": "healthy",
                "FailingStreak": 0,
                "Log": [
                    {
                        "Start": "2023-09-04T12:00:43.304407764+02:00",
                        "End": "2023-09-04T12:00:43.435190422+02:00",
                        "ExitCode": 0,
                        "Output": "  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\n                                 Dload  Upload   Total   Spent    Left  Speed\n\r  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0\r  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0\n"
                    },
                    {
                        "Start": "2023-09-04T12:01:13.448453295+02:00",
                        "End": "2023-09-04T12:01:13.564023829+02:00",
                        "ExitCode": 0,
                        "Output": "  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\n                                 Dload  Upload   Total   Spent    Left  Speed\n\r  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0\r  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0\n"
                    },
                    {
                        "Start": "2023-09-04T12:01:43.571822544+02:00",
                        "End": "2023-09-04T12:01:43.693224611+02:00",
                        "ExitCode": 0,
                        "Output": "  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\n                                 Dload  Upload   Total   Spent    Left  Speed\n\r  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0\r  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0\n"
                    },
                    {
                        "Start": "2023-09-04T12:02:13.700749389+02:00",
                        "End": "2023-09-04T12:02:13.808609622+02:00",
                        "ExitCode": 0,
                        "Output": "  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\n                                 Dload  Upload   Total   Spent    Left  Speed\n\r  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0\r  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0\n"
                    },
                    {
                        "Start": "2023-09-04T12:02:43.817052693+02:00",
                        "End": "2023-09-04T12:02:43.903906988+02:00",
                        "ExitCode": 0,
                        "Output": "  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\n                                 Dload  Upload   Total   Spent    Left  Speed\n\r  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0\r  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0\n"
                    }
                ]
            }
        },
        "Image": "sha256:c31de6cc600ffc2c9e47c627bbe0d478aeff5e9b8cc5ed3a003b07af72659ce2",
        "ResolvConfPath": "/var/lib/docker/containers/f110944c20ba24c22d3e42bbcade2f21575581482963ae76eda74ab91a8216b7/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/f110944c20ba24c22d3e42bbcade2f21575581482963ae76eda74ab91a8216b7/hostname",
        "HostsPath": "/var/lib/docker/containers/f110944c20ba24c22d3e42bbcade2f21575581482963ae76eda74ab91a8216b7/hosts",
        "LogPath": "/var/lib/docker/containers/f110944c20ba24c22d3e42bbcade2f21575581482963ae76eda74ab91a8216b7/f110944c20ba24c22d3e42bbcade2f21575581482963ae76eda74ab91a8216b7-json.log",
        "Name": "/paperless-webserver-1",
        "RestartCount": 0,
        "Driver": "overlay2",
        "Platform": "linux",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "docker-default",
        "ExecIDs": null,
        "HostConfig": {
            "Binds": [
                "/home/web/paperless/data:/usr/src/paperless/data:rw",
                "/home/web/paperless/media:/usr/src/paperless/media:rw",
                "/home/web/paperless/export:/usr/src/paperless/export:rw",
                "/home/web/paperless/consume:/usr/src/paperless/consume:rw"
            ],
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "json-file",
                "Config": {}
            },
            "NetworkMode": "paperless_default",
            "PortBindings": {
                "8000/tcp": [
                    {
                        "HostIp": "",
                        "HostPort": "8000"
                    }
                ]
            },
            "RestartPolicy": {
                "Name": "unless-stopped",
                "MaximumRetryCount": 0
            },
            "AutoRemove": false,
            "VolumeDriver": "",
            "VolumesFrom": null,
            "ConsoleSize": [
                0,
                0
            ],
            "CapAdd": null,
            "CapDrop": null,
            "CgroupnsMode": "private",
            "Dns": [],
            "DnsOptions": [],
            "DnsSearch": [],
            "ExtraHosts": [],
            "GroupAdd": null,
            "IpcMode": "private",
            "Cgroup": "",
            "Links": null,
            "OomScoreAdj": 0,
            "PidMode": "",
            "Privileged": false,
            "PublishAllPorts": false,
            "ReadonlyRootfs": false,
            "SecurityOpt": null,
            "UTSMode": "",
            "UsernsMode": "",
            "ShmSize": 67108864,
            "Runtime": "runc",
            "Isolation": "",
            "CpuShares": 0,
            "Memory": 0,
            "NanoCpus": 0,
            "CgroupParent": "",
            "BlkioWeight": 0,
            "BlkioWeightDevice": null,
            "BlkioDeviceReadBps": null,
            "BlkioDeviceWriteBps": null,
            "BlkioDeviceReadIOps": null,
            "BlkioDeviceWriteIOps": null,
            "CpuPeriod": 0,
            "CpuQuota": 0,
            "CpuRealtimePeriod": 0,
            "CpuRealtimeRuntime": 0,
            "CpusetCpus": "",
            "CpusetMems": "",
            "Devices": null,
            "DeviceCgroupRules": null,
            "DeviceRequests": null,
            "MemoryReservation": 0,
            "MemorySwap": 0,
            "MemorySwappiness": null,
            "OomKillDisable": null,
            "PidsLimit": null,
            "Ulimits": null,
            "CpuCount": 0,
            "CpuPercent": 0,
            "IOMaximumIOps": 0,
            "IOMaximumBandwidth": 0,
            "MaskedPaths": [
                "/proc/asound",
                "/proc/acpi",
                "/proc/kcore",
                "/proc/keys",
                "/proc/latency_stats",
                "/proc/timer_list",
                "/proc/timer_stats",
                "/proc/sched_debug",
                "/proc/scsi",
                "/sys/firmware"
            ],
            "ReadonlyPaths": [
                "/proc/bus",
                "/proc/fs",
                "/proc/irq",
                "/proc/sys",
                "/proc/sysrq-trigger"
            ]
        },
        "GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/aad2dc617c3c26f09a8ffc35a4fc5c48de366621e9ddbd1dc533632cc39afefc-init/diff:/var/lib/docker/overlay2/5affe84f9aef87789df56b95695561d0936e8c89cf58499eaa64e3df76352880/diff:/var/lib/docker/overlay2/a9fb483da7037bbacdcfea0372ab4962da2156d15afcffc28ac8e9df67e437c8/diff:/var/lib/docker/overlay2/444fb97fcd4d4f1e1ab15821ff3cfc7871fe577ff62019b4f83eeb2bed5219d6/diff:/var/lib/docker/overlay2/4fb4eff2662440ea4a091cb266798df2ed1307fa16084210dc13c31e8534d590/diff:/var/lib/docker/overlay2/be5a53a05601f04d9493ab91d5cd40ca9ce11b2159ab73a6511117edcdeaa543/diff:/var/lib/docker/overlay2/9471e36f85d5a95b6d949769ebd1260c01f57745380666ff910c298178379c64/diff:/var/lib/docker/overlay2/e13dce3df354445335c7684e4ef116c28d318ff688ab63820d1be1363226adb2/diff:/var/lib/docker/overlay2/a5008ffe52b2a15317db462f80ff6879dc30587e9bcfb0e5c7adb1284565f432/diff:/var/lib/docker/overlay2/989cea8f5a1cf1a909ab132bd364e41c1d74461db709e4cd5309bd3bca40a352/diff:/var/lib/docker/overlay2/cdb618b2b24535f9bd581279077036c6eabf8d7fb9e35820e9511a5c03ef976c/diff:/var/lib/docker/overlay2/718c2a70fb5ccf605b53c768491efc494654d0ec9a09fdc0cac7572926a3a25a/diff:/var/lib/docker/overlay2/542a16cfea426242493d6e8c7bc4b56327b041aef5a8c0b0673693b63bcbcd42/diff:/var/lib/docker/overlay2/8592b4b92c448008d006783577189ed71815910585382558e13606dceeb1a3d2/diff:/var/lib/docker/overlay2/533718e00f4998e4452a6e56d3245bdbffb00eb616baf1c848d28528a93907c5/diff:/var/lib/docker/overlay2/7419b7a6a7fc6e05bf00533a2aa6c42d80c623f569ff16e96903ff603bcc73fe/diff:/var/lib/docker/overlay2/4c49fecfb630af01be08cd442f564d31553bdd85857359cd572b13947a228a8a/diff:/var/lib/docker/overlay2/65e3aa4a5a5fd035924aa1ab84dec1b1cc21b2bb28d804469623388995fc8ccf/diff:/var/lib/docker/overlay2/2671b6f65061b62cbf64fe82b42601556b1ce0169c13477740940f5215150050/diff",
                "MergedDir": "/var/lib/docker/overlay2/aad2dc617c3c26f09a8ffc35a4fc5c48de366621e9ddbd1dc533632cc39afefc/merged",
                "UpperDir": "/var/lib/docker/overlay2/aad2dc617c3c26f09a8ffc35a4fc5c48de366621e9ddbd1dc533632cc39afefc/diff",
                "WorkDir": "/var/lib/docker/overlay2/aad2dc617c3c26f09a8ffc35a4fc5c48de366621e9ddbd1dc533632cc39afefc/work"
            },
            "Name": "overlay2"
        },
        "Mounts": [
            {
                "Type": "bind",
                "Source": "/home/web/paperless/media",
                "Destination": "/usr/src/paperless/media",
                "Mode": "rw",
                "RW": true,
                "Propagation": "rprivate"
            },
            {
                "Type": "bind",
                "Source": "/home/web/paperless/consume",
                "Destination": "/usr/src/paperless/consume",
                "Mode": "rw",
                "RW": true,
                "Propagation": "rprivate"
            },
            {
                "Type": "bind",
                "Source": "/home/web/paperless/data",
                "Destination": "/usr/src/paperless/data",
                "Mode": "rw",
                "RW": true,
                "Propagation": "rprivate"
            },
            {
                "Type": "bind",
                "Source": "/home/web/paperless/export",
                "Destination": "/usr/src/paperless/export",
                "Mode": "rw",
                "RW": true,
                "Propagation": "rprivate"
            }
        ],
        "Config": {
            "Hostname": "f110944c20ba",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": true,
            "AttachStderr": true,
            "ExposedPorts": {
                "8000/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "USERMAP_UID=5001",
                "PAPERLESS_DBUSER=paperless",
                "USERMAP_GID=5001",
                "PAPERLESS_DBHOST=db",
                "PAPERLESS_TIKA_GOTENBERG_ENDPOINT=http://gotenberg:3000",
                "PAPERLESS_OCR_LANGUAGE=deu",
                "PAPERLESS_SECRET_KEY=pQ0Hz70GOb5DorhE2Sn87VXTHLCbLIP4jiRFOKnBXzfiDjlHGOvRwkzTrbEKVn3g",
                "PAPERLESS_TIKA_ENDPOINT=http://tika:9998",
                "PAPERLESS_DBPORT=3306",
                "PAPERLESS_REDIS=redis://broker:6379",
                "PAPERLESS_TIME_ZONE=Europe/Berlin",
                "PAPERLESS_DBPASS=paperless",
                "PAPERLESS_URL=https://paperless.xxxxxxx.de",
                "PAPERLESS_TIKA_ENABLED=1",
                "PAPERLESS_DBENGINE=mariadb",
                "PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "LANG=C.UTF-8",
                "GPG_KEY=E3FF2839C048B25C084DEBE9B26995E310250568",
                "PYTHON_VERSION=3.9.18",
                "PYTHON_PIP_VERSION=23.0.1",
                "PYTHON_SETUPTOOLS_VERSION=58.1.0",
                "PYTHON_GET_PIP_URL=https://github.com/pypa/get-pip/raw/9af82b715db434abb94a0a6f3569f43e72157346/public/get-pip.py",
                "PYTHON_GET_PIP_SHA256=45a2bb8bf2bb5eff16fdd00faef6f29731831c7c59bd9fc2bf1f3bed511ff1fe"
            ],
            "Cmd": [
                "/usr/local/bin/paperless_cmd.sh"
            ],
            "Healthcheck": {
                "Test": [
                    "CMD",
                    "curl",
                    "-f",
                    "http://localhost:8000"
                ],
                "Interval": 30000000000,
                "Timeout": 10000000000,
                "Retries": 5
            },
            "Image": "ghcr.io/paperless-ngx/paperless-ngx:latest",
            "Volumes": {
                "/usr/src/paperless/consume": {},
                "/usr/src/paperless/data": {},
                "/usr/src/paperless/export": {},
                "/usr/src/paperless/media": {}
            },
            "WorkingDir": "/usr/src/paperless/src",
            "Entrypoint": [
                "/sbin/docker-entrypoint.sh"
            ],
            "OnBuild": null,
            "Labels": {
                "com.docker.compose.config-hash": "a66933dff06ec315120d323d279d180967bc676eab880b17ea369ae6b9f91582",
                "com.docker.compose.container-number": "1",
                "com.docker.compose.depends_on": "gotenberg:service_started:false,tika:service_started:false,db:service_started:false,broker:service_started:false",
                "com.docker.compose.image": "sha256:c31de6cc600ffc2c9e47c627bbe0d478aeff5e9b8cc5ed3a003b07af72659ce2",
                "com.docker.compose.oneoff": "False",
                "com.docker.compose.project": "paperless",
                "com.docker.compose.project.config_files": "/home/web/paperless/docker-compose.yml",
                "com.docker.compose.project.working_dir": "/home/web/paperless",
                "com.docker.compose.service": "webserver",
                "com.docker.compose.version": "2.21.0",
                "org.opencontainers.image.authors": "paperless-ngx team <hello@paperless-ngx.com>",
                "org.opencontainers.image.created": "2023-09-01T20:41:04.751Z",
                "org.opencontainers.image.description": "A community-supported supercharged version of paperless: scan, index and archive all your physical documents",
                "org.opencontainers.image.documentation": "https://docs.paperless-ngx.com/",
                "org.opencontainers.image.licenses": "GPL-3.0",
                "org.opencontainers.image.revision": "c754a5f391c41e2526e7151aafbf1c471ce3e35c",
                "org.opencontainers.image.source": "https://github.com/paperless-ngx/paperless-ngx",
                "org.opencontainers.image.title": "paperless-ngx",
                "org.opencontainers.image.url": "https://github.com/paperless-ngx/paperless-ngx",
                "org.opencontainers.image.version": "1.17.4"
            }
        },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "d8e4d6fcafdf795506f876fee0cd19a16205e7f2a74c4b7a80766f52bc55aa2d",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {
                "8000/tcp": [
                    {
                        "HostIp": "0.0.0.0",
                        "HostPort": "8000"
                    },
                    {
                        "HostIp": "::",
                        "HostPort": "8000"
                    }
                ]
            },
            "SandboxKey": "/var/run/docker/netns/d8e4d6fcafdf",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "",
            "Gateway": "",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "",
            "IPPrefixLen": 0,
            "IPv6Gateway": "",
            "MacAddress": "",
            "Networks": {
                "paperless_default": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": [
                        "paperless-webserver-1",
                        "webserver",
                        "f110944c20ba"
                    ],
                    "NetworkID": "15cf258a108235ea844223b48d0973894525deaa814a8e89db5d1da54a053c56",
                    "EndpointID": "1d212c971e0bfa97e58ed724eb643822361abdfc64383b096c365340803aa377",
                    "Gateway": "172.18.0.1",
                    "IPAddress": "172.18.0.6",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:12:00:06",
                    "DriverOpts": null
                }
            }
        }
    }
]
 
Zeile 74-77 sind die, die du dir mal anschauen solltest.
Zumindest in /home/web/paperless/{data,media} sollten die Dateien drin liegen, die du speichern willst.
 
okay, ja da liegen die Dokumente. aber mir geht es ja um ein Vollbackup, dass ich das ganze paperless-Systemwiederherstellen kann. die Dokumente alleine (beginnend mit 0000001.pdf) bringen mir ja dann nichts. da hab ich keine Infos, Daten, etc. zu. Die Datenbank fehlt ja auch, die liegt in paperless/database/. Wenn ich alle 5 Ordner sicher, und dann wiederherstelle, ist das denke ich keine saubere Lösung oder ?
 
Ist mWn. Standard Verfahren für Docker Container. Die Volumes speichern und gut ist. Viel mehr Möglichkeiten hast du bei einem Container sowieso erstmal nicht.

Aber gut, der Exporter sollte ja auch funktionieren.
Was passiert denn, wenn du
docker exec -T paperless-webserver-1 document_exporter ../export
mal versuchst auszuführen?
 
das macht er:

Code:
100%|██████████| 6/6 [00:00<00:00, 130.13it/s]

aber wo ist denn dieser "export" Ordner ?

Das mit dem backup der 5 Ordner scheint aber auch zu funktionieren -> Dokumente gelöscht, wiederhergestellt, Neustart -> alles wieder da samt Beschreibungen. die Frage ist ob diese Art von Backup auch bei einer OS-Neuinstallation hilft
 
ahh ok, aber da sind tatsächlich nur die Dokumente, kein richtiges Backup vom System, schade :D

aber wieso funktioniert der import-nicht, obwohl der Ordner hier existiert ?

Code:
root@vps:/home/web/paperless# docker exec paperless-webserver-1 document_importer ../source
CommandError: That path doesn't exist
root@vps:/home/web/paperless# ls
consume         database         docker-compose.env  source
docker-compose.yml  media        data      export

Außerdem habe ich noch einen Bug mit paperless, genau wie er hier: https://github.com/jonaswinkler/paperless-ng/discussions/1194

Das Dokument wurde zwar hochgeladen, aber er sagt immer noch "warte..." und die Abschlussmeldung erscheint nicht, dass ich direkt das Dokument verwalten kann. Der Benutzer hat Berechtigungen auf das ganze Verzeichnis "paperless":

Code:
drwxr-xr-x 7 web web   4096  4. Sep 13:43 paperless

Kann da jemand helfen ?

Auch würde ich gerne wissen, wo die aktive Config liegt. in meinem paperless-Ordner ist ja die docker-compose.yml, aber er übernimmt die Änderungen da gar nicht. selbst wenn ich die Datei verschiebe und den Container neu starte, gibt es kein Fehler, die Datei scheint er gar nicht zu nutzen ?
 

Anhänge

  • 2023-09-04_134000.png
    2023-09-04_134000.png
    11,3 KB · Aufrufe: 68
Zuletzt bearbeitet:
Pfandfinder schrieb:
ahh ok, aber da sind tatsächlich nur die Dokumente, kein richtiges Backup vom System, schade :D
Steht aber auch so in der Doku ;)
Für ein vollständiges Backup, müssest du die 4 Ordner speichern.
Pfandfinder schrieb:
aber wieso funktioniert der import-nicht, obwohl der Ordner hier existiert ?
Du wirfst hier zwei Sachen zusammen.
Nur weil der eine Ordner auf deinem Server (laut ls) existiert, heißt das nicht, dass dieser auch in deinem Container existiert. Die beiden Systeme sind erstmal voneinander abgeschottet. Erst durch das mappen von Ordner (Siehe Zeile 74-77 aus deinem Post (#8) eben) erhält der Container die Ordner des Servers.
Wir sehen aus dem Output auch, dass ein source-Ordner nicht gemappt wird. Ist aber nicht schlimm. Für den Import lassen wir es einfach wieder auf den Export-Ordner zeigen.
Code:
docker exec paperless-webserver-1 document_importer ../export
Wichtig ist eben, dass der Ordner im Container existiert (tut er, sonst hätten wir eben keinen Export machen können) und das darin auch tatsächlich Dateien sind (sind sie auch).
Dann sollte der Command jetzt funktionieren.


Zu dem Problem aus GitHub.
Pfandfinder schrieb:
Der Benutzer hat Berechtigungen auf das ganze Verzeichnis "paperless":
Das ist schön und gut, aber hat er auch die Berechtigungen auf die unterliegenden Verzeichnisse? ;)
Zeig mal den Output von ls -la /home/web/paperless. Dann können wir weiterschauen.



Was genau möchtest du in der Config denn ändern? Wenn du Änderungen in der Docker-Compose machst, musst du docker-compose down und docker-compose up -d machen, damit Änderungen wirksam werden (Note: Je nach dem was das für Änderungen sind, treten die auch niemals in Kraft, dass liegt dann aber am Container :) )
Ansonsten würde ich fast behaupten, dass die Config-Datei in /home/web/paperless/data irgendwo liegt.
Ergänzung ()

Pfandfinder schrieb:
Das mit dem backup der 5 Ordner scheint aber auch zu funktionieren -> Dokumente gelöscht, wiederhergestellt, Neustart -> alles wieder da samt Beschreibungen. die Frage ist ob diese Art von Backup auch bei einer OS-Neuinstallation hilft
Sofern die Paperless-Version gleich ist, die richtigen Berechtigungen für den Nutzer gesetzt sind und du die Ordner auch wirklich gespeichert hast (außerhalb des OS), dann ja hilft das bei einer OS-Neuinstallation.
 
verstehe, habe davor noch gar nichts mit docker gemacht.

Code:
root@vps:/home/web/paperless# ls -la /home/web/paperless
insgesamt 36
drwxr-xr-x 6 web         web         4096  4. Sep 15:40 .
drwxr-x--- 6 web         www-data         4096  4. Sep 15:37 ..
drwxr-xr-x 2 web         web         4096  4. Sep 15:40 consume
drwxr-xr-x 4 web         web         4096  4. Sep 15:40 data
drwxr-xr-x 6 systemd-coredump systemd-coredump 4096  4. Sep 14:51 database
-rw-r--r-- 1 web         web          226  4. Sep 10:02 docker-compose.env
-rw-r--r-- 1 web         web         3635  4. Sep 15:07 docker-compose.yml
-rw-r--r-- 1 web         web           31  4. Sep 10:02 .env
drwxr-xr-x 3 web         web         4096  4. Sep 15:40 media

ich möchte unter anderem die variable "PAPERLESS_FILENAME_FORMAT" definieren, und "PAPERLESS_SECRET_KEY" sollte man auch noch festlegen, oder ?

Und noch eine Frage zum Backup: reicht es aus, vor dem Backup docker stop <alle 4 container> zu machen oder eher docker-compose down ?
 
Pfandfinder schrieb:
ich möchte unter anderem die variable "PAPERLESS_FILENAME_FORMAT" definieren, und "PAPERLESS_SECRET_KEY" sollte man auch noch festlegen, oder ?
Env-Variablen würde man über die docker-compose.yml anlegen. Weiß jetzt grad nicht genau, was die machen, aber beim zweiten könnte ich mir vorstellen, dass die Variable nicht greift, wenn du schon Daten (und aus Sicht von Paperless eine fertige Installation hast) in den Ordnern hast. Da bin ich mir grade aber nicht sicher, müsste ich daheim mal durchtesten.

Pfandfinder schrieb:
Und noch eine Frage zum Backup: reicht es aus, vor dem Backup docker stop <alle 4 container> zu machen oder eher docker-compose down ?
Kommt beides aufs gleiche hinaus. docker-compose down entfernt zusätzlich noch den Container anstatt nur zu stoppen.
Für dich spielt es keine wirkliche Rolle, weil deine Daten per Volumes eingebunden wird. Das heißt, dass selbst wenn der Container entfernt wird und er sich neu aufbaut, sind deine Daten noch da. Ich selber benutze, wenn dann, nur docker-compose down. Hat auch den Vorteil, dass du direkt merkst, wenn irgendetwas nicht mehr passt, weil du etwas geändert hast oder ähnliches.
 
ah ok, hatte das unter "db" eingetragen, aber unter environments unter "webserver" greifen die Variablen nun.

Wie sieht es aus mit dem "Upload-Bug" ?
 
Zuletzt bearbeitet:
Pfandfinder schrieb:
Wie sieht es aus mit dem "Upload-Bug" ?
Das kann von alles bis nichts sein. (1, 2, 3)
Kannst folgendes machen:
  • in die Logs schauen (docker logs paperless-webserver-1)
  • prüfen dass die Rechte auf den Ordnern passen
  • den Container re'createn (down && up -d --force-recreate)
 
okay, schaue ich mal an.

torben schrieb:
Code:
docker exec paperless-webserver-1 document_importer ../export
Wichtig ist eben, dass der Ordner im Container existiert (tut er, sonst hätten wir eben keinen Export machen können) und das darin auch tatsächlich Dateien sind (sind sie auch).
Dann sollte der Command jetzt funktionieren.

nochmal da zurück: das funktioniert jetzt aber auch nicht, er erwartet diese manifest-Datei, die es ja aber noch nicht gibt, die wird ja scheinbar erst beim Export angelegt, was doch kein Sinn macht... ich möchte ja ein leeres System füllen.

Code:
CommandError: That directory doesn't appear to contain a manifest.json file.

Selbst exportieren und dann importieren geht nicht:

Code:
root@vps:/home/web/paperless$ docker exec paperless-webserver-1 document_importer ../export
Checking the manifest
Installed 137 object(s) from 1 fixture(s)
Copy files into paperless...
  0%|          | 0/1 [00:00<?, ?it/s]
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/src/paperless/src/documents/management/commands/document_importer.py", line 149, in handle
    self._import_files_from_manifest(options["no_progress_bar"])
  File "/usr/src/paperless/src/documents/management/commands/document_importer.py", line 245, in _import_files_from_manifest
    raise FileExistsError(document.source_path)
FileExistsError: /usr/src/paperless/media/documents/originals/0000001.pdf
 
Zurück
Oben