TheWicklowWolf / BookBounty

Retrieve missing Readarr books from Library Genesis.
Mozilla Public License 2.0
92 stars 2 forks source link

problem of Permission denied #23

Closed pdelass closed 2 weeks ago

pdelass commented 2 weeks ago

Hi to you.

First of all, thank's for this application wich seems to do exactly that i woold like to !

But it didn't work for me yet...

I've tried with your docker-compose file with Portainer on my Synology NAS.

First I had an error with the port 5000 witch is used by Synology by default i think. I put another one (ie 5028) and it seems to be ok to deploy.

But I have the following log with error "Permission denied"

[2024-10-20 12:09:37 +0200] [1] [INFO] Starting gunicorn 23.0.0

[2024-10-20 12:09:37 +0200] [1] [INFO] Listening at: http://0.0.0.0:5000 (1)

[2024-10-20 12:09:37 +0200] [1] [INFO] Using worker: geventwebsocket.gunicorn.workers.GeventWebSocketWorker

[2024-10-20 12:09:37 +0200] [7] [INFO] Booting worker with pid: 7


BookBounty Version: 0.1.7


Error Saving Config: [Errno 13] Permission denied: 'config/settings_config.json'

I've tried to enter my own environnement variable but i've the same error...

  - PUID=1026
  - PGID=100

I've tried to search another specific user in the panel of control of my Syno to give the rw access but I don't find...

I've tried to deploy it by using putty in root user but no change...

Is someone had a tip for me ?

I did'nt find an other way to managed download from libgen...

Thank's a lot !

TheWicklowWolf commented 2 weeks ago

You need to grant read/write access to PUID and PGID 1000:1000.

See #10

pdelass commented 2 weeks ago

Thanks for your answer. Perhaps i'm just a noob, but i don't know how to grant read/write access to PUID and PGID 1000:1000... I've tried to creat a specific user on my DSM, but i can't specify PUID and PGID...

pdelass commented 2 weeks ago

Here is the inspection code :

{ "AppArmorProfile": "docker-default", "Args": [ "src.BookBounty:app", "-c", "gunicorn_config.py" ], "Config": { "AttachStderr": false, "AttachStdin": false, "AttachStdout": false, "Cmd": [ "gunicorn", "src.BookBounty:app", "-c", "gunicorn_config.py" ], "DDSM": false, "Domainname": "", "Entrypoint": null, "Env": [ "PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", "LANG=C.UTF-8", "GPG_KEY=7169605F62C751356D054A26A821E680E5FA6305", "PYTHON_VERSION=3.12.5", "PYTHON_PIP_VERSION=24.2", "PYTHON_GET_PIP_URL=https://github.com/pypa/get-pip/raw/66d8a0f637083e2c3ddffc0cb1e65ce126afb856/public/get-pip.py", "PYTHON_GET_PIP_SHA256=6fb7b781206356f45ad79efbb19322caa6c2a5ad39092d0d44d0fec94117e118", "RELEASE_VERSION=0.1.7", "selected_path_type=folder", "library_scan_on_completion=True", "PUID=1026", "PGID=100", "TZ=Europe/Paris" ], "ExposedPorts": { "5000/tcp": {}, "5028/tcp": {} }, "Hostname": "4b6d4fffa4ce", "Image": "thewicklowwolf/bookbounty:latest", "Labels": { "com.docker.compose.config-hash": "d373ccaac741caa22e3d26fa0ec484e98bab62f0f2c951c56d365bec807a9bbc", "com.docker.compose.container-number": "1", "com.docker.compose.oneoff": "False", "com.docker.compose.project": "bookbounty", "com.docker.compose.project.config_files": "docker-compose.yml", "com.docker.compose.project.working_dir": "/volume1/docker/bookbounty", "com.docker.compose.service": "bookbounty", "com.docker.compose.version": "1.28.5" }, "OnBuild": null, "OpenStdin": false, "StdinOnce": false, "Tty": false, "User": "general_user", "Volumes": { "/bookbounty/config": {}, "/bookbounty/downloads": {}, "/etc/localtime": {} }, "WorkingDir": "/bookbounty" }, "Created": "2024-10-20T10:09:28.058099846Z", "Driver": "btrfs", "ExecIDs": null, "GraphDriver": { "Data": null, "Name": "btrfs" }, "HostConfig": { "AutoRemove": false, "Binds": [ "/etc/localtime:/etc/localtime:ro", "/volume1/docker/bookbounty:/bookbounty/config:rw", "/volume1/docker/calibre/downloads:/bookbounty/downloads:rw" ], "BlkioDeviceReadBps": null, "BlkioDeviceReadIOps": null, "BlkioDeviceWriteBps": null, "BlkioDeviceWriteIOps": null, "BlkioWeight": 0, "BlkioWeightDevice": null, "CapAdd": null, "CapDrop": null, "Cgroup": "", "CgroupParent": "", "CgroupnsMode": "host", "ConsoleSize": [ 0, 0 ], "ContainerIDFile": "", "CpuCount": 0, "CpuPercent": 0, "CpuPeriod": 0, "CpuQuota": 0, "CpuRealtimePeriod": 0, "CpuRealtimeRuntime": 0, "CpuShares": 0, "CpusetCpus": "", "CpusetMems": "", "DeviceCgroupRules": null, "DeviceRequests": null, "Devices": null, "Dns": null, "DnsOptions": null, "DnsSearch": null, "Env": [ "PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", "LANG=C.UTF-8", "GPG_KEY=7169605F62C751356D054A26A821E680E5FA6305", "PYTHON_VERSION=3.12.5", "PYTHON_PIP_VERSION=24.2", "PYTHON_GET_PIP_URL=https://github.com/pypa/get-pip/raw/66d8a0f637083e2c3ddffc0cb1e65ce126afb856/public/get-pip.py", "PYTHON_GET_PIP_SHA256=6fb7b781206356f45ad79efbb19322caa6c2a5ad39092d0d44d0fec94117e118", "RELEASE_VERSION=0.1.7", "selected_path_type=folder", "library_scan_on_completion=True", "PUID=1026", "PGID=100", "TZ=Europe/Paris" ], "ExtraHosts": null, "GroupAdd": null, "IOMaximumBandwidth": 0, "IOMaximumIOps": 0, "IpcMode": "private", "Isolation": "", "KernelMemory": 0, "KernelMemoryTCP": 0, "Links": null, "LogConfig": { "Config": {}, "Type": "db" }, "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" ], "Memory": 0, "MemoryReservation": 0, "MemorySwap": 0, "MemorySwappiness": null, "NanoCpus": 0, "NetworkMode": "bookbounty_default", "OomKillDisable": false, "OomScoreAdj": 0, "PidMode": "", "PidsLimit": null, "PortBindings": { "5028/tcp": [ { "HostIp": "", "HostPort": "5028" } ] }, "Privileged": false, "PublishAllPorts": false, "ReadonlyPaths": [ "/proc/bus", "/proc/fs", "/proc/irq", "/proc/sys", "/proc/sysrq-trigger" ], "ReadonlyRootfs": false, "RestartPolicy": { "MaximumRetryCount": 0, "Name": "unless-stopped" }, "Runtime": "runc", "SecurityOpt": null, "ShmSize": 67108864, "UTSMode": "", "Ulimits": null, "UsernsMode": "", "VolumeDriver": "", "VolumesFrom": [] }, "HostnamePath": "/volume1/@docker/containers/4b6d4fffa4ceba7e902ef9f057fb6d9c471d24233cd39bfad060ede1eec6b70f/hostname", "HostsPath": "/volume1/@docker/containers/4b6d4fffa4ceba7e902ef9f057fb6d9c471d24233cd39bfad060ede1eec6b70f/hosts", "Id": "4b6d4fffa4ceba7e902ef9f057fb6d9c471d24233cd39bfad060ede1eec6b70f", "Image": "sha256:ac12b9a6404c722d3fde8f146fa8e8b40ad19940d7d1019af2249b22a60ee30e", "LogPath": "/volume1/@docker/containers/4b6d4fffa4ceba7e902ef9f057fb6d9c471d24233cd39bfad060ede1eec6b70f/log.db", "MountLabel": "", "Mounts": [ { "Destination": "/bookbounty/config", "Mode": "rw", "Propagation": "rprivate", "RW": true, "Source": "/volume1/docker/bookbounty", "Type": "bind" }, { "Destination": "/bookbounty/downloads", "Mode": "rw", "Propagation": "rprivate", "RW": true, "Source": "/volume1/docker/calibre/downloads", "Type": "bind" }, { "Destination": "/etc/localtime", "Mode": "ro", "Propagation": "rprivate", "RW": false, "Source": "/etc/localtime", "Type": "bind" } ], "Name": "/bookbounty", "NetworkSettings": { "Bridge": "", "EndpointID": "", "Gateway": "", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "HairpinMode": false, "IPAddress": "", "IPPrefixLen": 0, "IPv6Gateway": "", "LinkLocalIPv6Address": "", "LinkLocalIPv6PrefixLen": 0, "MacAddress": "", "Networks": { "bookbounty_default": { "Aliases": [ "bookbounty", "4b6d4fffa4ce" ], "DriverOpts": null, "EndpointID": "448b7ab108815522ea66b22f8406a76b342eaa4d2f7e2bf72c939f4d28fe1aa9", "Gateway": "172.20.0.1", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "IPAMConfig": null, "IPAddress": "172.20.0.2", "IPPrefixLen": 16, "IPv6Gateway": "", "Links": null, "MacAddress": "02:42:ac:14:00:02", "NetworkID": "23a54af614799f040cbd56a672840f4f3532173a987c0dba0d5d996507db8222" } }, "Ports": { "5000/tcp": null, "5028/tcp": [ { "HostIp": "0.0.0.0", "HostPort": "5028" } ] }, "SandboxID": "6d5513155f2fefb1d8d2422119f4a22452c847f2a5f1ef4880c465169ec15dcb", "SandboxKey": "/var/run/docker/netns/6d5513155f2f", "SecondaryIPAddresses": null, "SecondaryIPv6Addresses": null }, "Path": "gunicorn", "Platform": "linux", "Portainer": { "ResourceControl": { "Id": 9, "ResourceId": "2_bookbounty", "SubResourceIds": [], "Type": 6, "UserAccesses": [], "TeamAccesses": [], "Public": false, "AdministratorsOnly": true, "System": false } }, "ProcessLabel": "", "ResolvConfPath": "/volume1/@docker/containers/4b6d4fffa4ceba7e902ef9f057fb6d9c471d24233cd39bfad060ede1eec6b70f/resolv.conf", "RestartCount": 0, "State": { "Dead": false, "Error": "", "ExitCode": 0, "FinishedAt": "0001-01-01T00:00:00Z", "FinishedTs": -62135596800, "OOMKilled": false, "Paused": false, "Pid": 25052, "Restarting": false, "Running": true, "StartedAt": "2024-10-20T10:09:33.484967443Z", "StartedTs": 1729418973, "Status": "running" } }

Here is the log :

[2024-10-20 12:09:37 +0200] [1] [INFO] Starting gunicorn 23.0.0 [2024-10-20 12:09:37 +0200] [1] [INFO] Listening at: http://0.0.0.0:5000 (1) [2024-10-20 12:09:37 +0200] [1] [INFO] Using worker: geventwebsocket.gunicorn.workers.GeventWebSocketWorker [2024-10-20 12:09:37 +0200] [7] [INFO] Booting worker with pid: 7


BookBounty Version: 0.1.7


Error Saving Config: [Errno 13] Permission denied: 'config/settings_config.json'

Here is the docker compose file in Portainer :

services: bookbounty: image: thewicklowwolf/bookbounty:latest container_name: bookbounty environment:

Any idea ? Thanks a lot !

pdelass commented 1 week ago

@TheWicklowWolf have you a solution for me please ? I'm searching but i don't find anything....

chrisdjsa commented 1 week ago

Same issue, and had a look in my /etc/passwd file and there is no 1000:1000 UID:PGID there. (Synology)