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
To get the image:
docker pull wibol/mldonkey-ubuntuTo create the container:
We must remove "( )" and customize its content.docker create --name mldonkey-ubuntu \
--network host --restart always \
-v "($HOME/Downloads/mlDonkey):/var/lib/mldonkey/incoming/files" \
wibol/mldonkey-ubuntumlDonkey stores data inside /var/lib/mldonkey/incoming/files container directory, so we mount it on local filesystem for easy access.
To run the container:
Open 20562/tcp, 20566/udp, 16965/tcp and 16965/udp ports in your router and OS.
docker start mldonkey-ubuntuThen you can access mlDonkey like http://localhost:4080:

- User: admin
- Password: Passw0rd-
Or installing "mldonkey-gui" from distro repo or "Ubuntu Historical Archive.

- User: admin
- Password: Passw0rd-
You can change the default password later from the telnet, web or GUI command lines:
We must remove "( )" and customize its content.useradd admin (NewPassw0rd-)Host incomming directory is owned by "mldonkey" container user (uid=101, gid=101), so we need to change permissions for full access (Linux):
We must remove "( )" and customize its content.sudo chmod -R 777 (~/Downloads/mlDonkey)
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.gzUnpack it:
tar -xf mldonkey-gui.tar.gzNavigate to the newly created directory and install:
cd mldonkey-gui/ &&
apt deb mldonkey-gui_3.1.6-1fakesync1_amd64.debIf 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"
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