{"id":16133091,"url":"https://github.com/jaymoulin/docker-jdownloader","last_synced_at":"2025-04-09T16:16:53.425Z","repository":{"id":38848554,"uuid":"77919632","full_name":"jaymoulin/docker-jdownloader","owner":"jaymoulin","description":"JDownloader 2 Docker Image (Multiarch) - 50M+ Downloads","archived":false,"fork":false,"pushed_at":"2025-03-14T16:34:46.000Z","size":11906,"stargazers_count":191,"open_issues_count":1,"forks_count":38,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-09T16:16:37.520Z","etag":null,"topics":["arm","armv7","docker","docker-image","download","download-manager","downloader","downloadmanager","jdownloader","multiarch","raspberry","raspberry-pi","raspberrypi"],"latest_commit_sha":null,"homepage":"https://brands.jaymoulin.me/me/docker-jdownloader","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jaymoulin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":null,"patreon":null,"open_collective":null,"ko_fi":"jaymoulin","tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":["https://www.paypal.me/jaymoulin","https://www.buymeacoffee.com/jaymoulin","https://www.tipeeestream.com/cursedware/donation","https://streamlabs.com/cursedware/tip"]}},"created_at":"2017-01-03T13:30:14.000Z","updated_at":"2025-03-29T19:58:42.000Z","dependencies_parsed_at":"2024-05-03T01:45:00.194Z","dependency_job_id":"1026dfb7-daea-4433-af2d-11b34e53df26","html_url":"https://github.com/jaymoulin/docker-jdownloader","commit_stats":null,"previous_names":[],"tags_count":39,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jaymoulin%2Fdocker-jdownloader","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jaymoulin%2Fdocker-jdownloader/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jaymoulin%2Fdocker-jdownloader/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jaymoulin%2Fdocker-jdownloader/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jaymoulin","download_url":"https://codeload.github.com/jaymoulin/docker-jdownloader/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248065285,"owners_count":21041872,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arm","armv7","docker","docker-image","download","download-manager","downloader","downloadmanager","jdownloader","multiarch","raspberry","raspberry-pi","raspberrypi"],"created_at":"2024-10-09T22:36:56.405Z","updated_at":"2025-04-09T16:16:53.394Z","avatar_url":"https://github.com/jaymoulin.png","language":"Shell","funding_links":["https://ko-fi.com/jaymoulin","https://www.paypal.me/jaymoulin","https://www.buymeacoffee.com/jaymoulin","https://www.tipeeestream.com/cursedware/donation","https://streamlabs.com/cursedware/tip","https://www.ko-fi.com/jaymoulin"],"categories":[],"sub_categories":[],"readme":"\u003e [!CAUTION]\n\u003e As-of 2021, this product does not have a free support team anymore. If you want this product to be maintained, please support my work.\n \n\u003e [!NOTE]\n\u003e (This product is available under a free and permissive license, but needs financial support to sustain its continued improvements. In addition to maintenance and stability there are many  desirable features yet to be added.)\n\n![logo](logo.png \"logo\")\n\nJDownloader 2 - Docker Image\n==========================\n\n[![latest release](https://img.shields.io/github/release/jaymoulin/docker-jdownloader.svg \"latest release\")](http://github.com/jaymoulin/docker-jdownloader/releases)\n[![Docker Pulls](https://img.shields.io/docker/pulls/jaymoulin/jdownloader.svg)](https://hub.docker.com/r/jaymoulin/jdownloader/)\n[![Docker stars](https://img.shields.io/docker/stars/jaymoulin/jdownloader.svg)](https://hub.docker.com/r/jaymoulin/jdownloader/)\n[![PayPal donation](https://github.com/jaymoulin/jaymoulin.github.io/raw/master/ppl.png \"PayPal donation\")](https://www.paypal.me/jaymoulin)\n[![Buy me a coffee](https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png \"Buy me a coffee\")](https://www.buymeacoffee.com/jaymoulin)\n[![Buy me a coffee](https://ko-fi.com/img/githubbutton_sm.svg \"Buy me a coffee\")](https://www.ko-fi.com/jaymoulin)\n\n# Headline\n\nThis image allows you to have JDownloader 2 easily installed and controlled via [MyJDownloader](https://my.jdownloader.org/), thanks to Docker. \nNo cluncky and rusty VNC sessions here! No graphical interface - No problem!\n\nInstallation\n---\n\nHere are some examples to get started with the creation of this container. Please note that this package is also hosted on Github Container Registry, just add `ghcr.io/` before the image name (`docker pull ghcr.io/jaymoulin/jdownloader` instead of `jaymoulin/jdownloader`)\n\n### Docker\n```\ndocker run -d --init --restart=always -v \u003c/path/to/downloads\u003e:/opt/JDownloader/Downloads -v \u003c/path/to/appdata/config\u003e:/opt/JDownloader/app/cfg --name jdownloader -u $(id -u) -p 3129:3129 -e MYJD_USER=email@email.com -e MYJD_PASSWORD=bar -e MYJD_DEVICE_NAME=goofy jaymoulin/jdownloader\n```\n### Docker Compose\n```yml\nservices:\n   jdownloader:\n    image: jaymoulin/jdownloader\n    container_name: jdownloader\n    restart: always\n    user: 1001:100\n    volumes:\n        - \u003c/path/to/appdata/config\u003e:/opt/JDownloader/app/cfg\n        - \u003c/path/to/downloads\u003e:/opt/JDownloader/Downloads\n        - \u003c/path/to/appdata/logs\u003e:/opt/JDownloader/app/logs #optional\n        - \u003c/path/to/appdata/extensions\u003e:/opt/JDownloader/app/extensions #optional\n        - /etc/localtime:/etc/localtime:ro #optional\n    environment: \n            FILE_MYJD_USER: myjd-user #optional (see [Identify](https://github.com/jaymoulin/docker-jdownloader#identify))\n            FILE_MYJD_PASSWORD: myjd-password #optional (see [Identify](https://github.com/jaymoulin/docker-jdownloader#identify))\n            MYJD_USER: email@email.com #optional (see [Identify](https://github.com/jaymoulin/docker-jdownloader#identify))\n            MYJD_PASSWORD: bar #optional (see [Identify](https://github.com/jaymoulin/docker-jdownloader#identify))\n            MYJD_DEVICE_NAME: goofy #optional\n            XDG_DOWNLOAD_DIR: /opt/JDownloader/Downloads #optional\n            VMARGS: -Xmx2g #optional\n            PUID: 1000 #optional user id - not recommanded\n            GID: 1000 #optional group id - not recommanded\n    ports:\n        - 3129:3129 \n    secrets:\n        - myjd-user #optional (see [Identify](https://github.com/jaymoulin/docker-jdownloader#identify))\n        - myjd-password #optional (see [Identify](https://github.com/jaymoulin/docker-jdownloader#identify))\n\nsecrets:\n  myjd-user: #optional (see [Identify](https://github.com/jaymoulin/docker-jdownloader#identify))\n    file: ~/jdownloader/secrets/myjd_user.txt\n  myjd-password: #optional (see [Identify](https://github.com/jaymoulin/docker-jdownloader#identify))\n    file: ~/jdownloader/secrets/myjd_password.txt\n```\n\n### Kubernetes\n\n```yml\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: jdownloader\n  labels:\n    app: jdownloader\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app: jdownloader\n  template:\n    metadata:\n      labels:\n        app: jdownloader\n    spec:\n      containers:\n        - name: jdownloader\n          image: jaymoulin/jdownloader\n          env:\n            - name: MYJD_USER\n              value: \"email@email.com\"\n            - name: MYJD_PASSWORD\n              valueFrom:\n                secretKeyRef:\n                  name: my_jd_secret\n                  key: password\n          volumeMounts:\n            - mountPath: /opt/JDownloader/app\n              name: exec\n            - mountPath: /opt/JDownloader/app/cfg\n              name: cfg\n            - mountPath: /opt/JDownloader/Downloads\n              name: downloads\n            - mountPath: /opt/JDownloader/app/extensions\n              name: extensions\n      volumes:\n        - name: exec\n          emptyDir: {}\n        - name: cfg\n          hostPath:\n            path: /path/to/jd/cfg\n            type: Directory\n        - name: downloads\n          hostPath:\n            path: /path/to/downloads\n            type: Directory\n        - name: extensions\n          hostPath:\n            path: /path/to/extensions\n            type: Directory\n```\n\n\u003e [!CAUTION]\n\u003e *Note for RPI Zero*\n\u003e You may need to specify that you want the arm32v6 image (e.g. `docker run -d --platform=linux/arm/v6 jaymoulin/jdownloader`) because rpi zero identifies itself as armhf which is incorrect (https://github.com/moby/moby/issues/41017) (https://github.com/moby/moby/issues/34875).\n\nConfiguration\n---\nYou can set many parameters when you configure this container, but you must specify your MyJDownloader login/password to connect to your container.\n\n### Configuration values \n| Parameter | Function |\n| :----: | --- |\n| `-v /opt/JDownloader/app/cfg`| Config file folder, saves your configuration on the host |\n| `-v /opt/JDownloader/app/logs` | Container logs folder, specify it only if you wan to keep logs on the host |\n| `-v /opt/JDownloader/app/extensions` | Extensions folder, specify it only if you wan to install extensions and keep it on the host |\n| `-v /opt/JDownloader/Downloads` | Downloads folder (where you put your `download` mountpoint) | \n| `-u \u003cUID\u003e:\u003cGID\u003e` | Add user identifiers to run the container with user privileges. To obtain such values, run on your host `id yourusername`, additional information can be found in [Docker documentation](https://docs.docker.com/engine/reference/commandline/exec/#options) |\n| `-p 3129:3129` | This Network port is required for Direct Connection mode, more information in [this section](https://github.com/jaymoulin/docker-jdownloader#direct-connection) |\n\n### Environment Variables\n| Parameter | Function |\n| :----: | --- |\n| `FILE_MYJD_USER=myjd-user` | The docker secret of your MyJDownloader user |\n| `FILE_MYJD_PASSWORD=myjd-password` | The docker secret of your MyJDownloader password |\n| `MYJD_USER=email@email.com` | Your MyJDownloader user |\n| `MYJD_PASSWORD=foo` | Your MyJDownloader password |\n| `MYJD_DEVICE_NAME=goofy`| The device name that will appear on MyJdownloader portal |\n| `XDG_DOWNLOAD_DIR=/opt/JDownloader/Downloads` | If you use this variable, set it as per the downloads folder volume! |\n| `VMARGS=\"-Xmx2g -Xms2g\"` | Additional arguments to pass to the Java VM (e.g. heap memory limit) (default: undefined) (cf. [Java CLI options documentation](https://docs.oracle.com/en/java/javase/11/troubleshoot/command-line-options1.html) or `docker run --rm -ti jaymoulin/jdownloader java -X`) |\n| `UMASK=\"0002\"` | Defines specific rights for your downloaded files (default: undefined) - Must respect octal form (begins with 0 followed by three numbers between 0 and 7 included) (cf. https://en.wikipedia.org/wiki/Umask) |\n| `PUID=1000` | Your user id (for your user privileges) - workaround for closed systems, prefer `-u` flag method instead [Docker documentation](https://docs.docker.com/engine/reference/commandline/exec/#options) - Ignored if user flag is used |\n| `GID=1000` | Your group id (for your user privileges) - workaround for closed systems, prefer `-u` flag method instead [Docker documentation](https://docs.docker.com/engine/reference/commandline/exec/#options) - Ignored if user flag is used |\n\n#### Identify\nThere are 3 possibilities to give login password for MyJDownloader:\n- Declare FILE_MYJD_USER and FILE_MY_JD_PASSWORD which is used with the principle of docker secret : https://docs.docker.com/engine/swarm/secrets/#use-secrets-in-compose. This is the most docker way.\n- Declare MYJD_USER and MYJD_PASSWORD values which only create environment variable\n- If haven't set FILE_MYJD_USER, FILE_MY_JD_PASSWORD, MYJD_USER and MYJD_PASSWORD values, you can still configure an account by running (Recommended method because it is the most secure but not fully automatic in the docker-compose.)\n\n```\ndocker exec jdownloader configure email@email.com password\n```\n\nOther options can be changed on your MyJDownloader account : https://my.jdownloader.org/index.html#dashboard.\n\nAppendixes\n---\n\n### Direct Connection Mode\n\nDirect Connection mode (or Direct Connections) improves the use of this container via MyJDownloader GUI and is strongly recommended at least in your LAN.\n\nBy enabling this mode, the communication happens directly between the client and the JDownloader server via port 3129 (by default), instead of being routed trough MyJDownloader servers. This enables the GUI to respond much faster with information reliably updating over time.\nIn this mode, MyJDownloader server still handles service related tasks, like the session authentication and notifications.\n\nTo enable Direct Connection mode from internet, you need to open and forward port 3129 adjusting your router configuration. Please find more information in this [JDownloader's article](https://support.jdownloader.org/Knowledgebase/Article/View/33/0/myjdownloader-advanced-settings)\n\n#### DNS Rebind Warning\nIf you are running a router like Fritz!Box, Asus, OpenWRT, DDWRT, pfSense or any other 3rd party *advanced* routers you may have DNS Rebind Protection enabled: Direct Connections will not work, you will have to explicitly whitelist `mydns.jdownloader.org`. The procedure is different for every router, here are some tips:\n\n* Asus Merlin: Follow [this procedure](https://github.com/RMerl/asuswrt-merlin.ng/wiki/Custom-domains-with-dnsmasq) to enable custom scripts and edit the dnsmasq file, then add the line `rebind-domain-ok=/mydns.jdownloader.org/`\n* FreshTomato: In 'Advanced-\u003eDHCP/DNS/Dnsmasq Custom configuration' add `rebind-domain-ok=mydns.jdownloader.org`\n* Fritz!Box: [KB Article](https://support.jdownloader.org/Knowledgebase/Article/View/51) from JDownloader\n* OpenWRT: browse to Network\u003eDHCP and DNS\u003eGeneral Settings and add `mydns.jdownloader.org` to Domain Whitelist\n* pfSense: more information [here](https://github.com/jaymoulin/docker-jdownloader/issues/61#issuecomment-607474205)\n\n### Direct Connection using a Bridged Network\n\nTo get Direct Connection when using a bridged newtwork, please follow these steps:\n\n* Expose 3129 port when creating the container (`-p 3129:3129` parameter)\n* When JDownloader is running, navigate to Settings \u003e Advanced Settings \u003e Search for \"myjdownloader\" \u003e Find *MyJDownloaderSettings: Custom Device IPs* and enter your host LAN IP using this formatting `[\"192.168.1.10\"]`. If you need to specify more IPs use `[\"192.168.1.10\",\"10.10.10.10\"]`\n* Set *MyJDownloaderSettings: Manual Local Port* to `3129`\n* Set *MyJDownloaderSettings: Direct Connect Mode* to `Allow lan/wan connections with manual port forwarding`\n* Restart JDownloader, connections will now be direct\n\n### Debugging\n\nYou can put a file called `jdownloader-block.txt` file in your Download folder to pause the container start.\nThis will allow to connect to the container with a shell to debug. (`docker exec -it jdownloader sh`) \n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjaymoulin%2Fdocker-jdownloader","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjaymoulin%2Fdocker-jdownloader","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjaymoulin%2Fdocker-jdownloader/lists"}