Install JDownloader on TrueNAS Scale

Headless download manager — handles one-click hosters, decrypts link containers, and manages your download queue via MyJDownloader.

Cover for Install JDownloader on TrueNAS Scale

JDownloader is the headless download manager that handles one-click hosters, decrypts link containers, and manages your download queue — all controlled remotely through the MyJDownloader web interface from any device.

What it is

Platform TrueNAS Scale (Docker custom app)
Ports 5800 (web UI via noVNC), 3129 (API)
Image jlesage/jdownloader-2:latest
Config path /mnt/apps/jdownloader/config → /config
Downloads path /mnt/downloads → /downloads
License GPL-3.0

JDownloader 2 is a Java-based download manager that automates downloads from one-click hosters (Mega, Rapidgator, Katfile, etc.), decrypts container files (DLF, RSDF, CCF), and manages download queues with automatic retry, captcha solving, and bandwidth scheduling.

Running it on TrueNAS Scale means you get a persistent download server that is always online — no need to keep a laptop running overnight for large downloads. You control it from your phone, tablet, or any browser via the MyJDownloader web interface.

The hard part: headless operation and MyJDownloader

The install is five minutes. The hard part is understanding that JDownloader runs headless — there is no desktop GUI inside the container. You control it entirely through MyJDownloader, which requires a free account.

PACKET ANALYSIS
Control chain
MyJDownloader is NOT optional

The mistake everyone made: trying to use the noVNC interface as the primary control method. It works but is slow, laggy, and does not support all features. MyJDownloader is the intended way to interact with JDownloader in headless mode.

PACKET ANALYSIS
Control methods
→ https
//my.jdownloader.org
→ http
//<nas-ip>:5800

How to install it

Step 1: Create a MyJDownloader account

  1. Go to my.jdownloader.org
  2. Create a free account (email + password)
  3. Remember these credentials — you need them for the Docker Compose

Step 2: Create directories

mkdir -p /mnt/apps/jdownloader/config
mkdir -p /mnt/downloads

Step 3: Deploy the Docker Compose

TrueNAS Scale → Apps → Discover Apps → Custom App (Docker Compose):

services:
  jdownloader:
    image: jlesage/jdownloader-2:latest
    container_name: jdownloader
    restart: unless-stopped
    environment:
      - TZ=Europe/London
      - USER_ID=1000
      - GROUP_ID=1000
      - UMASK=0022
      - MYJD_USER=your_email@example.com
      - MYJD_PASSWORD=your_password
      - MYJD_DEVICE_NAME=TrueNAS-JD
    ports:
      - "5800:5800"
      - "3129:3129"
    volumes:
      - /mnt/apps/jdownloader/config:/config
      - /mnt/downloads:/downloads

After deploy:

# Check JDownloader is running:
docker logs jdownloader 2>&1 | grep -i "jdownloader"

# Wait 2-3 minutes for initial setup:
# JDownloader downloads and installs itself on first run
# Check status at http://<nas-ip>:5800

Log in at http://<nas-ip>:5800 (noVNC) to verify the container started. Then go to https://my.jdownloader.org to control JDownloader remotely.

  1. Open https://my.jdownloader.org
  2. Sign in with the same email/password from your Docker Compose
  3. Your TrueNAS device should appear in the device list within 2-3 minutes
  4. Click the device to see JDownloader's dashboard
  5. Paste links, monitor downloads, configure settings

Configuration that matters

Download paths

Path Container mount Purpose
/mnt/downloads /downloads Where completed downloads land
/mnt/apps/jdownloader/config /config JDownloader config, settings, plugins

Extraction

Setting Recommended value Why
Auto-extract On Extracts RAR/ZIP archives after download
Delete archives after extraction On Saves disk space
Password list Add common passwords Some archives are password-protected

Speed and scheduling

Setting Recommended value Why
Max downloads 3–5 Avoids account bans on one-click hosters
Speed limit Set per your bandwidth Prevents saturation of your connection
Reconnect Enable Forces IP change when throttled
Schedule Off-peak hours (e.g., 2am–6am) Large downloads do not interfere with daily use

JDownloader automatically decrypts container files:

Container format What it contains
.dlf Link container (multiple URLs)
.rsdf RSDF encrypted link list
.ccf CCF encrypted link container
.crypted Generic encrypted link file
.csv / .txt Plain text link lists (one URL per line)

Just paste the link to the container file into MyJDownloader — JDownloader handles the rest.

One-click hoster support

Hoster Supported Notes
Mega.nz Yes Requires premium account for full speed
Rapidgator Yes Free tier limited
Katfile Yes Free tier limited
DDownload Yes Premium recommended
Uploaded.net Yes Premium recommended
Mediafire Yes Free tier works

What I'd tell anyone building this

  • MyJDownloader is mandatory, not optional. Without it, you have no way to add links or control JDownloader in headless mode. Create the account before deploying the container.

  • The first startup takes 3-5 minutes. JDownloader downloads and installs itself inside the container on first run. Do not restart the container during this time — it will restart the download process.

  • Premium accounts are worth it. Free tiers on one-click hosters are throttled to 50-100 KB/s. A premium account gives you full speed and no captcha. JDownloader's captcha solver helps, but it does not solve everything.

  • Use /mnt/downloads as the download path. This is the same path used by qBittorrent and the *arr stack. All download clients write to the same directory, and Jellyseerr/Radarr/Sonarr can access files from there.

  • The noVNC interface on port 5800 is a fallback. It works but is slow and does not support all MyJDownloader features. Use it only for initial setup or debugging.

  • JDownloader auto-extracts archives. Enable this in Settings → Extractor. It saves you from manually extracting RAR/ZIP files after every download.

Get it

Links:

Quick install (Docker Compose):

services:
  jdownloader:
    image: jlesage/jdownloader-2:latest
    container_name: jdownloader
    restart: unless-stopped
    environment:
      - TZ=Europe/London
      - USER_ID=1000
      - GROUP_ID=1000
      - UMASK=0022
      - MYJD_USER=your_email@example.com
      - MYJD_PASSWORD=your_password
      - MYJD_DEVICE_NAME=TrueNAS-JD
    ports:
      - "5800:5800"
      - "3129:3129"
    volumes:
      - /mnt/apps/jdownloader/config:/config
      - /mnt/downloads:/downloads

After deploy:

# Wait 3-5 minutes for initial setup, then check:
docker logs jdownloader 2>&1 | tail -10

# noVNC interface (fallback):
# http://<nas-ip>:5800

# Primary control:
# https://my.jdownloader.org (sign in with your MYJD_USER credentials)

Sign in at https://my.jdownloader.org, paste links, and JDownloader handles the rest.

Comments (0)

Join the discussion — sign in to comment.

Sign in

No comments yet — be the first to share your thoughts.

Related reading