{"id":16293679,"url":"https://github.com/ngosang/docker-amule","last_synced_at":"2025-04-05T04:08:52.249Z","repository":{"id":44080509,"uuid":"374284210","full_name":"ngosang/docker-amule","owner":"ngosang","description":"aMule is a multi-platform client for the ED2K file sharing network","archived":false,"fork":false,"pushed_at":"2025-02-05T11:34:46.000Z","size":182,"stargazers_count":156,"open_issues_count":5,"forks_count":18,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-29T03:07:18.647Z","etag":null,"topics":["amule","docker","ed2k","edonkey","emule","file-sharing","kademlia","p2p"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ngosang.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-06-06T06:22:42.000Z","updated_at":"2025-03-26T20:37:23.000Z","dependencies_parsed_at":"2024-05-31T08:33:35.057Z","dependency_job_id":"e91dcc9e-7d00-4137-ad7a-6740ce02125e","html_url":"https://github.com/ngosang/docker-amule","commit_stats":null,"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ngosang%2Fdocker-amule","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ngosang%2Fdocker-amule/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ngosang%2Fdocker-amule/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ngosang%2Fdocker-amule/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ngosang","download_url":"https://codeload.github.com/ngosang/docker-amule/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247284943,"owners_count":20913704,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["amule","docker","ed2k","edonkey","emule","file-sharing","kademlia","p2p"],"created_at":"2024-10-10T20:12:02.784Z","updated_at":"2025-04-05T04:08:52.204Z","avatar_url":"https://github.com/ngosang.png","language":"Shell","funding_links":["https://www.paypal.com/paypalme/diegoheras0xff"],"categories":[],"sub_categories":[],"readme":"# ngosang/amule\n\n[![Latest release](https://img.shields.io/github/v/release/ngosang/docker-amule)](https://github.com/ngosang/docker-amule/releases)\n[![Docker Pulls](https://img.shields.io/docker/pulls/ngosang/amule)](https://hub.docker.com/r/ngosang/amule/)\n[![Donate PayPal](https://img.shields.io/badge/Donate-PayPal-yellow.svg)](https://www.paypal.com/paypalme/diegoheras0xff)\n[![Donate Bitcoin](https://img.shields.io/badge/Donate-Bitcoin-f7931a.svg)](https://www.blockchain.com/btc/address/14EcPN47rWXkmFvjfohJx2rQxxoeBRJhej)\n[![Donate Ethereum](https://img.shields.io/badge/Donate-Ethereum-8c8c8c.svg)](https://www.blockchain.com/eth/address/0x0D1549BbB00926BF3D92c1A8A58695e982f1BE2E)\n\n[aMule](https://github.com/amule-project/amule) is a multi-platform client for the ED2K file sharing network and based on the windows client eMule. aMule started in August 2003, as a fork of xMule, which is a fork of lMule.\n\n![Download Screenshot](doc/screenshot.png)\n\nInspired by [tchabaud](https://github.com/tchabaud/dockerfiles/tree/master/amule) and [synopsis8](https://github.com/synopsis8/dockerfiles/tree/master/amule) work.\n\n## Docker Registry\n\nDocker images are available in [GHCR](https://github.com/users/ngosang/packages/container/package/amule) and [DockerHub](https://hub.docker.com/r/ngosang/amule).\n\n```bash\ndocker pull ghcr.io/ngosang/amule\nor\ndocker pull ngosang/amule\n```\n\n## Supported Architectures\n\nThe architectures supported by this image are:\n\n* linux/amd64\n* linux/arm/v6\n* linux/arm/v7\n* linux/arm64/v8\n* linux/ppc64le\n* linux/riscv64\n* linux/s390x\n\n## Application Setup\n\nThe web interface is at: `\u003cyour-ip\u003e:4711`\n\nFor better download speed you have to open these ports:\n\n* 4662 TCP\n* 4665 UDP\n* 4672 UDP\n\n## Usage\n\nHere are some example snippets to help you get started creating a container.\n\n\u003e [!NOTE]\n\u003e When you start aMule all shared folders are scanned. The user interface will not be available until the process is finished. You can check the logs and CPU usage to know the status.\n\n### docker-compose\n\nCompatible with docker-compose v2 schemas.\n\n```yaml\n---\nservices:\n  amule:\n    image: ngosang/amule\n    container_name: amule\n    environment:\n      - PUID=1000\n      - PGID=1000\n      - TZ=Europe/London\n      - GUI_PWD=\u003cfill_password\u003e\n      - WEBUI_PWD=\u003cfill_password\u003e\n      - MOD_AUTO_RESTART_ENABLED=true\n      - MOD_AUTO_RESTART_CRON=0 6 * * *\n      - MOD_AUTO_SHARE_ENABLED=false\n      - MOD_AUTO_SHARE_DIRECTORIES=/incoming;/my_movies\n      - MOD_FIX_KAD_GRAPH_ENABLED=true\n      - MOD_FIX_KAD_BOOTSTRAP_ENABLED=true\n    ports:\n      - \"4711:4711\" # web ui\n      - \"4712:4712\" # remote gui, webserver, cmd ...\n      - \"4662:4662\" # ed2k tcp\n      - \"4665:4665/udp\" # ed2k global search udp (tcp port +3)\n      - \"4672:4672/udp\" # ed2k udp\n    volumes:\n      - \u003cfill_amule_configuration_path\u003e:/home/amule/.aMule\n      - \u003cfill_amule_completed_downloads_path\u003e:/incoming\n      - \u003cfill_amule_incomplete_downloads_path\u003e:/temp\n    restart: unless-stopped\n```\n\n### docker cli\n\n```bash\ndocker run -d \\\n  --name=amule \\\n  -p 4711:4711 \\\n  -p 4712:4712 \\\n  -p 4662:4662 \\\n  -p 4665:4665/udp \\\n  -p 4672:4672/udp \\\n  -e PUID=1000 \\\n  -e PGID=1000 \\\n  -e TZ=Europe/London \\\n  -e GUI_PWD=\u003cfill_password\u003e `#optional` \\\n  -e WEBUI_PWD=\u003cfill_password\u003e `#optional` \\\n  -e MOD_AUTO_RESTART_ENABLED=true `#optional` \\\n  -e 'MOD_AUTO_RESTART_CRON=0 6 * * *' `#optional` \\\n  -e MOD_AUTO_SHARE_ENABLED=false `#optional` \\\n  -e MOD_AUTO_SHARE_DIRECTORIES=/incoming;/my_movies `#optional` \\\n  -e MOD_FIX_KAD_GRAPH_ENABLED=true `#optional` \\\n  -e MOD_FIX_KAD_BOOTSTRAP_ENABLED=true `#optional` \\\n  -v \u003cfill_amule_configuration_path\u003e:/home/amule/.aMule \\\n  -v \u003cfill_amule_completed_downloads_path\u003e:/incoming \\\n  -v \u003cfill_amule_incomplete_downloads_path\u003e:/temp \\\n  --restart unless-stopped \\\n  ngosang/amule\n```\n\n## Parameters\n\nContainer images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate `\u003cexternal\u003e:\u003cinternal\u003e` respectively. For example, `-p 8080:80` would expose port `80` from inside the container to be accessible from the host's IP on port `8080` outside the container.\n\n| Parameter | Function |\n| :----: | --- |\n| `-p 4711` | Web UI port. |\n| `-p 4712` | Remote gui, webserver, cmd port. |\n| `-p 4662` | ED2K TCP port (must be open to Internet). |\n| `-p 4665/udp` | ED2K global search UDP port (tcp port +3) (must be open to Internet). |\n| `-p 4672/udp` | ED2K UDP port (must be open to Internet). |\n| `-e PUID=1000` | for UserID - see below for explanation. |\n| `-e PGID=1000` | for GroupID - see below for explanation. |\n| `-e TZ=Europe/London` | Specify a timezone to use EG Europe/London. |\n| `-e GUI_PWD=\u003cfill_password\u003e` | Set Remote GUI password. It will overwrite the password in the config files. |\n| `-e WEBUI_PWD=\u003cfill_password\u003e` | Set Web UI password. It will overwrite the password in the config files. |\n| `-e MOD_AUTO_RESTART_ENABLED=true` | Enable aMule auto restart. Check modifications section. |\n| `-e 'MOD_AUTO_RESTART_CRON=0 6 * * *'` | aMule auto restart cron mask. Check modifications section. |\n| `-e MOD_AUTO_SHARE_ENABLED=false` | Enable aMule auto share. Check modifications section. |\n| `-e MOD_AUTO_SHARE_DIRECTORIES=/incoming;/my_movies` | aMule auto share directories with subdirectories. Check modifications section. |\n| `-e MOD_FIX_KAD_GRAPH_ENABLED=true` | Fix Kad stats graph bug. Check modifications section. |\n| `-e MOD_FIX_KAD_BOOTSTRAP_ENABLED=true` | Fix Kad bootstrap bug. Check modifications section. |\n| `-v /home/amule/.aMule` | Path to save aMule configuration. |\n| `-v /incoming` | Path to completed torrents. |\n| `-v /temp` | Path to incomplete torrents. |\n\n## User / Group Identifiers\n\nWhen using volumes (`-v` flags) permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user `PUID` and group `PGID`.\n\nEnsure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.\n\nIn this instance `PUID=1000` and `PGID=1000`, to find yours use `id user` as below:\n\n```bash\n  $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n```\n\n## Modifications\n\nThe Docker image includes some unofficial features. All of them are optional.\n\n### aMule Web UI Reloaded theme\n\nThe Docker image includes the classic aMule Web UI and [AmuleWebUI-Reloaded](https://github.com/MatteoRagni/AmuleWebUI-Reloaded) theme.\n\nYou can change the theme editing the `amule.conf` file and changing `Template=AmuleWebUI-Reloaded`. Let this option empty to use the default theme.\n\n### Auto restart mod\n\naMule has some issues that cause it to stop working properly after a few days:\n* [Memory leak](https://github.com/amule-project/amule/issues/314)\n* [Network disconnection](https://github.com/amule-project/amule/issues/315)\n\nAs workaround, we have implemented a cron scheduler to restart aMule from time to time. To enable this mod set these environment variables:\n* `MOD_AUTO_RESTART_ENABLED=true`\n* `MOD_AUTO_RESTART_CRON=0 6 * * *` =\u003e Cron mask is configurable. In the example it restarts everyday at 6:00h.\n\n### Auto share mod\n\nBy default, aMule only shares \"incoming\" directory and shared folders cannot be selected in the Web UI\n\nWe have added this option in the Docker image. The configuration is updated when the container starts. Note that sub-directories are also shared!\n* `MOD_AUTO_SHARE_ENABLED=true`\n* `MOD_AUTO_SHARE_DIRECTORIES=/incoming;/my_movies` =\u003e List of directories separated by semicolon ';'. Subdirectories will be shared too.\n\n### Fix Kad stats graph mod\n\naMule has an issue when it renders Kad stats graph that [crash the application](https://github.com/amule-project/amule/issues/265). The crash happens when you enter in the Web UI stats after few days running.\n\nAs workaround, we removed the image causing the issue from the Web UI. Since the image is not requested the server doesn't crash.\n* `MOD_FIX_KAD_GRAPH_ENABLED=true`\n\n### Fix Kad bootstrap mod\n\naMule [does not download the nodes.dat file](https://github.com/ngosang/docker-amule/issues/33) required to bootstrap the Kad network. This causes it not to connect to the Kad network.\n\nAs workaround, we are downloading the `nodes.dat` file before starting aMule. The file is only downloaded if it has not been downloaded before.\n* `MOD_FIX_KAD_BOOTSTRAP_ENABLED=true`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fngosang%2Fdocker-amule","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fngosang%2Fdocker-amule","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fngosang%2Fdocker-amule/lists"}