jdownloader
JDownloader 2 headless image (multi-arch) with automatic update.
500K+
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.
Dockerhub repository : https://hub.docker.com/r/antlafarge/jdownloader.
Github repository : https://github.com/antlafarge/jdownloader.
You can report issues in the github issues.
You can send feedback and discuss the project in the github discussions.
latest = debian + ubuntu + alpinedebian = debian-openjdk21 + debian-openjdk17ubuntu = ubuntu-openjdk21 + ubuntu-openjdk17 + ubuntu-openjdk8alpine = alpine-openjdk21 + alpine-openjd17 + alpine-openjdk8openjdk21 = debian-openjdk21 + ubuntu-openjdk21 + alpine-openjdk21openjdk17 = debian-openjdk17 + ubuntu-openjdk17 + alpine-openjdk17openjdk8 = ubuntu-openjdk8 + alpine-openjdk8| arch \ tags | debian-openjdk21 | ubuntu-openjdk21 | alpine-openjdk21 | debian-openjdk17 | ubuntu-openjdk17 | alpine-openjdk17 | ubuntu-openjdk8 | alpine-openjdk8 |
|---|---|---|---|---|---|---|---|---|
| ~270 MB | ~260 MB | ~120 MB | ~265 MB | ~280 MB | ~115 MB | ~250 MB | ~115 MB | |
| linux/386 | ✓ | · | · | ✓ | · | · | · | ✓ |
| linux/amd64 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| linux/arm/v5 | ✓ | · | · | ✓ | · | · | · | · |
| linux/arm/v6 | · | · | · | · | · | · | · | ✓ |
| linux/arm/v7 | ✓ | ✓ | · | ✓ | ✓ | · | ✓ | ✓ |
| linux/arm64/v8 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| linux/mips64le | · | · | · | ✓ | · | · | · | · |
| linux/ppc64le | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| linux/riscv64 | ✓ | ✓ | ✓ | · | ✓ | · | · | |
| linux/s390x | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
services:
jdownloader:
image: antlafarge/jdownloader:<TAG>
container_name: <CONTAINER-NAME> # Optional
restart: <RESTART> # Optional
user: <UID>:<GID> # Optional
volumes:
- "<DOWNLOADS-PATH>:/jdownloader/downloads/"
- "<CONFIG-PATH>:/jdownloader/cfg/" # Optional
- "<LOGS-PATH>:/jdownloader/logs/" # Optional
environment:
JD_EMAIL: "<JD-EMAIL>" # Optional (better to use secrets)
JD_PASSWORD: "<JD-PASSWORD>" # Optional (better to use secrets)
JD_DEVICENAME: "<JD-DEVICENAME>" # Optional
UMASK: "<UMASK>" # Optional
JAVA_OPTIONS: "<JAVA-OPTIONS>" # Optional
LOG_FILE: "<LOG-FILE>" # Optional
secrets:
- JD_EMAIL
- JD_PASSWORD
- JD_DEVICENAME # Optional
ports:
- <PORT>:3129 # Optional
secrets:
JD_EMAIL:
file: "<JD-EMAIL-FILE>" # Put your myJD email in this file
JD_PASSWORD:
file: "<JD-PASSWORD-FILE>" # Put your myJD password in this file
JD_DEVICENAME: # Optional
file: "<JD-DEVICENAME-FILE>" # Put your myJD device name in this file
services:
jdownloader:
image: antlafarge/jdownloader:latest
container_name: jdownloader
restart: on-failure:3
user: 1000:100
volumes:
- "/hdd/JDownloader/downloads/:/jdownloader/downloads/"
- "/hdd/JDownloader/cfg/:/jdownloader/cfg/"
secrets:
- JD_EMAIL
- JD_PASSWORD
- JD_DEVICENAME
ports:
- 3129:3129
secrets:
JD_EMAIL:
file: "/hdd/JDownloader/secrets/JD_EMAIL.txt"
JD_PASSWORD:
file: "/hdd/JDownloader/secrets/JD_PASSWORD.txt"
JD_DEVICENAME:
file: "/hdd/JDownloader/secrets/JD_DEVICENAME.txt"
| Name | Type | Description | Optional | Default |
|---|---|---|---|---|
<TAG> | Tag | Docker hub tag. | Optional | latest |
<CONTAINER-NAME> | Name | Container name. | Recommended | Random |
<RESTART> | Restart | Container restart policy. Use on-failure to have a correct behavior of Restart, Close and Shutdown buttons in the JDownloader settings. | Recommended | no |
<UID> | User | Owner user ID of the files and directories created. Use the command id -u in your shell to get your current user id. | Recommended | 0 (root) |
<GID> | User | Owner group ID of the files and directories created. Use the command id -g in your shell to get your current groud id. | Recommended | 0 (root) |
<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-FILE> | Secret | The path to the docker secret file where your myJDownloader e-mail is saved. | REQUIRED | |
<JD-PASSWORD-FILE> | Secret | The path to the docker secret file where your myJDownloader password is saved. | REQUIRED | |
<JD-DEVICENAME-FILE> | Secret | The path to the docker secret file where your myJDownloader device name is saved. | Optional | (hostname) |
<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 |
<JD-DEVICENAME> | Env | Device name in your myJDownloader web interface. | Optional | Hostname |
<JD-EMAIL> | Env | Your myJDownloader e-mail. I recommend to use the docker secrets (cf. <JD-EMAIL-FILE>). | Not recommended | |
<JD-PASSWORD> | Env | Your myJDownloader password. I recommend to use the docker secrets (cf. <JD-PASSWORD-FILE>). | Not recommended | |
<LOG-FILE> | Env | Write JDownloader logs from java command in a file.You should use the volume parameter <LOGS-PATH> to access these log files from the host machine.Useful if you want to investigate any issues with JDownloader. Example : "/jdownloader/logs/jd.docker.log". | Not recommended | /dev/null |
<PORT> | Port | Network port used for Direct connection mode. | Optional | Not exposed |
docker run -d \
--name <CONTAINER-NAME> \
--restart <RESTART> \
--user <UID>:<GID> \
-v "<DOWNLOADS-PATH>:/jdownloader/downloads/" \
-v "<CONFIG-PATH>:/jdownloader/cfg/" \
-v "<LOGS-PATH>:/jdownloader/logs/" \
-v "<JD-EMAIL-FILE>:/run/secrets/JD_EMAIL" \
-v "<JD-PASSWORD-FILE>:/run/secrets/JD_PASSWORD" \
-e JD_EMAIL="<JD-EMAIL>" \
-e JD_PASSWORD="<JD-PASSWORD>" \
-e JD_DEVICENAME="<JD-DEVICENAME>" \
-e JAVA_OPTIONS="<JAVA-OPTIONS>" \
-e LOG_FILE="<LOG-FILE>" \
-e UMASK="<UMASK>" \
-p <PORT>:3129 \
antlafarge/jdownloader:<TAG>
Note : Parameters indented twice are optional.
Volumes are used to simulate secrets without the need to create docker swarm secrets.
Example :
echo "[email protected]" > ./JD_EMAIL.txt
echo "MyPassword" > ./JD_PASSWORD.txt
docker run -d \
--name jdownloader \
--restart on-failure:3 \
--user 1000:100 \
-v "/hdd/JDownloader/downloads/:/jdownloader/downloads/" \
-v "/hdd/JDownloader/cfg/:/jdownloader/cfg/" \
-v "./JD_EMAIL.txt:/run/secrets/JD_EMAIL" \
-v "./JD_PASSWORD.txt:/run/secrets/JD_PASSWORD" \
-e JD_DEVICENAME="JD-DOCKER" \
-p 3129:3129 \
antlafarge/jdownloader:latest
user parameter and check the access permissions of the directories you mount as volumes
mkdir /path/to/jdownloader/downloads/sudo chown -R 1000:100 /path/to/jdownloader/downloads/
id -uid -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/jdownloader/downloads/sudo chmod -R 770 /path/to/jdownloader/cfg/sudo chmod -R 770 /path/to/jdownloader/secrets/
echo '[email protected]' > /path/to/jdownloader/secrets/JD_EMAIL.txtecho 'MyGreatPassword' > /path/to/jdownloader/secrets/JD_PASSWORD.txtecho 'JD-DOCKER' > /path/to/jdownloader/secrets/JD_DEVICENAME.txtdocker 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.
The dockerhub image is rebuilt monthly to get last OS and packages security updates.
docker compose pull jdownloaderdocker compose up -d --force-recreate jdownloaderdocker image prune -fdocker pull antlafarge/jdownloader:latestdocker rm -f jdownloaderdocker run ...docker image prune -f") with backslashes (\)
JD_PASSWORD="My\"Great`Password"!) in your password and you use a bash shell, this special character corresponds to commands history substitution. You might need to disable it :
set +H in your bash shell.") or backticks (`) with backslashes (\)
JD_PASSWORD="My\"Great\`Password"<JD_PASSWORD> (for disabling password replacement on container start) :
JD_PASSWORD=""<CONFIG-PATH> volume to have an access to the JDownloader settings files.org.jdownloader.api.myjdownloader.MyJDownloaderSettings.json."password":"MyGreatPassword",
") with backslashes (\).
"password":"My\"Great`Password",docker restart jdownloaderCheck the user you use to run the container (with user parameter) can read and write the directories you created and you mounted as volumes.
Read carefully the Setup guide and follow the steps.
Or run the container as root (remove user parameter).
If 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.
Content type
Image
Digest
sha256:172e40d79…
Size
116.8 MB
Last updated
11 months ago
docker pull antlafarge/jdownloader:dev-alpine-openjdk21