Page 1 of 1

Setup aMule native under Linux

Posted: Sun Jul 06, 2025 6:07 pm
by omgomg
aMule can be installed in Linux from normal computer to Raspberry Pi.
aMule GUI is fine for any 64-bit capable computers since 2008 (4 GB ram and higher), including raspberry 4 with 4 GB or newer/higher.
aMule GUI-less is recommended for older computer with limited resources, including raspberry 3 and older.

Those who are interesting in to get Raspberry Pi: see spoiler below
Spoiler:

Raspberry Pi is a good choice for a low-powered computer to keep downloading/sharing without worrying about electricity bill. Please make sure download/upload both are limited to 1 mb/s for maximum stability - for adventurous users, feel free to experiment.

Raspberry Pi 3 and older - around 10 watt
Raspberry Pi 4 - around 15 watt
Raspberry Pi 5 and newer - Wattage increases as hardware gets beefer.

Recommendations:
* Get a proper power supply for Raspberry Pi
Raspberry Pi uses a bit higher voltage than phone (5.1 voltage raspberry pi vs 5 voltage phone).
Raspberry Pi can cope with charger for phone as long as not under high load.
Be careful - RAM / system memory is sensitive to unstable/under-powered and can possibly introduce to corruptions.

* Get a high endurance micro-SD
If your plan is to keep downloading for long time and/or adding new files to share frequently
It is okay to use cheap micro-SD, if you are sharing for most of the time. It might be a good idea to have another micro-SD ready for replacing.

* Have keyboard, mouse and screen ready for Raspberry Pi (including micro-HDMI for Raspberry Pi 4 and newer)
For installation and troubleshooting purpose

* Always choose 64 bit operation system (OS)
VNC (GUI remote administrative) is installed + configured readily and disabled until the user enables it
VNC = Windows version of Remote Desktop protocol (RDP)

* Make sure locale uses UTF-8

Raspberry icon as start menu --> Preferences --> Raspberry Pi Configuration --> Localisation (tab) --> Locale:
Click 'Set Locale'
Make sure Character set as 'UTF-8' - Language and Country are left to your choice

Failed to do will lead to aMule cannot move a completed download to Incoming because of unknown characters (outside English / USA)
Entry level
amule = Normal aMule GUI like under Apple or eMule in Windows

Advanced level
amuled = aMule runs in daemon (service) mode - a great choice for GUI-less server
amulecmd = To manage aMule in daemon mode via command-line (CLI)
amulegui = To manage aMule remotely - from your Linux (Windows/MAC?) computer to your GUI-less aMule server
amuleweb = Same as above with more restrictions (according to aMule Documentation, I haven't tested it)

Additional note: There are few limitations on amulegui - where client-side aMule cannot setup extra new shared directories on server-side aMule. It has to done on server-side and will be explained in separated post.

Within scope:
* Linux (Ubuntu-based) is already installed in computer / Raspberry Pi and is ready to use
* Normal aMule GUI (Entry level)

1. Install

Get the system up to date via two command lines below [Code] [Code] Reboot computer to use latest applied patch & software [Code] Now it is the time to install aMule [Code] 2. Open aMule

Variable ways to open aMule under Linux. Use the instinct, Luke.
Raspberry Pi: The raspberry icon as start menu --> Internet entry --> aMule

3. Configure aMule

Setup ED2k and KAD section

Open the 'Netorks' tab at the top as the picture shows below
Check if the link 'http://upd.mule-secuirty.org/server.met appears
Yes - click the little red marked button
No - paste the link and click the little red marked button

[Image]


Open the KAD tab as the picture shows below
Do the same as above with different link (http://upd.emule-security.org/nodes.dat

[Image]

Preferences at aMule section

Open the 'Preferences' tab at the top as the picture shows below
Select 'Connection'
Set a limit on download/upload as you see fit. 1000 / 1000 kB/s at both is fine for Raspberry Pi

[Image]

To avoid confusion about 'Slot Allocation' - So it is put under spoiler
Spoiler:

From my observation and understanding is that users have no control over 'Slot Allocation'. aMule honors the 'Bandwidth limits' with no question asked, but will keep dividing the 'Bandwidth limits' to several uploading slots as it can

Let's say that you have 50 files shared and 50 different users download them. aMule will give them 10 kB/s every. 500 kB/s upload limited divide with 50 different requestors = 10 kB/s

It seems the only way to somewhat "control" slot allocation is to share few files. Unless somebody knows excalty how it functions and share information about how to influence it.
Ports section

By default aMule will use like the picture shows above. Feel free to change them.
Please keep in mind that some ISP will thottle traffics with default ports.

'Bind local address to IP' can be ignored if the computer has only one connection to router to reach the internet. It might be relevant for users with VPN to lock aMule to VPN connection. (I haven't tested it mysel

Directories section

By default aMule is hidden in Linux user home. For Raspberry Pi users: Press ctrl + H to show the hidden folders.
aMule's location: /home/<your name>/.aMule

Configuration and data of aMule is best left as default.
Users can change locations of incomplete and completed data to other locations as the picture shows below

[Image]

To move these folders completely outside of home - require a knowledgeable Linux user regarding permission.
Non-issue: /home/<your name>/<whatever you pick>
Possibly issue: Anything outside of /home/<your name>

4. Status of aMule

Check your connection status at bottom right of aMule window

[Image]

Green = High-ID
Ports of aMule and your port forwarding at router setting are matched - not blocked by ISP on different ways and it will be explained in separated post.

Yellow = Low-ID

You can still download from High-ID users.
High-ID users can download from you.

My condolences to you and Low-ID users try to connect each other.

It could be several reasons:
* Your router is not configured for port forwarding
* Your router and aMule port settings are mismatched
* Your internet access behind ISP GC-NAT (Cheap way to stay out-dated solution - I will explain in layman's term in separated post)

Red = not connected

It could be for several reasons:
* Connect your computer to your home network?
* Your aMule is unable to download list of ED2k Servers for some reasons.
* Blocked by firewall at your home or ISP level.

5. Try it out

By inserting an ED2k link on eD2k link section at bottom of aMule Window.

[Image]

For Low-ID users: Please note that you depend on High-ID users to get them.

Re: Setup aMule native under Linux

Posted: Sun Jul 06, 2025 6:08 pm
by omgomg
aMule at advanced level

Here is a guide how to install aMule GUI-less on computer

Expectation:
* Users install Linux on computer themselves.
* Users have enabled SSH (secure shell) to manage computer remotely via command line.
* Linux system is up to date via sudo apt update / sudo apt dist-upgrade

1. Install

To install aMule as a service on computer.
[Code] 2. Configure

When aMule-daemon is installed then type as below
[Code] It will create and populate a hidden folder called .aMule under your username's home. /home/<yourname>/.aMule
You might get error outputs - don't worry about that.

The typical two errors:
* aMule daemon cannot be used when external connection is disabled
- in simple terms: Login is disabled and needs to be enabled. I will explain how to restrict login to few computers in firewall section
* A hashed password is required.

Let's start creating a hashed password with an example below [Code] The password "touche" get hashed with the help of md5. The quotes help to ensure no characters escape and create messy. Replace "touche" with your password where you can remember. Make sure the output hash is copied.

Time to configure and enable login at aMule [Code] Scroll to the bottom via down arrow - then search up to locate the 'AcceptExternalConnection'
Change it from 0 to 1
[Code] Locate the 'ECPassword'
[Code] Knowlegde users only:
Spoiler:

If you want to change default aMule ports to other or change incomplete and completed to other locations. Feel free to change them [Code] If you find it uncomfortable - it can wait until a section called 'Manage your aMule via amulegui'
Press ctrl + x to close and it will ask if you want to save - press y and enter.

3. Firewall software on computer

Install firewall software on computer. (By default firewall software is not installed on Raspberry Pi)
[Code] 4. Configure firewall software on computer

Please note that the rules below is only suitable for a computer with only one connection to router to reach the internet. If you do plan to use VPN or other extra interface. Please use google to find a solution fits your need.

Let's create the first two rules - because the firewall check traffics against whitelist in number order. You will get more traffics on port 4662 than other ports and it makes a sense to have it as first rule.

To allow incoming aMule traffics to your computer
[Code] To allow SSH remote administrative from your local network to your computer [Code] To allow remote administrative from your local network to your computer. You can safely ignore it, if you want to use SSH and manage aMule on computer itself. Firewall will not interfere internal network localhost / 127.0.0.1 [Code] Time to review the list
[Code] If you are not happy with the result - because of v6 (IPv6)
[Code] If you are happy with the result. Please keep it in mind that your SSH may be cut and you might have to start a new SSH connection to this computer again.
[Code] Now firewall software is enabled and will start when computer starts.

5. Manage your aMule via amulegui

Let's first start amule-daemon on the computer. Type the command below to start aMule in background (Service)
[Code] If the last output: see you - then everything is fine.
If not - post your issue with the output here.

Your other computer with GUI, if you are using Linux - install it
[Code] Windows & Apple users - Sorry, please use google.

open a program called aMuleGUI
Raspberry Pi: Raspberry icon as start menu --> Internet entry --> aMuleGUI

A popup appears and ask for IP address and login
Username is hardcoded to amule and cannot be changed.

Type the IP address and password. You should able to connect and view it as if it is a normal aMule program installed locally.

6. Additional info:

aMuleGUI cannot create extra shared directories at GUI-less computer.
Connect to the GUI-less computer and type the command
[Code] e.g [Code] Throw a subtitle file to the folder and reload shared
via aMuleGUI: the same way as eMule and check if the subtitle appears
via amulecmd: reload shared
via amulecmd: show shared

If it shows empty - post here for helping.

Helpful commands in amulecmd [Code]

Re: Setup aMule native under Linux

Posted: Sun Jul 06, 2025 6:08 pm
by omgomg
Port Forwarding.

To write a one-fits-all Port Forwarding documentation is a pipe dream.
Because Port Forwarding implementation in every router / firewall is very different from each other.

It forces me to write a loose guidelines and I try best as I can.
Let's start with basic

In order to have Port Forwarding working correctly - User is required to:
* Configure firewall
* Configure NAT (Network address translation)

1. Firewall on router / firewall

Define three rules - It really depends on which your router/firewall model

First rule [Code] Create the other two rules with same info as above with few difference
Destination port = 4665 and 4672
Traffic / protocol type = UDP (if available)

2. NAT (Network Address Translation)
Now it gets complicated - let's focus on

No, because it is an incorrect choice.
1:1 NAT, one-to-one NAT, and Static NAT:

Yes it is right choice.
PAT (Port address translation), IP masquerading, NAT overload, many-to-one NAT, and Dynamic NAT. [Code] Create the other two rules with same info as above with few difference
Traffic / protocol type = UDP
External Port = 4665 and 4672
Internal Port = 4665 and 4672

If you did correctly and still an issue - It might be GC-NAT, see below.

GC-NAT

When you have gotten the enough info to configure port forwarding on your router to get High-ID.
You have configured the router and you still see Low-ID despite you did double-check at both aMule and router. Everything looks right.

You have used a webpage to test if your router has opened the necessary ports. The webpage told you that all of your ports are closed or didn't reply the requests. (I take absolutely no responsibility for whatever webpage you use to test your port forwarding).

It is very likely that you are behind GC-NAT on ISP-level (carrier-grade NAT) NAT = Network address translation

Let me explain in layman's terms on GC-NAT.
Please drop everything you know about the internet and network to make my explanation more simple to understand.

Let's see my drawing - despite it did mention internet-related network. We see it as if the drawing is about landline telephone.

[Image]


Legacy internet connections --> Legacy landline phone
Modern internet connections --> modern landline phone

Let's say the original implementation for phone number system in your country. The developers designed the max numbers supported because of design decisions regarding the infrastructure and how traffic is routed.

It is no issue for this "early-implemented" time - where institutions, high status people, and essential employees for society will have phone number. Non-essential people will have to use red phone house. Perfect, no problem.

Companies make private landline phone products - they take it risk and try to make it cheaper to buy for average people. It is big succes for companys - because average people wants to buy it, so they can social with their family or friends from far away.

Society forces landline phone service providers to implement landline phone into every house.

Available number for phone number gets less over time. The developers for phone number system literally underestimated (under estimation) the numbers of public phone number needed for future-proof.

The developers implement a quick fix by giving a phone number per house. To delay the inevitable by giving a group of developers time to design the next generation phone number system to have future-proof solution.

The group of developers announce the next generation phone number system. Unfortunately, very few welcomes it - because of longer number, more complexity, questionable designs and interoperability issues.

The developers get forced to design a quick solution again - because the available numbers are now critically endangered / exhausted - depend on which sources.

They have come up with the idea that people who only call to other - not vice-versa. So landline phone service providers can delay the inevitable again. People can buy cheaper landline phone plans as mentioned above - It means that people who bought the cheap plan will share the same number as anybody who bought it too.

Landline phone service providers need to make sure that customers are at modern landline phone (Modern internet connections). Because any changes on legacy landline phone (legacy internet connections) requires downtime for maintenance and long time to test are unacceptable. So they have to do the slow way by migrating them when possible.

Please remember that modern landline phone is not only for customers who only call other, not vice-versa - it can support bi-directional as in old days. If Service provider supports it or you have to pay it more.

Then you are here where you are on 'Modern internet connections' with a "fake" public IP address on your house.
The ring of 'Modern internet connections' with a true public IP on ISP-level - customers connect to it with "fake" public IP addresses. From outside point of view - clients under the ring shared the true public IP address - only the ring knows how to return the traffic to the rightful requestor (as long as the requestor initially sends traffic)

I completely understand technical knowledge people find it questionable - To share the knowledge, you have to speak the same language as their with analogy as a part of their generation. I welcome to improve the history from above with less bias - as long as information is accuracy and easy to understand as much as possible.