linuxserver / docker-deluge

GNU General Public License v3.0
247 stars 89 forks source link

[BUG] eggs cannot be installed. #197

Open TrueOsiris opened 8 months ago

TrueOsiris commented 8 months ago

Is there an existing issue for this?

Current Behavior

When trying to add any egg / plugin or trying to enable the ones that ought to be built-in, I get this in my container log
Also, the default plugin list is empty, while this version should already contain a list of plugins that can be enabled.

I'm starting this with an unaltered config, running on unraid linux, using docker compose. folder rights seem to be fine on the config folder.

media-deluge-1  | 00:42:09 [ERROR   ][deluge.ui.web.json_api     :1622] Error calling method `web.upload_plugin`: 'NoneType' object has no attribute 'call'
media-deluge-1  | 00:42:09 [ERROR   ][deluge.ui.web.json_api     :1622] 'NoneType' object has no attribute 'call'
media-deluge-1  | Traceback (most recent call last):
media-deluge-1  |   File "/usr/lib/python3.11/site-packages/deluge/ui/web/json_api.py", line 157, in _handle_request
media-deluge-1  |     result = self._exec_local(method, params, request)
media-deluge-1  |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
media-deluge-1  |   File "/usr/lib/python3.11/site-packages/deluge/ui/web/json_api.py", line 119, in _exec_local
media-deluge-1  |     return meth(*params)
media-deluge-1  |            ^^^^^^^^^^^^^
media-deluge-1  |   File "/usr/lib/python3.11/site-packages/deluge/ui/web/json_api.py", line 950, in upload_plugin
media-deluge-1  |     d = client.core.upload_plugin(filename, plugin_data)
media-deluge-1  |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
media-deluge-1  |   File "/usr/lib/python3.11/site-packages/deluge/ui/client.py", line 548, in __call__
media-deluge-1  |     return self.daemon.call(self.base, *args, **kwargs)
media-deluge-1  |            ^^^^^^^^^^^^^^^^
media-deluge-1  | AttributeError: 'NoneType' object has no attribute 'call'

Expected Behavior

I should be able to install eggs / plugins without python errors in the docker log.

Steps To Reproduce

see other descriptions. I'm running the container through docker compose and I'm trying to add a plugin via the webUI.

Environment

- OS: unraid 6.12.6
Linux Ra 6.1.64-Unraid #1 SMP PREEMPT_DYNAMIC Wed Nov 29 12:48:16 PST 2023 x86_64 Intel(R) Atom(TM) CPU  C2750  @ 2.41GHz GenuineIntel GNU/Linux

- How docker service was installed: native
Docker version 20.10.24, build 297e128
Docker Compose version v2.21.0

CPU architecture

x86-64

Docker creation

x-volume-downloads:      
  &downloads
  type: 'bind'
  source: /mnt/user/downloads
  target: /downloads

services:
  deluge:
    image: lscr.io/linuxserver/deluge:latest
    labels:
      net.unraid.docker.icon: "https://timmer.ninja/images/ico/deluge.png"           
    environment:
      - PUID=1000
      - PGID=100
      - TZ=Etc/UTC
      - DELUGE_LOGLEVEL=error #optional
    volumes:
      - /mnt/user/docker_volumes/media/deluge/config:/config
      - <<: *downloads
    ports:
      - 8112:8112
      - 6881:6881
      - 6881:6881/udp
      - 58846:58846 #optional
    restart: unless-stopped
    network_mode: bridge  
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8112"]
      interval: 30s 
      timeout: 10s 
      retries: 5

Container logs

media-deluge-1  | [migrations] started
media-deluge-1  | [migrations] no migrations found
media-deluge-1  | ───────────────────────────────────────
media-deluge-1  |
media-deluge-1  |       ██╗     ███████╗██╗ ██████╗
media-deluge-1  |       ██║     ██╔════╝██║██╔═══██╗
media-deluge-1  |       ██║     ███████╗██║██║   ██║
media-deluge-1  |       ██║     ╚════██║██║██║   ██║
media-deluge-1  |       ███████╗███████║██║╚██████╔╝
media-deluge-1  |       ╚══════╝╚══════╝╚═╝ ╚═════╝
media-deluge-1  |
media-deluge-1  |    Brought to you by linuxserver.io
media-deluge-1  | ───────────────────────────────────────
media-deluge-1  |
media-deluge-1  | To support LSIO projects visit:
media-deluge-1  | https://www.linuxserver.io/donate/
media-deluge-1  |
media-deluge-1  | ───────────────────────────────────────
media-deluge-1  | GID/UID
media-deluge-1  | ───────────────────────────────────────
media-deluge-1  |
media-deluge-1  | User UID:    1000
media-deluge-1  | User GID:    100
media-deluge-1  | ───────────────────────────────────────
media-deluge-1  |
media-deluge-1  | [custom-init] No custom files found, skipping...
media-deluge-1  | Connection to 127.0.0.1 58846 port [tcp/*] succeeded!
media-deluge-1  | Connection to 127.0.0.1 8112 port [tcp/*] succeeded!
media-deluge-1  | [ls.io-init] done.
media-deluge-1  | 00:39:47 [ERROR   ][deluge.ui.web.json_api     :1622] Error calling method `web.upload_plugin`: 'NoneType' object has no attribute 'call'
media-deluge-1  | 00:39:47 [ERROR   ][deluge.ui.web.json_api     :1622] 'NoneType' object has no attribute 'call'
media-deluge-1  | Traceback (most recent call last):
media-deluge-1  |   File "/usr/lib/python3.11/site-packages/deluge/ui/web/json_api.py", line 157, in _handle_request
media-deluge-1  |     result = self._exec_local(method, params, request)
media-deluge-1  |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
media-deluge-1  |   File "/usr/lib/python3.11/site-packages/deluge/ui/web/json_api.py", line 119, in _exec_local
media-deluge-1  |     return meth(*params)
media-deluge-1  |            ^^^^^^^^^^^^^
media-deluge-1  |   File "/usr/lib/python3.11/site-packages/deluge/ui/web/json_api.py", line 950, in upload_plugin
media-deluge-1  |     d = client.core.upload_plugin(filename, plugin_data)
media-deluge-1  |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
media-deluge-1  |   File "/usr/lib/python3.11/site-packages/deluge/ui/client.py", line 548, in __call__
media-deluge-1  |     return self.daemon.call(self.base, *args, **kwargs)
media-deluge-1  |            ^^^^^^^^^^^^^^^^
media-deluge-1  | AttributeError: 'NoneType' object has no attribute 'call'
github-actions[bot] commented 8 months ago

Thanks for opening your first issue here! Be sure to follow the relevant issue templates, or risk having this issue marked as invalid.

LinuxServer-CI commented 7 months ago

This issue has been automatically marked as stale because it has not had recent activity. This might be due to missing feedback from OP. It will be closed if no further activity occurs. Thank you for your contributions.

thespad commented 6 months ago

I can't replicate this with a clean container; the plugins list is populated with the default plugins, and I can enable them all without error.

Please make sure the plugins you're using are actually maintained, because at a glance a lot of the 3rd party plugins are still python 2.x, which will never work, and many expect old versions of python 3; the container ships with 3.12.3 at this point.

LinuxServer-CI commented 5 months ago

This issue has been automatically marked as stale because it has not had recent activity. This might be due to missing feedback from OP. It will be closed if no further activity occurs. Thank you for your contributions.

blahdidbert commented 3 months ago

Just pulled this container and configured it today and running into the same issues as OP but not the exact same error... they might be related?

image

This is what populates in my container logs.

20:58:09 [ERROR   ][deluge.ui.web.json_api     :1672] Error calling method `web.upload_plugin`: [Errno 21] Is a directory: '/config/plugins/'
20:58:09 [ERROR   ][deluge.ui.web.json_api     :1672] [Errno 21] Is a directory: '/config/plugins/'
Traceback (most recent call last):
  File "/usr/lib/python3.12/site-packages/deluge/ui/web/json_api.py", line 157, in _handle_request
    result = self._exec_local(method, params, request)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/deluge/ui/web/json_api.py", line 119, in _exec_local
    return meth(*params)
           ^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/deluge/ui/web/json_api.py", line 933, in upload_plugin
    shutil.copyfile(path, os.path.join(get_config_dir(), 'plugins', filename))
  File "/usr/lib/python3.12/shutil.py", line 262, in copyfile
    with open(dst, 'wb') as fdst:
         ^^^^^^^^^^^^^^^
IsADirectoryError: [Errno 21] Is a directory: '/config/plugins/'
blahdidbert commented 3 months ago

Just pulled this container and configured it today and running into the same issues as OP but not the exact same error... they might be related?

This is what populates in my container logs.

20:58:09 [ERROR   ][deluge.ui.web.json_api     :1672] Error calling method `web.upload_plugin`: [Errno 21] Is a directory: '/config/plugins/'
20:58:09 [ERROR   ][deluge.ui.web.json_api     :1672] [Errno 21] Is a directory: '/config/plugins/'
Traceback (most recent call last):
  File "/usr/lib/python3.12/site-packages/deluge/ui/web/json_api.py", line 157, in _handle_request
    result = self._exec_local(method, params, request)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/deluge/ui/web/json_api.py", line 119, in _exec_local
    return meth(*params)
           ^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/deluge/ui/web/json_api.py", line 933, in upload_plugin
    shutil.copyfile(path, os.path.join(get_config_dir(), 'plugins', filename))
  File "/usr/lib/python3.12/shutil.py", line 262, in copyfile
    with open(dst, 'wb') as fdst:
         ^^^^^^^^^^^^^^^
IsADirectoryError: [Errno 21] Is a directory: '/config/plugins/'

After clicking around in the container I was able to get it to populate... magically. In all seriousness, all I did was close the window and clicked on Preferences at the top of the page and it corrected itself. Might be an initial configuration bug. Either way, it is no longer an issue for me (probably the same for OP since they haven't replied in a while) but at the very least commenting here for someone to stumble over later.

LinuxServer-CI commented 2 months ago

This issue has been automatically marked as stale because it has not had recent activity. This might be due to missing feedback from OP. It will be closed if no further activity occurs. Thank you for your contributions.

faxalex commented 3 weeks ago

I have a similar problem. I am trying very hard to install the YaRSS2 plugin but it does not work in any way. Do you have any suggestions? I tested it by downloading from the official site https://bitbucket.org/bendikro/deluge-yarss-plugin/downloads/

I tested with all versions of python YaRSS2-2.1.4-py3.6.egg YaRSS2-2.1.4-py3.7.egg YaRSS2-2.1.5-py3.6.egg YaRSS2-2.1.5-py3.8.egg YaRSS2-2.1.5-py3.9.egg YaRSS2-2.1.5-py3.10.egg YaRSS2-2.1.5-py3.11.egg

thespad commented 3 weeks ago

As noted the container ships with Python 3.12