JDownloader
Docker app from junkerderprovinz's Repository
Overview
Readme
View on GitHub
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.
- Download
- Support
- What it looks like
- What it does
- How it compares
- Getting started
- How AI is used here
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.
The downloads in these pictures are Blender's open movies and two Linux images, loaded in a test container.
The download list in JD Highlighter Dark, with the speed graph at full height
The LinkGrabber checks each link and sorts it into a package before you start
The settings use the same palette and accent as everything else
Accent colour and look are picked in JDownloader's own settings
- 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, andJD_THEME=JDDEFAULTstill 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.
| 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 |
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 READYin 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.
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
Total Downloads Over Time
Related apps
Explore more like this
Explore allLinks
Details
junkerderprovinz/jdownloader:latestRuntime arguments
- Web UI
https://[IP]:[PORT:3001]/- Network
bridge- Shell
bash- Privileged
- false
- Extra Params
--restart=unless-stopped --shm-size=1gb
Template configuration
Plain HTTP WebUI. Browsers block seamless clipboard over HTTP, so prefer HTTPS (3001).
- Target
- 3000
- Default
- 3000
- Value
- 3000
HTTPS WebUI (self-signed TLS). The WebUI button opens this port, and seamless clipboard needs it.
- Target
- 3001
- Default
- 3001
- Value
- 3001
Persistent JDownloader install, configs, and session data.
- Target
- /config
- Default
- /mnt/user/appdata/jdownloader
- Value
- /mnt/user/appdata/jdownloader
Download target directory.
- Target
- /downloads
- Default
- /mnt/user/downloads
- Value
- /mnt/user/downloads
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
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
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
Optional. Username for HTTP-basic-auth. Leave it empty together with the password for no login.
- Target
- CUSTOM_USER
Optional. Password for HTTP-basic-auth.
- Target
- PASSWORD
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 JDownloader runs as. Default 99 (nobody on Unraid).
- Target
- PUID
- Default
- 99
- Value
- 99
Group-ID. Default 100 (users on Unraid).
- Target
- PGID
- Default
- 100
- Value
- 100
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
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
