MLDonkey is an extremely powerful peer2peer client and server. It's most notable features are its complete lack of an interface, and its support for many different peer2peer protocols.

Why is having no interface so good? Well it means that MLDonkey can start at boot and run virtually unnoticed in the background. If you do want to give it some instructions then there are loads of different ways of doing it (telnet, web-based, many monitor applets and multiple GUIs). Running the core on its own means that it can run as it's own user (mldonkey) who has no permission to do anything else, making it more secure than those peer2peer applications which must be run as a regular user such as aMule and Frostwire. Another advantage of separating the core from the interface is that any interface can connect from any location, even from the other side of the world, as long as the IP address it is coming from is in MLDonkey's list of allowed IPs.


MLDonkey is in Ubuntu's Universe repository under the name mldonkey-server, however I would not recommend you use that package. The reasons are that firstly it doesn't launch and shutdown properly, which forces a complete abandonment of the /etc/init.d/mldonkey-server file in favour of just starting it manually. Secondly MLDonkey's support of the Gnutella and Gnutella 2 protocols was broken a while ago, and fixed recently. Ubuntu's package (2.3) is broken whilst the latest release (2.7) is fixed. Therefore I suggest you download MLDonkey from here.

Once you have the source you should find somewhere to build it then enter that folder with a terminal. You will need to install the standard software compilers using:

sudo apt-get install build-essential checkinstall

Type your password and tell it you want all of the stuff it is going to get. After it has finished you will need to install the development files needed to build MLDonkey, which are stored in packages ending in -dev. Luckily, since MLDonkey is already in Ubuntu (albeit an older version with a broken bootup) you can get all of these dependencies using:

sudo apt-get build-dep mldonkey-server

Once again tell it you want all of that stuff.

Now you can compile MLDonkey so, making sure your terminal is in the right folder, you need to run:


And there shouldn't be any errors. Next build it with:


(This can take a while) When it has finished you should run:

sudo checkinstall -D

To create an Ubuntu package of MLDonkey. Call it mldonkey-custom or something, then once it has built the package you can install it by double clicking on it in the file manager (it will be called something like mldonkey-custom_XXXXXXX.deb). Now it is installed.

Running MLDonkey

MLDonkey should be run in an empty folder, since it creates loads of files there. I would recommend running it in a folder such as $HOME/.mldonkey.

It is usually a good idea to run MLDonkey as a restricted user, probably called mldonkey. Create such a user with a command like:

adduser --system --group --home /home/yourusername/.mldonkey mldonkey

This will add a user and a group, both called mldonkey. Now you should go into System->Administration->Users and Groups, tick "Show all users and groups" then look down the list for mldonkey and make a note of its UID number.

Open a terminal and take it to the .mldonkey folder, then run:


Hopefully it will create loads of files. If it gets as far as "Core Started" then end it with Ctrl-C. Open up the new configuration file which should have been created called downloads.ini with a text editor. Find "Section: STARTUP" and look for "run_as_user" and make it equal mldonkey. Look down a bit for "run_as_useruid" and make it equal the UID of mldonkey. Now it should run as the user mldonkey when called with sudo. To start MLDonkey, and to restart it in the future, use (from within your .mldonkey folder):

sudo mlnet

Accessing MLDonkey

There are lots of ways of checking on MLDonkey once it is running. The quickest is with telnet.

telnet 4000

Will connect to MLDonkey if it is running. Typing "help" and "longhelp" will tell you how to use this mode.

A more powerful way is to use a web browser. Just point your browser here (or type localhost:4080 into the location bar)

There are many little applets to give you the status of MLDonkey. There are a few in gDesklets, there is one for aDesklets, Gkrellm has one and so does Conky.

The most comprehensive way of interfacing with MLDonkey, however, is to use a GUI. There are two in Ubuntu, the standard GTK one and a QT one. These packages are called mldonkey-gui and kmldonkey respectively. My favourite GUI is called Sancho. It is not in Ubuntu, but it has a binary archive for x86 which works well enough on x86 Ubuntu.

Additionally, there is the TorrentServer Handler, which is a small extension that integrates FireFox with an MLDonkey server, allowing you to add torrents and other links (e.g., magnet, sigdat and ed2k) to MLDonkey's download queue with a single click. This allows you to easily add downloads to the server's download queue from any computer.

Another very useful tool is Web GMUI, it is a remote web interface frontend which includes 3 different web guis (codenamed Plex, Clutch and Jay), an integrated web server, SSL, UTF-8 and multi-language support.

Useful Info

Adding Servers

Adding servers can be tedious on a one-by-one basis, but thankfully MLDonkey can use "server.met" files which contain the IP addresses of many servers (this is used for the Edonkey network, but once any connection is established a list of clients for other networks like Gnutella can be downloaded). There is no link to a "server.met" file here since it may become out-of-date rapidly, so instead try searching the Internet for one, or get one from a friend. You can use it in MLDonkey from its telnet/console like this:

servers /the/path/to/your/server.met

The "c" command tells MLDonkey to connect to more servers, thus utilising the server.met file.

Importing Temporary Files

MLDonkey uses a different method of storing temporary files than Emule or Amule, however it can import an Emule or Amule temporary directory into its own lists. The easiest way to do this is with the telnet interface (remember, the "Console" mode of may GUIs is the same as the telnet interface). From there you should run:

import_temp /the/full/path/to/old/temporary/folder

This will add all of the partially completed files from the folder /the/full/path/to/old/temporary/folder to MLDonkey's temporary folder, and add them to its list of downloads. It's as simple as that.

See Also

MLDonkey's homepage (where you downloaded the core's source code from) contains loads of useful links if you want to learn some more tricks with MLDonkey.

P2PHowTo This gives a wider view of filesharing applications and their differences

Other than that I hope this guide lets you share your original, freely licensed and public domain files with people on multiple networks using MLDonkey.


MLDonkey (last edited 2010-04-22 09:13:07 by bilbo)