{"id":15069482,"url":"https://github.com/antlafarge/jdownloader","last_synced_at":"2025-04-09T16:17:41.419Z","repository":{"id":37756949,"uuid":"247215430","full_name":"antlafarge/jdownloader","owner":"antlafarge","description":"Docker JDownloader 2 headless image with automatic updates.","archived":false,"fork":false,"pushed_at":"2025-04-01T09:30:43.000Z","size":219,"stargazers_count":74,"open_issues_count":0,"forks_count":9,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-09T16:17:37.324Z","etag":null,"topics":["alpine","bash","docker","docker-container","java","jdownloader","jre","myjdownloader","openjdk","shell","ubuntu"],"latest_commit_sha":null,"homepage":"https://hub.docker.com/r/antlafarge/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/antlafarge.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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}},"created_at":"2020-03-14T05:06:37.000Z","updated_at":"2025-04-01T09:30:47.000Z","dependencies_parsed_at":"2023-02-10T12:45:14.179Z","dependency_job_id":"d7982bc7-ff9d-40d8-ad72-10937054bd96","html_url":"https://github.com/antlafarge/jdownloader","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antlafarge%2Fjdownloader","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antlafarge%2Fjdownloader/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antlafarge%2Fjdownloader/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antlafarge%2Fjdownloader/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/antlafarge","download_url":"https://codeload.github.com/antlafarge/jdownloader/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248065283,"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":["alpine","bash","docker","docker-container","java","jdownloader","jre","myjdownloader","openjdk","shell","ubuntu"],"created_at":"2024-09-25T01:42:44.350Z","updated_at":"2025-04-09T16:17:41.398Z","avatar_url":"https://github.com/antlafarge.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# JDownloader 2\n\nDocker JDownloader 2 headless image with automatic updates.\n\nThere is no embedded graphical interface, you should manage your downloads through the official JDownloader web interface here : [https://my.jdownloader.org](https://my.jdownloader.org).\n\nDockerhub repository : [https://hub.docker.com/r/antlafarge/jdownloader](https://hub.docker.com/r/antlafarge/jdownloader).  \nGithub repository : [https://github.com/antlafarge/jdownloader](https://github.com/antlafarge/jdownloader).  \nYou can report issues in the [github issues](https://github.com/antlafarge/jdownloader/issues).  \nYou can send feedback and discuss the project in the [github discussions](https://github.com/antlafarge/jdownloader/discussions).\n\n# Tags and architectures\n\n- [`latest`](https://hub.docker.com/repository/docker/antlafarge/jdownloader/tags?page=1\u0026ordering=last_updated\u0026name=latest) = [`debian`](https://hub.docker.com/repository/docker/antlafarge/jdownloader/tags?page=1\u0026ordering=last_updated\u0026name=debian) + [`ubuntu`](https://hub.docker.com/repository/docker/antlafarge/jdownloader/tags?page=1\u0026ordering=last_updated\u0026name=ubuntu) + [`alpine`](https://hub.docker.com/repository/docker/antlafarge/jdownloader/tags?page=1\u0026ordering=last_updated\u0026name=alpine)\n- [`debian`](https://hub.docker.com/repository/docker/antlafarge/jdownloader/tags?page=1\u0026ordering=last_updated\u0026name=debian) = [`debian-openjdk21`](https://hub.docker.com/repository/docker/antlafarge/jdownloader/tags?page=1\u0026ordering=last_updated\u0026name=debian-openjdk21) + [`debian-openjdk17`](https://hub.docker.com/repository/docker/antlafarge/jdownloader/tags?page=1\u0026ordering=last_updated\u0026name=debian-openjdk17)\n- [`ubuntu`](https://hub.docker.com/repository/docker/antlafarge/jdownloader/tags?page=1\u0026ordering=last_updated\u0026name=ubuntu) = [`ubuntu-openjdk21`](https://hub.docker.com/repository/docker/antlafarge/jdownloader/tags?page=1\u0026ordering=last_updated\u0026name=ubuntu-openjdk21) + [`ubuntu-openjdk17`](https://hub.docker.com/repository/docker/antlafarge/jdownloader/tags?page=1\u0026ordering=last_updated\u0026name=ubuntu-openjdk17) + [`ubuntu-openjdk8`](https://hub.docker.com/repository/docker/antlafarge/jdownloader/tags?page=1\u0026ordering=last_updated\u0026name=ubuntu-openjdk8)\n- [`alpine`](https://hub.docker.com/repository/docker/antlafarge/jdownloader/tags?page=1\u0026ordering=last_updated\u0026name=alpine) = [`alpine-openjdk21`](https://hub.docker.com/repository/docker/antlafarge/jdownloader/tags?page=1\u0026ordering=last_updated\u0026name=alpine-openjdk21) + [`alpine-openjd17`](https://hub.docker.com/repository/docker/antlafarge/jdownloader/tags?page=1\u0026ordering=last_updated\u0026name=alpine-openjdk17) + [`alpine-openjdk8`](https://hub.docker.com/repository/docker/antlafarge/jdownloader/tags?page=1\u0026ordering=last_updated\u0026name=alpine-openjdk8)\n- [`openjdk21`](https://hub.docker.com/repository/docker/antlafarge/jdownloader/tags?page=1\u0026ordering=last_updated\u0026name=openjdk21) = [`debian-openjdk21`](https://hub.docker.com/repository/docker/antlafarge/jdownloader/tags?page=1\u0026ordering=last_updated\u0026name=debian-openjdk21) + [`ubuntu-openjdk21`](https://hub.docker.com/repository/docker/antlafarge/jdownloader/tags?page=1\u0026ordering=last_updated\u0026name=ubuntu-openjdk21) + [`alpine-openjdk21`](https://hub.docker.com/repository/docker/antlafarge/jdownloader/tags?page=1\u0026ordering=last_updated\u0026name=alpine-openjdk21)\n- [`openjdk17`](https://hub.docker.com/repository/docker/antlafarge/jdownloader/tags?page=1\u0026ordering=last_updated\u0026name=openjdk17) = [`debian-openjdk17`](https://hub.docker.com/repository/docker/antlafarge/jdownloader/tags?page=1\u0026ordering=last_updated\u0026name=debian-openjdk17) + [`ubuntu-openjdk17`](https://hub.docker.com/repository/docker/antlafarge/jdownloader/tags?page=1\u0026ordering=last_updated\u0026name=ubuntu-openjdk17) + [`alpine-openjdk17`](https://hub.docker.com/repository/docker/antlafarge/jdownloader/tags?page=1\u0026ordering=last_updated\u0026name=alpine-openjdk17)\n- [`openjdk8`](https://hub.docker.com/repository/docker/antlafarge/jdownloader/tags?page=1\u0026ordering=last_updated\u0026name=openjdk8) = [`ubuntu-openjdk8`](https://hub.docker.com/repository/docker/antlafarge/jdownloader/tags?page=1\u0026ordering=last_updated\u0026name=ubuntu-openjdk8) + [`alpine-openjdk8`](https://hub.docker.com/repository/docker/antlafarge/jdownloader/tags?page=1\u0026ordering=last_updated\u0026name=alpine-openjdk8)\n\n| arch \\ tags | [`debian-openjdk21`](https://hub.docker.com/repository/docker/antlafarge/jdownloader/tags?page=1\u0026ordering=last_updated\u0026name=debian-openjdk21) | [`ubuntu-openjdk21`](https://hub.docker.com/repository/docker/antlafarge/jdownloader/tags?page=1\u0026ordering=last_updated\u0026name=ubuntu-openjdk21) | [`alpine-openjdk21`](https://hub.docker.com/repository/docker/antlafarge/jdownloader/tags?page=1\u0026ordering=last_updated\u0026name=alpine-openjdk21) | [`debian-openjdk17`](https://hub.docker.com/repository/docker/antlafarge/jdownloader/tags?page=1\u0026ordering=last_updated\u0026name=debian-openjdk17) | [`ubuntu-openjdk17`](https://hub.docker.com/repository/docker/antlafarge/jdownloader/tags?page=1\u0026ordering=last_updated\u0026name=ubuntu-openjdk17) | [`alpine-openjdk17`](https://hub.docker.com/repository/docker/antlafarge/jdownloader/tags?page=1\u0026ordering=last_updated\u0026name=alpine-openjdk17) | [`ubuntu-openjdk8`](https://hub.docker.com/repository/docker/antlafarge/jdownloader/tags?page=1\u0026ordering=last_updated\u0026name=ubuntu-openjdk8) | [`alpine-openjdk8`](https://hub.docker.com/repository/docker/antlafarge/jdownloader/tags?page=1\u0026ordering=last_updated\u0026name=alpine-openjdk8) |\n| :- | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: |\n| | *~270 MB* | *~260 MB* | *~120 MB* | *~265 MB* | *~280 MB* | *~115 MB* | *~250 MB* | *~115 MB* |\n| **linux/386** | ✓ | · | · | ✓ | · | · | · | ✓ |\n| **linux/amd64** | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |\n| **linux/arm/v5** | ✓ | · | · | ✓ | · | · | · | · |\n| **linux/arm/v6** | · | · | · | · | · | · | · | ✓ |\n| **linux/arm/v7** | ✓ | ✓ | · | ✓ | ✓ | · | ✓ | ✓ |\n| **linux/arm64/v8** | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |\n| **linux/mips64le** | ✓ | · | · | ✓ | · | · | · | · |\n| **linux/ppc64le** | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |\n| **linux/riscv64** | ✓ | ✓ | ✓ | · | ✓ | · | | · |\n| **linux/s390x** | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |\n\n# [Docker Compose](https://docs.docker.com/compose)\n\n```yml\nservices:\n  jdownloader:\n    image: antlafarge/jdownloader:\u003cTAG\u003e\n    container_name: \u003cCONTAINER-NAME\u003e # Optional\n    restart: \u003cRESTART\u003e # Optional\n    user: \u003cUID\u003e:\u003cGID\u003e # Optional\n    volumes:\n      - \"\u003cDOWNLOADS-PATH\u003e:/jdownloader/downloads/\"\n      - \"\u003cCONFIG-PATH\u003e:/jdownloader/cfg/\" # Optional\n      - \"\u003cLOGS-PATH\u003e:/jdownloader/logs/\" # Optional\n    environment:\n      JD_EMAIL: \"\u003cJD-EMAIL\u003e\" # Optional (better to use secrets)\n      JD_PASSWORD: \"\u003cJD-PASSWORD\u003e\" # Optional (better to use secrets)\n      JD_DEVICENAME: \"\u003cJD-DEVICENAME\u003e\" # Optional\n      UMASK: \"\u003cUMASK\u003e\" # Optional\n      JAVA_OPTIONS: \"\u003cJAVA-OPTIONS\u003e\" # Optional\n      LOG_FILE: \"\u003cLOG-FILE\u003e\" # Optional\n    secrets:\n        - JD_EMAIL\n        - JD_PASSWORD\n        - JD_DEVICENAME # Optional\n    ports:\n      - \u003cPORT\u003e:3129 # Optional\n\nsecrets:\n    JD_EMAIL:\n        file: \"\u003cJD-EMAIL-FILE\u003e\" # Put your myJD email in this file\n    JD_PASSWORD:\n        file: \"\u003cJD-PASSWORD-FILE\u003e\" # Put your myJD password in this file\n    JD_DEVICENAME: # Optional\n        file: \"\u003cJD-DEVICENAME-FILE\u003e\" # Put your myJD device name in this file\n```\n\n\u003cdetails\u003e\n\u003csummary\u003eSee example\u003c/summary\u003e\n\n```yml\nservices:\n  jdownloader:\n    image: antlafarge/jdownloader:latest\n    container_name: jdownloader\n    restart: on-failure:3\n    user: 1000:100\n    volumes:\n      - \"/hdd/JDownloader/downloads/:/jdownloader/downloads/\"\n      - \"/hdd/JDownloader/cfg/:/jdownloader/cfg/\"\n    secrets:\n        - JD_EMAIL\n        - JD_PASSWORD\n        - JD_DEVICENAME\n    ports:\n      - 3129:3129\n\nsecrets:\n    JD_EMAIL:\n        file: \"/hdd/JDownloader/secrets/JD_EMAIL.txt\"\n    JD_PASSWORD:\n        file: \"/hdd/JDownloader/secrets/JD_PASSWORD.txt\"\n    JD_DEVICENAME:\n        file: \"/hdd/JDownloader/secrets/JD_DEVICENAME.txt\"\n```\n\u003c/details\u003e\n\n## Parameters\n\nName | Type | Description | Optional | Default\n---- | ---- | ----------- | -------- | -------\n**`\u003cTAG\u003e`** | [Tag](https://docs.docker.com/engine/reference/run/#image-references) | Docker hub tag. | Optional | `latest`\n**`\u003cCONTAINER-NAME\u003e`** | [Name](https://docs.docker.com/reference/cli/docker/container/run/#name) | Container name. | Recommended | Random\n**`\u003cRESTART\u003e`** | [Restart](https://docs.docker.com/reference/cli/docker/container/run/#restart) | Container restart policy.\u003cbr\u003e*Use `on-failure` to have a correct behavior of `Restart`, `Close` and `Shutdown` buttons in the JDownloader settings.* | Recommended | `no`\n**`\u003cUID\u003e`** | [User](https://docs.docker.com/engine/reference/run/#user) | Owner user ID of the files and directories created.\u003cbr\u003e*Use the command `id -u` in your shell to get your current user id.* | Recommended | `0` (root)\n**`\u003cGID\u003e`** | [User](https://docs.docker.com/engine/reference/run/#user) | Owner group ID of the files and directories created.\u003cbr\u003e*Use the command `id -g` in your shell to get your current groud id.* | Recommended | `0` (root)\n**`\u003cDOWNLOADS-PATH\u003e`** | [Volume](https://docs.docker.com/reference/cli/docker/container/run/#volume) | Directory where your downloads will be stored on your host machine.\u003cbr\u003e*If you use the `user` parameter, check the permissions of the directories you mount as volumes.* | **REQUIRED** |\n**`\u003cCONFIG-PATH\u003e`** | [Volume](https://docs.docker.com/reference/cli/docker/container/run/#volume) | Directory where the JDownloader settings files will be stored on your host machine.\u003cbr\u003e*If you use the `user` parameter, check the permissions of the directories you mount as volumes.* | Recommended | In container\n**`\u003cLOGS-PATH\u003e`** | [Volume](https://docs.docker.com/reference/cli/docker/container/run/#volume) | Directory where the JDownloader log files will be stored on your host machine.\u003cbr\u003e*If you use the `user` parameter, check the permissions of the directories you mount as volumes.* | Not recommended | In container\n**`\u003cJD-EMAIL-FILE\u003e`** | [Secret](https://docs.docker.com/compose/use-secrets/) | The path to the docker secret file where your [myJDownloader](https://my.jdownloader.org) e-mail is saved. | **REQUIRED** |\n**`\u003cJD-PASSWORD-FILE\u003e`** | [Secret](https://docs.docker.com/compose/use-secrets/) | The path to the docker secret file where your [myJDownloader](https://my.jdownloader.org) password is saved. | **REQUIRED** |\n**`\u003cJD-DEVICENAME-FILE\u003e`** | [Secret](https://docs.docker.com/compose/use-secrets/) | The path to the docker secret file where your [myJDownloader](https://my.jdownloader.org) device name is saved. | Optional | (hostname)\n**`\u003cJAVA-OPTIONS\u003e`** | [Env](https://docs.docker.com/reference/cli/docker/container/run/#env) | Java options.\u003cbr\u003e*Use `-Xms128m -Xmx1g` to change initial and max Java heap size memory.* | Optional | Empty\n**`\u003cUMASK\u003e`** | [Env](https://docs.docker.com/reference/cli/docker/container/run/#env) | Change the *umask*. | Optional | No change\n**`\u003cJD-DEVICENAME\u003e`** | [Env](https://docs.docker.com/reference/cli/docker/container/run/#env) | Device name in your [myJDownloader web interface](https://my.jdownloader.org). | Optional | Hostname\n**`\u003cJD-EMAIL\u003e`** | [Env](https://docs.docker.com/reference/cli/docker/container/run/#env) | Your [myJDownloader](https://my.jdownloader.org) e-mail.\u003cbr\u003eI recommend to use the docker secrets (cf. `\u003cJD-EMAIL-FILE\u003e`). | Not recommended |\n**`\u003cJD-PASSWORD\u003e`** | [Env](https://docs.docker.com/reference/cli/docker/container/run/#env) | Your [myJDownloader](https://my.jdownloader.org) password.\u003cbr\u003eI recommend to use the docker secrets (cf. `\u003cJD-PASSWORD-FILE\u003e`). | Not recommended |\n**`\u003cLOG-FILE\u003e`** | [Env](https://docs.docker.com/reference/cli/docker/container/run/#env) | Write JDownloader logs from `java` command in a file.\u003cbr\u003eYou should use the volume parameter **`\u003cLOGS-PATH\u003e`** to access these log files from the host machine.\u003cbr\u003eUseful if you want to investigate any issues with JDownloader.\u003cbr\u003eExample : `\"/jdownloader/logs/jd.docker.log\"`. | Not recommended | `/dev/null`\n**`\u003cPORT\u003e`** | [Port](https://docs.docker.com/reference/cli/docker/container/run/#publish) | Network port used for Direct connection mode. | Optional | Not exposed\n\n# [Docker run](https://docs.docker.com/engine/reference/run)\n\n\u003cdetails\u003e\n\u003csummary\u003eSee Docker run\u003c/summary\u003e=\n\n```yml\ndocker run -d \\\n        --name \u003cCONTAINER-NAME\u003e \\\n        --restart \u003cRESTART\u003e \\\n        --user \u003cUID\u003e:\u003cGID\u003e \\\n    -v \"\u003cDOWNLOADS-PATH\u003e:/jdownloader/downloads/\" \\\n        -v \"\u003cCONFIG-PATH\u003e:/jdownloader/cfg/\" \\\n        -v \"\u003cLOGS-PATH\u003e:/jdownloader/logs/\" \\\n    -v \"\u003cJD-EMAIL-FILE\u003e:/run/secrets/JD_EMAIL\" \\\n    -v \"\u003cJD-PASSWORD-FILE\u003e:/run/secrets/JD_PASSWORD\" \\\n        -e JD_EMAIL=\"\u003cJD-EMAIL\u003e\" \\\n        -e JD_PASSWORD=\"\u003cJD-PASSWORD\u003e\" \\\n        -e JD_DEVICENAME=\"\u003cJD-DEVICENAME\u003e\" \\\n        -e JAVA_OPTIONS=\"\u003cJAVA-OPTIONS\u003e\" \\\n        -e LOG_FILE=\"\u003cLOG-FILE\u003e\" \\\n        -e UMASK=\"\u003cUMASK\u003e\" \\\n        -p \u003cPORT\u003e:3129 \\\n    antlafarge/jdownloader:\u003cTAG\u003e\n```\n\n*Note : Parameters indented twice are optional.*  \n*Volumes are used to simulate secrets without the need to create docker swarm secrets.*\n\nExample :\n```yml\necho \"my@email.com\" \u003e ./JD_EMAIL.txt\necho \"MyPassword\" \u003e ./JD_PASSWORD.txt\n\ndocker run -d \\\n        --name jdownloader \\\n        --restart on-failure:3 \\\n        --user 1000:100 \\\n    -v \"/hdd/JDownloader/downloads/:/jdownloader/downloads/\" \\\n        -v \"/hdd/JDownloader/cfg/:/jdownloader/cfg/\" \\\n    -v \"./JD_EMAIL.txt:/run/secrets/JD_EMAIL\" \\\n    -v \"./JD_PASSWORD.txt:/run/secrets/JD_PASSWORD\" \\\n        -e JD_DEVICENAME=\"JD-DOCKER\" \\\n        -p 3129:3129 \\\n    antlafarge/jdownloader:latest\n```\n\u003c/details\u003e\n\n# Guides\n\n## Setup\n\n- Go to [my.jdownloader.org](https://my.jdownloader.org) and create an account.\n- If you want to run the container as an unprivileged user, use the `user` parameter and check the access permissions of the directories you mount as volumes\n    - Create the downloads directory : `mkdir /path/to/jdownloader/downloads/`\n    - Setup the user and group owners : `sudo chown -R 1000:100 /path/to/jdownloader/downloads/`\n        - You can get your User ID (UID) by using : `id -u`\n        - You can get your User Group ID (GID) by using : `id -g`\n            - I recommend to use `100` as GID (`users` group), because every users should be in this group, and it will be easier to manage multi-users privileges.\n    - Setup the downloads directory access permissions : `sudo chmod -R 770 /path/to/jdownloader/downloads/`\n    - Setup the config directory access permissions : `sudo chmod -R 770 /path/to/jdownloader/cfg/`\n    - Setup the secrets directory access permissions : `sudo chmod -R 770 /path/to/jdownloader/secrets/`\n        - Create the secret file for your JD e-mail : `echo 'my@email.com' \u003e /path/to/jdownloader/secrets/JD_EMAIL.txt`\n        - Create the secret file for your JD password : `echo 'MyGreatPassword' \u003e /path/to/jdownloader/secrets/JD_PASSWORD.txt`\n        - Create the secret file for your JD device name : `echo 'JD-DOCKER' \u003e /path/to/jdownloader/secrets/JD_DEVICENAME.txt`\n- Run the container by choosing the [docker run](https://github.com/antlafarge/jdownloader#docker-run) or [docker compose](https://github.com/antlafarge/jdownloader#docker-compose) method and customize the parameters by using your [myJDownloader](https://my.jdownloader.org) credentials.\n    - You can check the container logs : `docker logs --follow --tail 100 jdownloader` (`CTRL + C` to quit)\n- Wait some minutes for JDownloader to update and be available in your [myJDownloader web interface](https://my.jdownloader.org).\n\n## Update JDownloader\n\nJDownloader will update itself automatically when it is idle (every 12 hours), so you have nothing to do.  \nTo disable the automatic upates, go to your JD instance on [my.jdownloader.org](https://my.jdownloader.org), and go to `Settings` / `Event Scripter` and switch from `Enabled` to `Disabled`.\n\n## Update the image\n\nThe dockerhub image is rebuilt monthly to get last OS and packages security updates.\n- [Docker compose](https://github.com/antlafarge/jdownloader#docker-compose) method :\n    - Update the image : `docker compose pull jdownloader`\n    - Recreate the container : `docker compose up -d --force-recreate jdownloader`\n    - Remove the old images : `docker image prune -f`\n- [Docker run](https://github.com/antlafarge/jdownloader#docker-run) method :\n    - Update the image : `docker pull antlafarge/jdownloader:latest`\n    - Remove the current container : `docker rm -f jdownloader`\n    - Start the container : `docker run ...`\n    - Remove the old images : `docker image prune -f`\n\n## Special characters in password\n\n- If you used the docker secrets, put the raw password in the secret file without escaping any character.\n- If you want to use environment variables.\n    - [Docker-compose.yml](https://github.com/antlafarge/jdownloader#docker-compose) file :\n        - Escape double quotes (`\"`) with backslashes (`\\`)\n            - ``JD_PASSWORD=\"My\\\"Great`Password\"``\n    - [Docker run](https://github.com/antlafarge/jdownloader#docker-run) command :\n        - If you have exclamation marks (`!`) in your password and you use a **bash** shell, this special character corresponds to commands history substitution. You might need to disable it :\n            - Type the command `set +H` in your bash shell.\n        - Escape double quotes (`\"`) or backticks (`` ` ``) with backslashes (`\\`)\n            - ``JD_PASSWORD=\"My\\\"Great\\`Password\"``\n- If you want to put your password manually in the settings file :\n    - Modify your [docker-compose.yml](https://github.com/antlafarge/jdownloader#docker-compose) file or [docker run](https://github.com/antlafarge/jdownloader#docker-run) command parameters :\n        - Set an empty `\u003cJD_PASSWORD\u003e` *(for disabling password replacement on container start)* :\n            - `JD_PASSWORD=\"\"`\n        - Set a `\u003cCONFIG-PATH\u003e` volume to have an access to the JDownloader settings files.\n    - Start the container.\n    - Go to your config directory and open the settings file named `org.jdownloader.api.myjdownloader.MyJDownloaderSettings.json`.\n    - Search for the password field and place your password in the empty double quotes. `\"password\":\"MyGreatPassword\",`\n        - Escape double quotes (`\"`) with backslashes (`\\`).\n            - ``\"password\":\"My\\\"Great`Password\",``\n    - Save the file and restart the container. `docker restart jdownloader`\n\n# Troubleshooting\n\n## Files permissions issue\n\nCheck the user you use to run the container (with `user` parameter) can read and write the directories you created and you mounted as [volumes](https://docs.docker.com/engine/reference/run/#volume-shared-filesystems).  \nRead carefully the [Setup guide](https://github.com/antlafarge/jdownloader#setup) and follow the steps.  \nOr run the container as root (remove `user` parameter).\n\n## Armhf libseccomp2 issue\n\nIf you run the image on an armhf host (`arm/v7`), you may encounter many command errors (`wait`, `sleep`, `curl`, `date`)  \nThis may be resolved by upgrading the `libseccomp2` library (docker dependency).  \nFirst you should try to upgrade your system by using the usual method.  \nIf this upgrade didn't resolve the problem, add the backports repo for debian buster and update : \n``` \nsudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 04EE7237B7D453EC 648ACFD622F3D138  \necho \"deb http://deb.debian.org/debian buster-backports main\" | sudo tee -a /etc/apt/sources.list.d/buster-backports.list  \nsudo apt update  \nsudo apt install -t buster-backports libseccomp2\n```\n\n## Docker privileges\n\nIf many internal commands fail, your container may lack some privileges and you can try the [--privileged](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities) flag.\n\n## Nothing worked / another issue\n\nYou can report issues in the [github issues](https://github.com/antlafarge/jdownloader/issues).  \nYou can send feedback and discuss the project in the [github discussions](https://github.com/antlafarge/jdownloader/discussions).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fantlafarge%2Fjdownloader","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fantlafarge%2Fjdownloader","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fantlafarge%2Fjdownloader/lists"}