Docker JDownloader 2 headless image with automatic updates.
Docker JDownloader 2 headless image with automatic updates.
There is no embedded graphical interface, you should manage your downloads through the official JDownloader web interface here : https://my.jdownloader.org.
You can report issues in the github issues.
You can send feedback and discuss the project in the github discussions.
More recent OpenJDK version.
arch \ tags | latest ubuntu openjdk17 ubuntu-openjdk17 |
alpine alpine-openjdk17 |
---|---|---|
amd64 | OK | OK |
arm64 | OK | OK |
arm/v7 | OK | NA |
s390x | Need feedback | Need feedback |
Greater platforms compatibility.
arch \ tags | openjdk8 ubuntu-openjdk8 |
alpine-openjdk8 |
---|---|---|
amd64 | OK | OK |
arm64 | OK | OK |
arm/v7 | OK | Avoid Issue 4, Issue 11 |
arm/v6 | NA | Need feedback |
386 | NA | Need feedback |
ppc64le | Need feedback | Need feedback |
s390x | Need feedback | Need feedback |
docker run (official documentation)
docker run -d \ --name\ --restart \ --user : \ -v ":/jdownloader/downloads/" \ -v " :/jdownloader/cfg/" \ -v " :/jdownloader/logs/" \ -e "JD_EMAIL= " \ -e "JD_PASSWORD= " \ -e "JD_DEVICENAME= " \ -e "JAVA_OPTIONS= " \ -e "LOG_FILE= " \ -e "UMASK= " \ -p " :3129" \ antlafarge/jdownloader:
Note : Parameters indented twice are optional.
Name | Type | Description | Optional (default) |
---|---|---|---|
<CONTAINER-NAME> |
Name | Container name. | Recommended (random) |
<RESTART> |
Restart | Container restart policy. Use on-failure to have a correct behavior of Restart JD , Close and Shutdown buttons in the JDownloader settings.Use unless-stopped if the container doesn't restart on system reboot. |
Recommended (no ) |
<UID> |
User | Owner (User ID) of the files and directories created. You can use the id -u command in your shell to get your current user id. |
Recommended (0 ) |
<GID> |
User | Owner (Group ID) of the files and directories created. You can use the id -g command in your shell to get your current groud id. |
Recommended (0 ) |
<DOWNLOADS-PATH> |
Volume | Directory where your downloads will be stored on your host machine. If you use the user parameter, check the permissions of the directories you mount as volumes. |
REQUIRED |
<CONFIG-PATH> |
Volume | Directory where the JDownloader settings files will be stored on your host machine. If you use the user parameter, check the permissions of the directories you mount as volumes. |
Recommended (in container) |
<LOGS-PATH> |
Volume | Directory where the JDownloader log files will be stored on your host machine. If you use the user parameter, check the permissions of the directories you mount as volumes. |
Not recommended (in container) |
<JD_EMAIL> |
Env | Your myJDownloader email. | REQUIRED |
<JD_PASSWORD> |
Env | Your myJDownloader password. | REQUIRED |
<JD_DEVICENAME> |
Env | Device name in your myJDownloader web interface. | Optional (hostname) |
<LOG_FILE> |
Env | Write JDownloader logs from java command in a file.You should create activate the volume parameter <LOGS-PATH> to access this log file from the host machine.Useful if you have any issues with JDownloader. Example : "/jdownloader/logs/jd.docker.log" |
Optional (/dev/null ) |
<JAVA_OPTIONS> |
Env | Java options. Use -Xms128m -Xmx1g to change initial and max Java heap size memory. |
Optional (empty) |
<UMASK> |
Env | Change the umask. | Optional (no change) |
<PORT> |
Port | Network port used for Direct connection mode. | Optional (not exposed) |
<TAG> |
Tag | Docker hub tag. | Optional (latest ) |
docker run -d \ --name jdownloader \ --restart on-failure:10 \ --user 1000:100 \ -v "/hdd/JDownloader/downloads/:/jdownloader/downloads/" \ -v "/hdd/JDownloader/cfg/:/jdownloader/cfg/" \ -e "JD_EMAIL=[email protected]" \ -e "JD_PASSWORD=MyGreatPassword" \ -e "JD_DEVICENAME=JD-DOCKER" \ -p 3129:3129 \ antlafarge/jdownloader:latest
Note : Parameters indented twice are optional.
Docker Compose (official documentation)
services: jdownloader: image: antlafarge/jdownloader:container_name: # optional restart: # optional user: : # optional volumes: - ":/jdownloader/downloads/" - " :/jdownloader/cfg/" # optional - " :/jdownloader/logs/" # optional environment: - "JD_EMAIL= " - "JD_PASSWORD= " - "JD_DEVICENAME= " # optional - "JAVA_OPTIONS= " # optional - "LOG_FILE= " # optional - "UMASK= " # optional ports: - " :3129" # optional
services: jdownloader: image: antlafarge/jdownloader:latest container_name: jdownloader # optional restart: on-failure:10 # optional user: 1000:100 # optional volumes: - "/hdd/JDownloader/downloads/:/jdownloader/downloads/" - "/hdd/JDownloader/cfg/:/jdownloader/cfg/" # optional environment: - "JD_EMAIL=[email protected]" - "JD_PASSWORD=MyGreatPassword" - "JD_DEVICENAME=JD-DOCKER" # optional ports: - "3129:3129" # optional
user
parameter
mkdir /path/to/downloads/
sudo chown -R 1000:100 /path/to/downloads/
id -u
id -g
100
as GID (users
group), because every users should be in this group, and it will be easier to manage multi-users privileges.sudo chmod -R 770 /path/to/downloads/
docker logs --follow --tail 100 jdownloader
(CTRL + C
to quit)JDownloader will update itself automatically when it is idle (every 12 hours), so you have nothing to do.
To disable the automatic upates, go to your JD instance on my.jdownloader.org, and go to Settings
/ Event Scripter
and switch from Enabled
to Disabled
.
docker stop jdownloader
docker rm jdownloader
docker pull antlafarge/jdownloader:latest
docker rmi $(docker images --filter "dangling=true" -q --no-trunc)
docker start jdownloader
docker compose stop jdownloader
docker compose rm -f jdownloader
docker compose pull jdownloader
docker rmi $(docker images --filter "dangling=true" -q --no-trunc)
docker compose up -d
docker exec jdownloader /jdownloader/setup.sh "[email protected]" "MyNewPassword" "JD-DOCKER"
.docker restart jdownloader
.docker compose restart jdownloader
.If you have special characters in your password, you have 2 solutions :
Modify your docker run command or docker-compose.yml file :
!
) in your password and you use a bash shell, this special character corresponds to commands history substitution. You might need to disable it by using the command set +H
in your bash shell."
), escape it with backslashes (\
) in the docker run command or docker-compose.yml file. "JD_PASSWORD=My\"Great`Password"
`
) with backslashes (\
). "JD_PASSWORD=My\"Great\`Password"
Or put your password manually in the settings file :
<JD_PASSWORD>
(for disabling password replacement on container start). "JD_PASSWORD="
<CONFIG-PATH>
volume to access the JDownloader settings files.org.jdownloader.api.myjdownloader.MyJDownloaderSettings.json
."password":"MyGreatPassword",
"
), escape it with backslashes (\
). "password":"My\"Great`Password",
docker restart jdownloader
Check your user can read and write the directories you mounted as volumes.
Read carefully the Setup guide and follow the steps.
Or run the container as root (remove user
option).
If you run the image on an armhf host (arm/v7
), you may encounter many command errors (wait
, sleep
, curl
, date
)
This may be resolved by upgrading the libseccomp2
library (docker dependency).
First you should try to upgrade your system by using the usual method.
If this upgrade didn't resolve the problem, add the backports repo for debian buster and update :
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 04EE7237B7D453EC 648ACFD622F3D138
echo "deb http://deb.debian.org/debian buster-backports main" | sudo tee -a /etc/apt/sources.list.d/buster-backports.list
sudo apt update
sudo apt install -t buster-backports libseccomp2
If nothing worked and many internal commands fail, your container may lack some privileges and you can try the --privileged flag.
You can report issues in the github issues.
You can send feedback and discuss the project in the github discussions.
docker stop jdownloader
docker restart jdownloader
docker logs --follow --tail 100 jdownloader
Note: To access the JDownloader log files, you have to set the <LOGS-PATH>
volume.
docker rm -f jdownloader
docker rmi antlafarge/jdownloader:openjdk17
cd /path/to/docker-compose.yml/directory/ docker compose up -d
cd /path/to/docker-compose.yml/directory/ docker compose down