realies / soulseek-docker

🐳 Soulseek Docker Container
https://hub.docker.com/r/realies/soulseek/
MIT License
209 stars 35 forks source link

Can't find my downloads #90

Closed jamesblonde007 closed 1 month ago

jamesblonde007 commented 3 months ago

I set up Soulseek and I am able to connect to my shared music, and people can download from me. Nice.

However, when I try to download, the download completes normally but there is nothing at all in the download folder (not even sub-folders) and no error in the log. I tried to set the download folder in the UI as well but it made no difference.

I set the permission of the downloads folder to read/write and EVERYONE as I thought it might be a permissions issue but that didn't help.

Any ideas?

realies commented 3 months ago

share your docker and soulseek config

jamesblonde007 commented 3 months ago

I don't see any config files. Where should they be?

realies commented 3 months ago

share how you start the container and what you've configured inside soulseek for the downloads folder

jamesblonde007 commented 3 months ago

Understood. I exported the settings and pasted them below. I found the paths section of the installation guide to be very confusing so I probably got something wrong there.

{ "CapAdd" : null, "CapDrop" : null, "cmd" : "", "cpu_priority" : 10, "enable_publish_all_ports" : false, "enable_restart_policy" : true, "enable_service_portal" : null, "enabled" : false, "env_variables" : [ { "key" : "PATH", "value" : "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" }, { "key" : "DISPLAY", "value" : ":1" }, { "key" : "HOME", "value" : "/tmp" }, { "key" : "LANG", "value" : "en_US.UTF-8" }, { "key" : "LANGUAGE", "value" : "en_US:en" }, { "key" : "LC_ALL", "value" : "en_US.UTF-8" }, { "key" : "NOVNC_PORT", "value" : "6080" }, { "key" : "PGID", "value" : "1000" }, { "key" : "PUID", "value" : "1000" }, { "key" : "UMASK", "value" : "022" }, { "key" : "XDG_RUNTIME_DIR", "value" : "/tmp" } ], "exporting" : false, "id" : "9a296073af2320653105b96ce3a098bdfbba00c9a3c543598b57314f3bcbe52b", "image" : "realies/soulseek:latest", "is_ddsm" : false, "is_package" : false, "labels" : { "org.opencontainers.image.ref.name" : "ubuntu", "org.opencontainers.image.version" : "24.04" }, "links" : [], "memory_limit" : 852492288, "name" : "soulseek-realies", "network" : [ { "driver" : "bridge", "name" : "bridge" } ], "network_mode" : "bridge", "port_bindings" : [ { "container_port" : 6080, "host_port" : 6080, "type" : "tcp" }, { "container_port" : 6080, "host_port" : 6080, "type" : "udp" }, { "container_port" : 62269, "host_port" : 61124, "type" : "tcp" }, { "container_port" : 62269, "host_port" : 61124, "type" : "udp" }, { "container_port" : 62270, "host_port" : 61125, "type" : "tcp" }, { "container_port" : 62270, "host_port" : 61125, "type" : "udp" } ], "privileged" : false, "service_portals" : [], "shortcut" : { "enable_shortcut" : false, "enable_status_page" : false, "enable_web_page" : false, "web_page_url" : "" }, "use_host_network" : false, "version" : 2, "volume_bindings" : [ { "host_volume_file" : "/docker/soulseek/data", "is_directory" : true, "mount_point" : "/data/.SoulseekQt", "type" : "rw" }, { "host_volume_file" : "/docker/soulseek/logs", "is_directory" : true, "mount_point" : "/data/logs", "type" : "rw" }, { "host_volume_file" : "/Music/Lossy", "is_directory" : true, "mount_point" : "/data/music/lossy", "type" : "ro" }, { "host_volume_file" : "/Music/Lossless", "is_directory" : true, "mount_point" : "/data/music/lossless", "type" : "ro" }, { "host_volume_file" : "/docker/soulseek/shared", "is_directory" : true, "mount_point" : "/data/shared", "type" : "rw" }, { "host_volume_file" : "/Music/Soulseek Downloads NAS", "is_directory" : true, "mount_point" : "/data/downloads", "type" : "rw" } ] }

realies commented 3 months ago

share your soulseek downloads folder configuration

jamesblonde007 commented 3 months ago

Sorry, I didn't understand your request.

realies commented 3 months ago

what did you set inside the soulseek client as the downloads folder?

jamesblonde007 commented 3 months ago

Isn't that information already in the settings JSON file which I pasted above? Or are you looking for something else?

realies commented 3 months ago

If you check the readme you'll find that the default client downloads folder is /data/Soulseek Downloads. If you change this, you have to update the settings in the Soulseek client.

jamesblonde007 commented 3 months ago

Thanks for your patience.

I tried to set that folder name at the start but that folder setting generated an error:

Screenshot 2024-05-28 at 15 54 38

Then I saw another installation guide with a different folder name so I tried that. The error didn't appear so it seemed like progress but downloads are still not working properly.

realies commented 3 months ago

Ah, the usual Synology issues. Someone here mentioned you can use the CLI to start the container with the correct path: https://github.com/realies/soulseek-docker/issues/86#issuecomment-2088811743

Otherwise, you can reconfigure the Soulseek client to download in your specific mounted folder from Options -> File Sharing -> Download Folder.

This will not fix the download icon in the UI that allows you to browse downloaded files from your browser. I could eventually come up with a solution to this, but it will likely involve reading the Soulseek configuration file, which does not seem trivial.

jamesblonde007 commented 3 months ago

Thanks, at least I understand the problem now.

I tried "Options -> File Sharing -> Download Folder" already but that doesn't work. I will look into the CLI method.

realies commented 3 months ago

what exactly does not work? files are not downloaded to the specified directory?

jamesblonde007 commented 3 months ago

I tried the CLI method but got errors (login required which doesn't exist?)

I tried the YML method but I got the error "Error response from daemon: Bind mount failed: '/persistent/appdata' does not exists"

Any help would be much appreciated. I have spent all day on this and getting nowhere.

jamesblonde007 commented 3 months ago

what exactly does not work? files are not downloaded to the specified directory?

correct, they seem to download successfully according to the UI but the files aren't anywhere.

realies commented 3 months ago

i guess it might not be taking the settings immediately, try changing the automatic config saving interval to 1 minute inside soulseek after updating the downloads location and download something after a minute or two

jamesblonde007 commented 3 months ago

i guess it might not be taking the settings immediately, try changing the automatic config saving interval to 1 minute inside soulseek after updating the downloads location and download something after a minute or two

That was one of the first things I did, to change the interval to 1 minute.

realies commented 3 months ago

you can go inside the container to check where files are getting downloaded to,

docker exec -it soulseek bash
find / -name filename.mp3
jamesblonde007 commented 3 months ago
find / -name filename.mp3

When I tried that I got the following output:

find: ‘/proc/44/map_files’: Permission denied find: ‘/proc/46/map_files’: Permission denied find: ‘/proc/48/map_files’: Permission denied find: ‘/proc/53/map_files’: Permission denied find: ‘/proc/99/map_files’: Permission denied find: ‘/proc/149/map_files’: Permission denied

realies commented 3 months ago

i have to ask, do you type in the actual filename where it says filename.mp3?

jamesblonde007 commented 3 months ago

i have to ask, do you type in the actual filename where it says filename.mp3?

Yes

realies commented 3 months ago

this is very strange, if the client is unable to write, it will usually indicate this in the interface;

i just saw your earlier message:

I tried the CLI method but got errors (login required which doesn't exist?)

I tried the YML method but I got the error "Error response from daemon: Bind mount failed: '/persistent/appdata' does not exists"

you have to actually set the bind locations correctly, the yml example assumes you have the path /persistent/appdata in your filesystem, it could very well not be that path

using the cli should not require a login, if the realies/soulseek image does not exist on your host, it should pull it before starting it, doing docker pull realies/soulseek should also pull the image without asking for any credentials as it's public - https://hub.docker.com/r/realies/soulseek/

jamesblonde007 commented 3 months ago

you have to actually set the bind locations correctly, the yml example assumes you have the path /persistent/appdata in your filesystem, it could very well not be that path

I created these paths after I saw the errors but it didn't fix the issue. I assume that the 'persistent' folder belongs in the soulseek folder like this:

/volume1/docker/soulseek/persistent

realies commented 3 months ago

In the compose and CLI examples /persistent/downloads is an absolute path in the filesystem. If your downloads are stored in /mnt/mydisk/downloads/soulseek, you have to update the configs as

- /mnt/mydisk/downloads/soulseek:/data/Soulseek Downloads

or

  -v "/mnt/mydisk/downloads/soulseek":"/data/Soulseek Downloads" \
jamesblonde007 commented 3 months ago

Thanks, your post didn't solve my problems completely but it helped me to move forward and to finally get there. (In the end I used the compose method, gave up on having a download path outside of the soulseek directory and moved the compose YML file inside the soulseek folder, along with a few other small changes.)

I am now running Soulseek and started to share 600GB of music 24/7 :)

Of course, I still can't touch the settings panel for the container because Synology will flag the space in the path name every time so I am unable to save any changes to the settings.

realies commented 3 months ago

glad you got it working, i suggest you try a chatbot with your specific config and folders to figure out the rest of the config