How to install JDownloader2 in 2024?

There does not appear to be a JDownloader2 app by default. Many sources on the Internet however claim that it can easily be installed by adding a catalog called “TrueCharts”, for example as described here: TrueNAS Scale: Adding TrueCharts Apps Catalog - Tech Addressed

Unfortunately this does not seem to work (anymore?) and instead of manually creating my own JDownloader container, I would like to ask if anyone could give me a hint on how to install JDownlaoder2 from the chart: jdownloader2 | TrueCharts Charts

Truecharts deleted their Truenas Scale repo months ago. If you want to use their apps, you need to use their linux distro that’s build around their kube/helm environment. That would need either baremetal or a VM.

But pretty much all the truecharts plus iX official/community apps are just based on docker images created by other people. TC is probably based on GitHub - jlesage/docker-jdownloader-2: Docker container for JDownloader 2

Which can be installed in Truenas Scale as a custom app or through Jailmaker sandbox.

Set user/group, bind/hostpath mounts for config/data and ports. Looks pretty straightforward.

The next Scale release will be moving away from helm/kubernetes to docker(compose). Any iX official/community & custom apps will be migrated. Truecharts apps will not.

1 Like

I see, thanks for the information. Creating a custom app surly seems like the easiest way to go, but it comes of course with a big disadvantage: I have to maintain it - no automatic updates, right?

Can you tell me more about why TrueNAS is moving away from helm to docker-compose?

Custom Apps configured via the TrueNAS UI use the same update tracking as train apps. If the docker image has an updated version available upstream, TrueNAS will alert and allow you to upgrade via the UI.

1 Like

I checked with Docker Hub and jaymoulin/jdownloader appears to be the most widely used one by far with 50M weekly downloads, so I went with that and set all the options that it requires, but when it starts, it just spams errors and never becomes available.

Any ideas why it’s not working?

Here is my Config btw:


Application name

Application name: jdownloader

Container Images

Docker Image

Image repository: jaymoulin/jdownloader
Image Tag: latest
Image Pull Policy: Only pull image if not present on host

Container Entrypoint

Container CMD: No items have been added yet.
Container Args: No items have been added yet.

Container Environment Variables

Environment Variable Name: MYJD_USER
Environment Variable Value: myemail@gmail.com
Environment Variable Name: MYJD_PASSWORD
Environment Variable Value: myJdPwd
Environment Variable Name: MYJD_DEVICE_NAME
Environment Variable Value: TrueNAS

Networking

Add external Interfaces: No items have been added yet.
DNS Policy: Use Default DNS Policy where Pod will inherit the name resolution configuration from the node.

DNS Configuration

Nameservers: No items have been added yet.
Searches: No items have been added yet.
DNS Options: No items have been added yet.
Provide acces to node network namespace for the workload: No

Port Forwarding

Container Port: 3129
Node Port: 9129 (Couldn’t set it to 3129 because it needs to be >9000)
Protocol: TCP Protocol

Storage

Host Path Volumes

Host Path: /mnt/pool_home/media
Mount Path: /nas/media

Host Path: /mnt/pool_home/media/Downloads
Mount Path: /opt/JDownloader/Downloads

Memory Backed Volumes

No itmes have been added yet.

##Volumes
Mount Path: /opt/JDownloader/app/cfg
Dataset name: jdownloader-config

Mount Path: /opt/JDownloader/app/logs
Dataset name: jdownloader-logs

Host Path: /opt/JDownloader/app/extensions
Mount Path: jdownlaoder-extensions

Workload Details
Enable TTY: No
Enable STDIN: No
Privileged Mode: No
Capabilities: No items have been added yet.
Configure Container User and Group ID: Yes
Run Container As User: 1001
Run Container As Group: 100

Scaling/Upgrade Policy

Update Strategy: Kill existing pods before creating new ones

Resource Reservation

No GPUs resources allocated.

Resource Limits

Enable Pod resource limits: Yes
CPU Limit: 4000m
Memory Limit: 8Gi

Portal Configuration

Enable WebUI Portal: Yes
Portal Name: Web Portal
Protocol for Portal: HTTP Protocol
Use Node IP for Portal IP/Domain: Yes
Port: 9129

This is my log: https://pastebin.com/5jw25BPH

Did you follow the directions for docker or kubernetes install? Even though you’re installing a docker app, it’s still being ingested into Scale’s kubernetes environment.

Then again, first line in the log shows a probable permission issue: 2024-09-21T05:46:04.168478803-07:00 sed: can’t create temp file '/opt/JDownloader/app/cfg/

1 Like

Don’t know why, but why not try the image instead (already suggested by Craig_L)? I’m using it too, literally 1 min to config and start downloading things

1 Like

With that image it actually works just fine. But it has a big downside: It doesn’t run headless, it actually runs the GUI and a VNC server to access it which of course is way more intense on resources than the other image would be because that other image runs JDownlaoder headless in the background only exposing the MyJDownloader API port.

So if anyone has ideas on how to get this to work, I’m still very much interested. :slightly_smiling_face:

Then again, first line in the log shows a probable permission issue: 2024-09-21T05:46:04.168478803-07:00 sed: can’t create temp file '/opt/JDownloader/app/cfg/
I tried it two ways:

  • Enabled Configure Container User and Group ID - userID set to 1001, group set to 100
  • Disabled Configure Container User and Group ID

So I’m not really sure what could have caused this. 1001:100 is what was suggested on the docker hub page and I’d assume if I don’t set any id it will default to root. Seems odd that it would still be lacking permission.

1 Like

Clear, didn’t think about that. Perfectly legit!

You should probably check what user Is 1001 in your system, and in case adjust ACL on datasets

Did you - or anyone else - find a solution?
I followed your steps and ended with the same issues.

I had also some trouble setting this up.
(This was my first Docker-/Container experience)
Finally got it working, with some of the hints here and some ai-chatbot help.

Here my little report, maybe it helps someone else.
Feel free to ask if you have questions.

Repository needs to be filled with “jlesage/jdownloader-2”
(not the full github URL, and also not jlesage/docker-jdownloader-2 …)

At first i couldn’t find downloaded files, it seemed that there was a ACL/privilege issue.
JDownloader-Docker uses User_ID 1000 and User_Group 1000 by default. When i tried to change this to the apps user and group (ID 568) with the Custom Users option in the Custom App Settings my Container crashed.
My first Workaround was to create an User and Group jdownloader (ID 1000). Later i found out that the Function Custom Users seems to be the problem.

After successfully adding environmental variables for the MyJDownloader login
(Yes, under the Environment Variables Option, and not under Commands …)
i figured out that here i can also change the user and group IDs.

So at the moment it seems to run OK, i could delete the credentials from my initial workaround, downloaded files still appear where i want them and it automatically connects with my MyJDownloader account.

But what i couldn’t figure out is why after a restart of the Container all my set up but not jet started downloads disappear from my JDownloader instance (also the ones currently running…).
Maybe someone can help me here please?

If someone can please confirm that the not working Custom Users problem is not just a problem on my setup i can make a bug-report!

Thanks, Mike

Could you explain how you fixed the crash when setting user ID ? The only thing I see in the edit page of the app is “Custom User” that once you tick it you can insert User ID / Group ID.
Any user ID makes the app crashing for me…

Thanks for your Reply, good to hear that it isnt just on my machine leading to a Crash (sort of).

On the github site of the jlesage is a list of environment-variables.
User-ID and Group-ID are some of them.
(I also used environment-variables to set up my MyJDownloader account).
In the end i left the option for “Custom User” unticked since it seems to cause the crash.
In the setup-menu of the custom app you can add “Environment Variables”, for each one added a field with “Name” and “Value” appears. Here i added the ones i wanted to change from the list of the github repository.
(I used the apps user/group since it was used by the most other apps i have in use by default, maybe i should overthink this from a safety perspective, i think the important takeaway is that the used IDs match with the ones you have assigned in the ACL /older-permissions.)

Also keep in mind that i used the docker of jlesage and not the one from jaymoulin that user 0x0 mentioned above.

By the way i was also to solve the problem with the loosing of the configuration / set up downloads, no everything seems to be good.

I simple missed to add a Storage that links the config folder from the container to a persistent folder in my TrueNAS Scale machine.
(Type: “Host Path”, Mount Path: “/config”, Host Path: “/SomePathOnYourMachineWithMatchingPermissions”)

If you’re running 24.10, just install it as a custom compose app.

The project page also has a basic sample compose section.

Would that be with the “Install via YAML”, the three dots next to the “Custom App” button in the “Discover Apps” menu?

Yes!

Sorry Craig, can you do a mini step by step guide with screenshots?

I’ve never used it before. The github link has sample docker-compose that you can use for a custom yaml app. There are all kinds of youtube videos on how to install custom compose with the EE app UI. Servers@home has a bunch that should point you in the right direction