• Stars
    star
    170
  • Rank 223,357 (Top 5 %)
  • Language
    Shell
  • License
    MIT License
  • Created almost 8 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

JDownloader 2 Docker Image (Multiarch) - 50M+ Downloads

logo

JDownloader 2 - Docker Image

latest release Docker Pulls Docker stars PayPal donation Buy me a coffee Buy me a coffee

DISCLAIMER: As-of 2021, this product does not have a free support team anymore. If you want this product to be maintained, please support on Patreon.

(This product is available under a free and permissive license, but needs financial support to sustain its continued improvements. In addition to maintenance, support and stability there are many desirable features yet to be added.)

Headline

This image allows you to have JDownloader 2 easily installed and controlled via MyJDownloader, thanks to Docker. No cluncky and rusty VNC sessions here!

Installation

Here 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)

Docker

docker run -d --init --restart=always -v </path/to/downloads>:/opt/JDownloader/Downloads -v </path/to/appdata/config>:/opt/JDownloader/app/cfg --name jdownloader -u $(id -u) -p 3129:3129 -e [email protected] -e MYJD_PASSWORD=bar -e MYJD_DEVICE_NAME=goofy jaymoulin/jdownloader

Docker Compose

services:
   jdownloader:
    image: jaymoulin/jdownloader
    container_name: jdownloader
    restart: always
    user: 1001:100
    volumes:
        - </path/to/appdata/config>:/opt/JDownloader/app/cfg
        - </path/to/downloads>:/opt/JDownloader/Downloads
        - </path/to/appdata/logs>:/opt/JDownloader/app/logs #optional
        - </path/to/appdata/extensions>:/opt/JDownloader/app/extensions #optional
        - /etc/localtime:/etc/localtime:ro #optional
    environment: 
            FILE_MYJD_USER: myjd-user #optional (see [Identify](https://github.com/jaymoulin/docker-jdownloader#identify))
            FILE_MYJD_PASSWORD: myjd-password #optional (see [Identify](https://github.com/jaymoulin/docker-jdownloader#identify))
            MYJD_USER: [email protected] #optional (see [Identify](https://github.com/jaymoulin/docker-jdownloader#identify))
            MYJD_PASSWORD: bar #optional (see [Identify](https://github.com/jaymoulin/docker-jdownloader#identify))
            MYJD_DEVICE_NAME: goofy #optional
            XDG_DOWNLOAD_DIR: /opt/JDownloader/Downloads #optional
    ports:
        - 3129:3129 
    secrets:
        - myjd-user #optional (see [Identify](https://github.com/jaymoulin/docker-jdownloader#identify))
        - myjd-password #optional (see [Identify](https://github.com/jaymoulin/docker-jdownloader#identify))

secrets:
  myjd-user: #optional (see [Identify](https://github.com/jaymoulin/docker-jdownloader#identify))
    file: ~/jdownloader/secrets/myjd_user.txt
  myjd-password: #optional (see [Identify](https://github.com/jaymoulin/docker-jdownloader#identify))
    file: ~/jdownloader/secrets/myjd_password.txt

Kubernetes

apiVersion: apps/v1
kind: Deployment
metadata:
  name: jdownloader
  labels:
    app: jdownloader
spec:
  replicas: 1
  selector:
    matchLabels:
      app: jdownloader
  template:
    metadata:
      labels:
        app: jdownloader
    spec:
      containers:
        - name: jdownloader
          image: jaymoulin/jdownloader
          env:
            - name: MYJD_USER
              value: "[email protected]"
            - name: MYJD_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: my_jd_secret
                  key: password
          volumeMounts:
            - mountPath: /opt/JDownloader/app
              name: exec
            - mountPath: /opt/JDownloader/app/cfg
              name: cfg
            - mountPath: /opt/JDownloader/Downloads
              name: downloads
            - mountPath: /opt/JDownloader/app/extensions
              name: extensions
      volumes:
        - name: exec
          emptyDir: {}
        - name: cfg
          hostPath:
            path: /path/to/jd/cfg
            type: Directory
        - name: downloads
          hostPath:
            path: /path/to/downloads
            type: Directory
        - name: extensions
          hostPath:
            path: /path/to/extensions
            type: Directory

Note for RPI Zero : specify that you want the arm32v6 image (e.g. jaymoulin/jdownloader:0.7.0-arm32v6) because rpi zero identify itself as armhf which is wrong.

Configuration

You can set many parameters when you configure this container, but you must specify your MyJDownloader login/password to connect to your container.

Configuration values

Parameter Function
-v /opt/JDownloader/app/cfg Config file folder, saves your configuration on the host
-v /opt/JDownloader/app/logs Container logs folder, specify it only if you wan to keep logs on the host
-v /opt/JDownloader/app/extensions Extensions folder, specify it only if you wan to install extensions and keep it on the host
-v /opt/JDownloader/Downloads Downloads folder (where you put your download mountpoint)
-u <UID>:<GID> Add user identifiers to run the container with user priviledges. To obtain such values, run on your host id yourusername, additional information can be found in Docker documentation
-p 3129:3129 This Network port is required for Direct Connection mode, more information in this section

Environment Variables

Parameter Function
FILE_MYJD_USER=myjd-user The docker secret of your MyJDownloader user
FILE_MYJD_PASSWORD=myjd-password The docker secret of your MyJDownloader password
[email protected] Your MyJDownloader user
MYJD_PASSWORD=foo Your MyJDownloader password
MYJD_DEVICE_NAME=goofy The device name that will appear on MyJdownloader portal
XDG_DOWNLOAD_DIR=/opt/JDownloader/Downloads If you use this variable, set it as per the downloads folder volume!
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)

Identify

There are 3 possibilities to give login password for MyJDownloader:

  • 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.
  • Declare MYJD_USER and MYJD_PASSWORD values which only create environment variable
  • 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.)
docker exec jdownloader configure [email protected] password

Other options can be changed on your MyJDownloader account : https://my.jdownloader.org/index.html#dashboard.

Appendixes

Direct Connection Mode

Direct Connection mode (or Direct Connections) improves the use of this container via MyJDownloader GUI and is strongly recommended at least in your LAN.

By 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. In this mode, MyJDownloader server still handles service related tasks, like the session authentication and notifications.

To 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

DNS Rebind Warning

If 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:

  • Asus Merlin: Follow this procedure to enable custom scripts and edit the dnsmasq file, then add the line rebind-domain-ok=/mydns.jdownloader.org/
  • FreshTomato: In 'Advanced->DHCP/DNS/Dnsmasq Custom configuration' add rebind-domain-ok=mydns.jdownloader.org
  • Fritz!Box: KB Article from JDownloader
  • OpenWRT: browse to Network>DHCP and DNS>General Settings and add mydns.jdownloader.org to Domain Whitelist
  • pfSense: more information here

Direct Connection using a Bridged Network

To get Direct Connection when using a bridged newtwork, please follow these steps:

  • Expose 3129 port when creating the container (-p 3129:3129 parameter)
  • When JDownloader is running, navigate to Settings > Advanced Settings > Search for "myjdownloader" > 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"]
  • Set MyJDownloaderSettings: Manual Local Port to 3129
  • Set MyJDownloaderSettings: Direct Connect Mode to Allow lan/wan connections with manual port forwarding
  • Restart JDownloader, connections will now be direct

Debugging

You can put a file called jdownloader-block.txt file in your Download folder to pause the container start. This will allow to connect to the container with a shell to debug. (docker exec -it jdownloader sh)

Install Docker

If you don't have Docker installed yet, you can do it easily in one line using this command

curl -sSL "https://gist.githubusercontent.com/jaymoulin/e749a189511cd965f45919f2f99e45f3/raw/0e650b38fde684c4ac534b254099d6d5543375f1/ARM%2520(Raspberry%2520PI)%2520Docker%2520Install" | sudo sh && sudo usermod -aG docker $USER

More Repositories

1

docker-plex

Plex Media Server - Docker Image (Multiarch + Raspberry Pi) - 5M downloads
Makefile
96
star
2

yamete

Yamete - Hentai downloader in PHP CLI - Easy site downloader PHP system
PHP
66
star
3

keeptune

Google Chrome Extension to download on Bandcamp, Soundcloud...
65
star
4

guzzlehttp-cloudflare

Guzzle middleware to pass through Cloudflare protection
PHP
36
star
5

google-music-manager

Daemon to upload/download Google Music Library to Google Music
35
star
6

docker-rpi-plex-video-converter

Raspberry PI - Plex Video converter - Docker image (Multiarch)
Makefile
24
star
7

google-music-manager-uploader

Google Music Manager Uploader module / Easily upload MP3 (folder) to Google Music
Python
21
star
8

youtube-music-uploader

Python Daemon to upload music to Youtube Music
Python
17
star
9

docker-google-cloudprint

Google Cloudprint Docker Image (Multiarch)
Shell
15
star
10

google-music-manager-downloader

Google Music Manager Downloader module / Easily download MP3 collection from Google Music
Python
6
star
11

docker-google-music-uploader

Docker Image to upload music library to Google Music (Multiarch)
6
star
12

docker-google-musicmanager

Docker Image to port former Google MusicManager (upload + download music to Google Music) (compatible Raspberry PI)
4
star
13

StreamElementsWidget_ItsAMe

Plays a sound when a specific user says its first line
JavaScript
4
star
14

StreamElementsWidget_ChannelPointIdDisplay

Display your specific Twitch redemption id
JavaScript
4
star
15

StreamElementsWidget_ChannelPointRaffle

Displays a raffle wheel triggered with channel points
JavaScript
4
star
16

docker-twitter-cli

Docker Image (Multiarch) - Twitter Cli Client
Makefile
4
star
17

StreamElementsWidget_ChannelPointRedeemer

Some new streamelements widgets
JavaScript
3
star
18

docker-piu-piu

Old school horizontal shooter in your terminal - Docker image (multiarch)
Makefile
3
star
19

docker-google-chrome-webstore-download

Google Chrome Webstore Downloader - Python Module - Docker Image (Multiarch)
Python
3
star
20

StreamElementsWidget_Wordle

Wordle as a Stream Elements widget for persons in chat to be player
JavaScript
3
star
21

docker-google-music-downloader

Docker Image to download music library from Google Music (Multiarch)
3
star
22

StreamElementsWidget_SayARandomNumber

Displays and say out loud a random number when streamer uses !d<anynumber> command
JavaScript
3
star
23

StreamElementsWidget_LowerThirds

Display Lower thirds with images and high configuration on streamelements widget
JavaScript
3
star
24

docker-sshtron

Play Tron over SSH - Docker Image (Multiarch)
Makefile
2
star
25

StreamElementsWidget_HeyListen

Plays a sound when streamer name is in chat
JavaScript
2
star
26

docker-coinmon

Coinmon - Cryptocurrency CLI monitor - Docker Image (Multiarch)
Makefile
2
star
27

dotfiles

Install my own private environment
Shell
2
star
28

docker-torrench

Torrench (command line torrent search tool) - Docker image (Multiarch)
2
star
29

docker-googler

πŸ‘€ Google Search, Google Site Search, Google News from the terminal - Docker Image (Multiarch)
2
star
30

google-musicmanager-dedup-api

Deduplication API for Google MusicManager
Python
2
star
31

docker-ddgr

πŸ¦† DuckDuckGo from the terminal - Docker Image (Multiarch)
1
star
32

docker-twidge

Twidge Docker image
Makefile
1
star
33

docker-transmission

Transmission Bittorrent Client - Docker Image (Multiarch)
1
star
34

google-music-manager-auth

Google Music Manager Auth module
Python
1
star