mlDonkey in Docker

mlDonkey 3.1.6 on Ubuntu 18.04 in a 90MB Docker image

Running mlDonkey in Docker

Why?

MLDonkey is an open-source, multi-protocol, peer-to-peer file sharing application that runs as a back-end server application on many platforms. It can be controlled through a user interface provided by one of many separate front-ends, including a Web interface, telnet interface and over a dozen native client programs.

Every day it is more complicated to install mlDonkey due to its lack of maintenance and the difficulty to find everything we need in our operating system. One way to continue enjoying this magnificent p2p program is to run it inside a Docker container and on a platform on which it worked well. This keeps it isolated from the operating system installed on your computer, which will keep it running for years to come.

First of all, you need to install Docker on your Windows or Linux.

Mods (07/19/2026)

  • Disabled all deprecated protocols (only eDonkey and Kademlia are working).

  • Replaced deprecated update URLs with emule-security.org.

  • Default settings optimised for broadband without overloading the provider’s router.

  • Used the “--network host” tag for container creation to avoid double NAT, thereby speeding up file sharing.

  • Enabled Kademlia port 16965/TCP to access more sources.

  • Optimised disk write buffer for HDDs.

Usage

  1. To get the image:

    docker pull wibol/mldonkey-ubuntu

  2. To create the container:

    docker create --name mldonkey-ubuntu \
    --network host --restart always \
    -v "($HOME/Downloads/mlDonkey):/var/lib/mldonkey/incoming/files" \
    wibol/mldonkey-ubuntu

    We must remove "( )" and customize its content.

    mlDonkey stores data inside /var/lib/mldonkey/incoming/files container directory, so we mount it on local filesystem for easy access.

  3. To run the container:

    Open 20562/tcp, 20566/udp, 16965/tcp and 16965/udp ports in your router and OS.

    docker start mldonkey-ubuntu

    Then you can access mlDonkey like http://localhost:4080:

    mlDonkey web user interface

    • User: admin
    • Password: Passw0rd-

    Or installing "mldonkey-gui" from distro repo or "Ubuntu Historical Archive.

    mlDonkey user interface

    • User: admin
    • Password: Passw0rd-

    You can change the default password later from the telnet, web or GUI command lines:

    useradd admin (NewPassw0rd-)

    We must remove "( )" and customize its content.

    Host incomming directory is owned by "mldonkey" container user (uid=101, gid=101), so we need to change permissions for full access (Linux):

    sudo chmod -R 777 (~/Downloads/mlDonkey)

    We must remove "( )" and customize its content.

GUI alternative installation

If you were unable to install mldonkey-gui because the dependencies are no longer available in your distribution, try the following:

  • Download the file:

    wget https://mldonkey.wibol.eu/mldonkey-gui.tar.gz

  • Unpack it:

    tar -xf mldonkey-gui.tar.gz

  • Navigate to the newly created directory and install:

    cd mldonkey-gui/ &&
    apt deb mldonkey-gui_3.1.6-1fakesync1_amd64.deb

  • If dependency errors occur:

    apt install -f &&
    apt deb mldonkey-gui_3.1.6-1fakesync1_amd64.deb

Other optional mounts

You may want to use these other options:

  • -v "(/var/lib/mldonkey):/var/lib/mldonkey"

  • -v "(/tmp/mldonkey):/var/lib/mldonkey/temp"

  • -v "($HOME/Video/mlDonkey):/var/lib/mldonkey/shared"

  • -v ":/var/lib/mldonkey/temp"

  • -v ":/var/lib/mldonkey/incoming/files"

We must remove "( )" and customize its content.

If these directories aren't mounted, they will all reside on the system's root partition, which is where Docker stores data by default. Be sure you have enough free space on it.

HDD care

If mlDonkey’s temporary directory is located on an HDD, you can enable the disk write buffer via the command line in your graphical interface to decrease fragmentation and mechanical wear on the drive:

set buffer_writes true

Known problems

When creating the container we received the error:

Error response from daemon: create ($HOME/Downloads/mlDonkey): "($HOME/Downloads/mlDonkey)" includes invalid characters for a local volume name, only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed. If you intended to pass a host directory, use absolute path

To solve it, we must remove "( )" from local mount point.

Inicio