JDownloader

JDownloader

Docker app from junkerderprovinz's Repository

Overview

JDownloader 2 with a dark mode GUI and full clipboard support out of the box. The download list, link grabber and settings are all dark, and everything runs on a hardware-accelerated Selkies web desktop. It looks like this from the first start, without tweaking or add-ons. What's pre-configured: • Full dark mode by default: JD Plain Dark (monochrome Carbon #161616) in a maximised kiosk window. Switch to a matching Light theme, or JDownloader's own classic look, via the Theme variable. • Installs and updates JDownloader by itself. The first-run install prompts are confirmed automatically, so there is nothing to click. • Seamless clipboard over HTTPS: copy on your PC, paste straight into JD. • Persistent config and downloads in /config and /downloads; hidden columns / layout survive a restart. Notes: • The first start takes a few minutes: JDownloader installs itself and its dark theme, and the WebUI stays black until that is done. Do not restart the container in the meantime, since that interrupts the install. Wait for the "JDOWNLOADER IS READY" banner in the container log, then open the WebUI. • WebUI opens via HTTPS (port 3001, self-signed cert, accept it once), because the clipboard needs HTTPS. Plain HTTP (3000) is also exposed. • Map /downloads to your download share. PUID/PGID default to 99/100 (nobody/users on Unraid). • Language: English by default. Change it any time in JDownloader's own language menu (Settings, the flag icon); your choice persists across restarts. • Auth: leave WebUI Username and Password empty for no login. Source on GitHub: https://github.com/junkerderprovinz/jdownloader

JDownloader 2 for Unraid

Build  Lint  Docker Pulls  Image Size  Arch  Selkies  Unraid  License: AGPL-3.0


A modern, plug-and-play Docker image for JDownloader 2 on Unraid with a dark and ad-free UI out of the box: JD Highlighter, a borderless IBM Carbon #161616 theme with one accent colour you pick yourself, across the entire interface (download list, link grabber and settings, not just the menu bar), in a maximised kiosk window. A light version and the plain Carbon looks are a pick in JDownloader's settings. JDownloader's built-in advertisements are switched off, so the download graph keeps its full height. Full GUI in your browser via Selkies, zero first-run setup.


Table of Contents

  1. Download
  2. Support
  3. What it looks like
  4. What it does
  5. How it compares
  6. Getting started
  7. How AI is used here

1. Download

Server

Install from Unraid's Community Applications   Install from the MOS Hub   Install from the ZimaOS and CasaOS store   Install from the umbrelOS community app store

Download the docker-compose file   Download the source archive


KnightLoader downloads everything and looks good doing it: hosters, debrid, torrents, Usenet and videos, and it takes over your JDownloader accounts, rules and download list. Why don't you try?


2. Support

A one-knight job: I build it, keep it running, work through the issues and add what people ask for, until nothing is missing. It is free, with no accounts, no telemetry, no ads and no paid tier. No asterisk anywhere. Nothing readable ever leaves your own walls. Forged on evenings and weekends, with heart and stubbornness.

If it has earned a place on your server or computer, toss a coin to your knight: it helps cover the costs and keeps the project alive. It also makes this knight's heart beat a little faster. Three ways below, whichever suits you.

Buy me a coffee   PayPal   Donate with crypto


3. What it looks like

The downloads in these pictures are Blender's open movies and two Linux images, loaded in a test container.

JDownloader's download list in JD Highlighter Dark in a browser window, with three packages downloading and the speed graph in the toolbar
The download list in JD Highlighter Dark, with the speed graph at full height

The LinkGrabber with three packages of checked links and the file properties below them
The LinkGrabber checks each link and sorts it into a package before you start

JDownloader's general settings in JD Highlighter Dark, on rounded cards
The settings use the same palette and accent as everything else

The User Interface settings in JD Highlighter Light, with the accent colour row and the open Appearance menu listing the four looks
Accent colour and look are picked in JDownloader's own settings


4. What it does

  • Selkies instead of noVNC. A hybrid VNC and H.264 stream for a smooth desktop at 60 fps, a real clipboard in both directions, and file upload and download from the browser.
  • Dark everywhere, in your colour. JD Highlighter covers the download list, the LinkGrabber and the settings with IBM Carbon #161616, rounded cards and clean line icons, not only the menu bar. Under Settings › User Interface you pick the accent colour and the look: JD Highlighter Dark or Light, or the plain Carbon looks JD Plain Dark and Light. The Account bar switch there brings back the account icons in the status bar. The pick survives image updates, and JD_THEME=JDDEFAULT still brings back JDownloader's classic look.
  • No ads. The premium banner, the nag columns and the deal popups are switched off, so the speed graph keeps its full height.
  • Nothing to set up. JDownloader installs itself on the first start and updates itself as usual, with Java 21 for the full Swing GUI.
  • Your settings survive updates. Links, accounts and session state live in /config, and the image runs on amd64 and arm64.

5. How it compares

This image jlesage jaymoulin
Web stack Selkies noVNC n/a (headless)
HW-accelerated rendering ✅ ❌ ❌
Browser clipboard ✅ ⚠️ ❌
File upload via WebUI ✅ ❌ ❌
Full dark UI (content too) ✅ ❌ ❌
Ad-free by default ✅ ❌ ❌
Auto-install on first start ✅ ✅ ✅
Multi-arch ✅ amd64 + arm64 ✅ ✅
Base LinuxServer/Selkies jlesage/Alpine Alpine

6. Getting started

On Unraid, install JDownloader from Community Applications. The defaults work as they are: /config goes to /mnt/user/appdata/jdownloader and downloads to /mnt/user/downloads. Set a WebUI password if the server can be reached from outside your network.

[!IMPORTANT] On the first start, and after every image update, JDownloader installs or updates itself and the WebUI stays black for a few minutes. Wait for JDOWNLOADER IS READY in the container log before you open it, and do not restart the container in the meantime.

Then open https://<server-ip>:3001/ and accept the self-signed certificate once. The Selkies client needs HTTPS for its video decoder and for the clipboard. Port 3000 is plain HTTP and only works behind a reverse proxy that handles TLS.

Without Unraid:

docker run -d --name jdownloader --shm-size=1gb \
  -p 3001:3001 \
  -e PUID=99 -e PGID=100 \
  -v /path/to/appdata/jdownloader:/config \
  -v /path/to/downloads:/downloads \
  junkerderprovinz/jdownloader:latest

--shm-size=1gb keeps Selkies rendering smooth; the Unraid template sets it for you. The interface starts in English, and JDownloader's own settings switch the language.

Other Docker hosts

compose.yaml runs JDownloader on any Linux server with Docker. Put it in a folder of its own, point the folders under volumes at your files and start it with docker compose up -d. The folders are created next to the file.

  • Synology: in Container Manager, create a project from the file (DSM 7.2 or newer).
  • Proxmox: run it in a VM or an LXC container that has Docker.
  • MOS: install JDownloader from the MOS Hub.
  • ZimaOS and CasaOS: add the community store and install JDownloader from it.
  • umbrelOS: add the community app store and install JDownloader from it.

7. How AI is used here

One knight builds this, and AI is one of the tools I work with, the same way I work with an editor or a compiler. It helps me write code and documentation and it checks my work, and that saves me a good many evenings. It does not make the decisions, though. I read and understand everything before it ships, and if something here breaks, that is on me and not on the tool.

You do not have to take my word for it. The code is open and every release note is written by hand. The issue tracker shows how problems actually get handled, including the ones I got wrong the first time. If you find something that is not right, open an issue and I will look at it.


Questions? Check the support thread. Bugs, ideas or feature requests? Please open a GitHub issue.


The packaging in this repository is AGPL-3.0. JDownloader 2 keeps its own licence, and the bundled icon set is JDownloader's Icons8 icons under CC BY-ND 3.0; see LICENSE.

Categories

Download Statistics

70,553
Total Downloads
13,827
This Month
13,827
Avg / Month

Total Downloads Over Time

Loading chart...

Related apps

Explore more like this

Explore all

Details

Repository
junkerderprovinz/jdownloader:latest
Last Updated2026-10-04
First Seen2026-06-09

Runtime arguments

Web UI
https://[IP]:[PORT:3001]/
Network
bridge
Shell
bash
Privileged
false
Extra Params
--restart=unless-stopped --shm-size=1gb

Template configuration

WebUI Port (HTTP / Selkies)Porttcp

Plain HTTP WebUI. Browsers block seamless clipboard over HTTP, so prefer HTTPS (3001).

Target
3000
Default
3000
Value
3000
WebUI Port (HTTPS / Selkies)Porttcp

HTTPS WebUI (self-signed TLS). The WebUI button opens this port, and seamless clipboard needs it.

Target
3001
Default
3001
Value
3001
AppData (/config)Pathrw

Persistent JDownloader install, configs, and session data.

Target
/config
Default
/mnt/user/appdata/jdownloader
Value
/mnt/user/appdata/jdownloader
Downloads (/downloads)Pathrw

Download target directory.

Target
/downloads
Default
/mnt/user/downloads
Value
/mnt/user/downloads
Theme (JD_THEME)Variable

jd-highlighter-dark = JD Highlighter Dark, borderless Carbon #161616 with one accent (the default, Dark means the same). jd-highlighter-light = the same design in light. plain-dark = JD Plain Dark, the plain monochrome Carbon look. Light = JD Plain Light, the same look in light. JDDEFAULT = JD Default, JDownloader's own classic look. This is only the look a new container starts with: the accent colour and the look are picked in JDownloader under Settings > User Interface, and that pick wins.

Target
JD_THEME
Default
jd-highlighter-dark|jd-highlighter-light|plain-dark|Light|JDDEFAULT
Value
jd-highlighter-dark
Self-Update (JD_SELFUPDATE)Variable

true (default) = JDownloader keeps updating itself. false = frozen appliance: disables JD's periodic self-update checks. Keep in mind that the same update channel delivers the hoster plugins, which go stale within weeks, so downloads may start failing. The first install always uses the updater.

Target
JD_SELFUPDATE
Default
true|false
Value
true
In-container browser for captchas (JD_ENABLE_BROWSER)Variable

auto (default) = remembers your last choice, so an enabled browser survives container updates (recreates). Set true to enable JDownloader's 'solve captcha in browser' flow: reCAPTCHA/hCaptcha/Turnstile open in a bundled Firefox (with uBlock Origin) on the web desktop and are solved with one click, from the container's own IP (tokens are IP-bound). The Firefox profile persists in /config/.config/mozilla. Set false to force it off. Only enable it if a hoster you use needs browser captchas. Classic image captchas are auto-solved either way, and enabling it runs a full browser, which costs more resources and adds attack surface.

Target
JD_ENABLE_BROWSER
Default
auto|true|false
Value
auto
WebUI UsernameVariable

Optional. Username for HTTP-basic-auth. Leave it empty together with the password for no login.

Target
CUSTOM_USER
WebUI PasswordVariable

Optional. Password for HTTP-basic-auth.

Target
PASSWORD
Timezone (TZ)Variable

Container timezone.

Target
TZ
Default
Europe/Vienna|Africa/Abidjan|Africa/Accra|Africa/Addis_Ababa|Africa/Algiers|Africa/Asmera|Africa/Bamako|Africa/Bangui|Africa/Banjul|Africa/Bissau|Africa/Blantyre|Africa/Brazzaville|Africa/Bujumbura|Africa/Cairo|Africa/Casablanca|Africa/Ceuta|Africa/Conakry|Africa/Dakar|Africa/Dar_es_Salaam|Africa/Djibouti|Africa/Douala|Africa/El_Aaiun|Africa/Freetown|Africa/Gaborone|Africa/Harare|Africa/Johannesburg|Africa/Juba|Africa/Kampala|Africa/Khartoum|Africa/Kigali|Africa/Kinshasa|Africa/Lagos|Africa/Libreville|Africa/Lome|Africa/Luanda|Africa/Lubumbashi|Africa/Lusaka|Africa/Malabo|Africa/Maputo|Africa/Maseru|Africa/Mbabane|Africa/Mogadishu|Africa/Monrovia|Africa/Nairobi|Africa/Ndjamena|Africa/Niamey|Africa/Nouakchott|Africa/Ouagadougou|Africa/Porto-Novo|Africa/Sao_Tome|Africa/Tripoli|Africa/Tunis|Africa/Windhoek|America/Adak|America/Anchorage|America/Anguilla|America/Antigua|America/Araguaina|America/Argentina/La_Rioja|America/Argentina/Rio_Gallegos|America/Argentina/Salta|America/Argentina/San_Juan|America/Argentina/San_Luis|America/Argentina/Tucuman|America/Argentina/Ushuaia|America/Aruba|America/Asuncion|America/Bahia|America/Bahia_Banderas|America/Barbados|America/Belem|America/Belize|America/Blanc-Sablon|America/Boa_Vista|America/Bogota|America/Boise|America/Buenos_Aires|America/Cambridge_Bay|America/Campo_Grande|America/Cancun|America/Caracas|America/Catamarca|America/Cayenne|America/Cayman|America/Chicago|America/Chihuahua|America/Ciudad_Juarez|America/Coral_Harbour|America/Cordoba|America/Costa_Rica|America/Coyhaique|America/Creston|America/Cuiaba|America/Curacao|America/Danmarkshavn|America/Dawson|America/Dawson_Creek|America/Denver|America/Detroit|America/Dominica|America/Edmonton|America/Eirunepe|America/El_Salvador|America/Fort_Nelson|America/Fortaleza|America/Glace_Bay|America/Godthab|America/Goose_Bay|America/Grand_Turk|America/Grenada|America/Guadeloupe|America/Guatemala|America/Guayaquil|America/Guyana|America/Halifax|America/Havana|America/Hermosillo|America/Indiana/Knox|America/Indiana/Marengo|America/Indiana/Petersburg|America/Indiana/Tell_City|America/Indiana/Vevay|America/Indiana/Vincennes|America/Indiana/Winamac|America/Indianapolis|America/Inuvik|America/Iqaluit|America/Jamaica|America/Jujuy|America/Juneau|America/Kentucky/Monticello|America/Kralendijk|America/La_Paz|America/Lima|America/Los_Angeles|America/Louisville|America/Lower_Princes|America/Maceio|America/Managua|America/Manaus|America/Marigot|America/Martinique|America/Matamoros|America/Mazatlan|America/Mendoza|America/Menominee|America/Merida|America/Metlakatla|America/Mexico_City|America/Miquelon|America/Moncton|America/Monterrey|America/Montevideo|America/Montserrat|America/Nassau|America/New_York|America/Nome|America/Noronha|America/North_Dakota/Beulah|America/North_Dakota/Center|America/North_Dakota/New_Salem|America/Ojinaga|America/Panama|America/Paramaribo|America/Phoenix|America/Port-au-Prince|America/Port_of_Spain|America/Porto_Velho|America/Puerto_Rico|America/Punta_Arenas|America/Rankin_Inlet|America/Recife|America/Regina|America/Resolute|America/Rio_Branco|America/Santarem|America/Santiago|America/Santo_Domingo|America/Sao_Paulo|America/Scoresbysund|America/Sitka|America/St_Barthelemy|America/St_Johns|America/St_Kitts|America/St_Lucia|America/St_Thomas|America/St_Vincent|America/Swift_Current|America/Tegucigalpa|America/Thule|America/Tijuana|America/Toronto|America/Tortola|America/Vancouver|America/Whitehorse|America/Winnipeg|America/Yakutat|Antarctica/Casey|Antarctica/Davis|Antarctica/DumontDUrville|Antarctica/Macquarie|Antarctica/Mawson|Antarctica/McMurdo|Antarctica/Palmer|Antarctica/Rothera|Antarctica/Syowa|Antarctica/Troll|Antarctica/Vostok|Arctic/Longyearbyen|Asia/Aden|Asia/Almaty|Asia/Amman|Asia/Anadyr|Asia/Aqtau|Asia/Aqtobe|Asia/Ashgabat|Asia/Atyrau|Asia/Baghdad|Asia/Bahrain|Asia/Baku|Asia/Bangkok|Asia/Barnaul|Asia/Beirut|Asia/Bishkek|Asia/Brunei|Asia/Calcutta|Asia/Chita|Asia/Colombo|Asia/Damascus|Asia/Dhaka|Asia/Dili|Asia/Dubai|Asia/Dushanbe|Asia/Famagusta|Asia/Gaza|Asia/Hebron|Asia/Hong_Kong|Asia/Hovd|Asia/Irkutsk|Asia/Jakarta|Asia/Jayapura|Asia/Jerusalem|Asia/Kabul|Asia/Kamchatka|Asia/Karachi|Asia/Katmandu|Asia/Khandyga|Asia/Krasnoyarsk|Asia/Kuala_Lumpur|Asia/Kuching|Asia/Kuwait|Asia/Macau|Asia/Magadan|Asia/Makassar|Asia/Manila|Asia/Muscat|Asia/Nicosia|Asia/Novokuznetsk|Asia/Novosibirsk|Asia/Omsk|Asia/Oral|Asia/Phnom_Penh|Asia/Pontianak|Asia/Pyongyang|Asia/Qatar|Asia/Qostanay|Asia/Qyzylorda|Asia/Rangoon|Asia/Riyadh|Asia/Saigon|Asia/Sakhalin|Asia/Samarkand|Asia/Seoul|Asia/Shanghai|Asia/Singapore|Asia/Srednekolymsk|Asia/Taipei|Asia/Tashkent|Asia/Tbilisi|Asia/Tehran|Asia/Thimphu|Asia/Tokyo|Asia/Tomsk|Asia/Ulaanbaatar|Asia/Urumqi|Asia/Ust-Nera|Asia/Vientiane|Asia/Vladivostok|Asia/Yakutsk|Asia/Yekaterinburg|Asia/Yerevan|Atlantic/Azores|Atlantic/Bermuda|Atlantic/Canary|Atlantic/Cape_Verde|Atlantic/Faeroe|Atlantic/Madeira|Atlantic/Reykjavik|Atlantic/South_Georgia|Atlantic/St_Helena|Atlantic/Stanley|Australia/Adelaide|Australia/Brisbane|Australia/Broken_Hill|Australia/Darwin|Australia/Eucla|Australia/Hobart|Australia/Lindeman|Australia/Lord_Howe|Australia/Melbourne|Australia/Perth|Australia/Sydney|Europe/Amsterdam|Europe/Andorra|Europe/Astrakhan|Europe/Athens|Europe/Belgrade|Europe/Berlin|Europe/Bratislava|Europe/Brussels|Europe/Bucharest|Europe/Budapest|Europe/Busingen|Europe/Chisinau|Europe/Copenhagen|Europe/Dublin|Europe/Gibraltar|Europe/Guernsey|Europe/Helsinki|Europe/Isle_of_Man|Europe/Istanbul|Europe/Jersey|Europe/Kaliningrad|Europe/Kiev|Europe/Kirov|Europe/Lisbon|Europe/Ljubljana|Europe/London|Europe/Luxembourg|Europe/Madrid|Europe/Malta|Europe/Mariehamn|Europe/Minsk|Europe/Monaco|Europe/Moscow|Europe/Oslo|Europe/Paris|Europe/Podgorica|Europe/Prague|Europe/Riga|Europe/Rome|Europe/Samara|Europe/San_Marino|Europe/Sarajevo|Europe/Saratov|Europe/Simferopol|Europe/Skopje|Europe/Sofia|Europe/Stockholm|Europe/Tallinn|Europe/Tirane|Europe/Ulyanovsk|Europe/Vaduz|Europe/Vatican|Europe/Vilnius|Europe/Volgograd|Europe/Warsaw|Europe/Zagreb|Europe/Zurich|Indian/Antananarivo|Indian/Chagos|Indian/Christmas|Indian/Cocos|Indian/Comoro|Indian/Kerguelen|Indian/Mahe|Indian/Maldives|Indian/Mauritius|Indian/Mayotte|Indian/Reunion|Pacific/Apia|Pacific/Auckland|Pacific/Bougainville|Pacific/Chatham|Pacific/Easter|Pacific/Efate|Pacific/Enderbury|Pacific/Fakaofo|Pacific/Fiji|Pacific/Funafuti|Pacific/Galapagos|Pacific/Gambier|Pacific/Guadalcanal|Pacific/Guam|Pacific/Honolulu|Pacific/Kiritimati|Pacific/Kosrae|Pacific/Kwajalein|Pacific/Majuro|Pacific/Marquesas|Pacific/Midway|Pacific/Nauru|Pacific/Niue|Pacific/Norfolk|Pacific/Noumea|Pacific/Pago_Pago|Pacific/Palau|Pacific/Pitcairn|Pacific/Ponape|Pacific/Port_Moresby|Pacific/Rarotonga|Pacific/Saipan|Pacific/Tahiti|Pacific/Tarawa|Pacific/Tongatapu|Pacific/Truk|Pacific/Wake|Pacific/Wallis
Value
Europe/Vienna
User ID (PUID)Variable

User-ID JDownloader runs as. Default 99 (nobody on Unraid).

Target
PUID
Default
99
Value
99
Group ID (PGID)Variable

Group-ID. Default 100 (users on Unraid).

Target
PGID
Default
100
Value
100
UMASKVariable

Permission mask for newly created files. The default 000 lets every container user read and write them, which is what you want when other containers touch the same shares. Set 022 or 077 for stricter permissions.

Default
000|022|002|077
Value
000
UI Scale (JD_UI_SCALE)Variable

Optional HiDPI scaling for the whole JDownloader UI (e.g. 1.5 or 2). Leave empty for 1x. On a streamed Selkies desktop, zooming the browser upscales the video stream and blurs the text; setting JD_UI_SCALE instead renders the UI larger at full pixel density, so text stays crisp at the desktop's native resolution with the browser at 100%. Restart the container after changing it.

Target
JD_UI_SCALE