Requirements
njMule is shipped as native executables: you do not need Java or any other runtime. This page lists the systems it runs on, what the desktop app needs on Linux, and which ports and disk space to plan for. If your system is listed, go on with the installation page for it.
Supported systems
| System | Processor | Package | What you get |
|---|---|---|---|
| Windows | x64; Arm through the system's x64 emulation | .msi installer, .zip archive | desktop app, command line, Windows service |
| macOS 13 (Ventura) or later | Apple silicon (arm64) | .dmg disk image | desktop app, command line |
| Linux | x64, arm64 | .deb, .rpm, .tar.xz archive | desktop app, command line, systemd user service |
| Linux | x64 | static .tar.xz archive | headless engine and web interface only |
| Docker | linux/amd64, linux/arm64 | image ghcr.io/njmule/njmule | headless engine and web interface |
| Synology DSM 7.0 or later | x86_64 | .spk package | headless engine and web interface |
A few things are not covered by these packages:
- Intel Macs: there is no macOS build for x64 processors. The Docker image runs on Docker Desktop for Mac as an alternative, with the web interface.
- Windows on Arm runs the x64 package under emulation: GraalVM, which njMule's engine is built with, has no Windows Arm build yet. The release workflow installs, runs and uninstalls the x64 package on an Arm machine to check that it works.
- Synology NAS with an ARM processor: the package is built for x86_64 models only (those with a Celeron or Atom processor included).
- 32-bit systems are not supported.
Every desktop package holds two programs: njmule, the engine, which is also the command line and
runs headless, and njmule-gui, the desktop app's window, which starts the engine beside it and
shows its interface in the system's web view. See Install on Windows,
macOS, Linux, Docker or
Synology.
Web view
The desktop app's window shows its interface in the web view of the system:
- Windows: Microsoft Edge WebView2, part of Windows 11 and installed with Microsoft Edge on Windows 10. If it is missing, the free Evergreen runtime from Microsoft adds it.
- macOS: WebKit, part of the system.
- Linux: WebKitGTK 4.1 and GTK 3. The
.deband.rpmpackages depend on them, so the package manager installs them for you:
| Package | Dependencies |
|---|---|
.deb (Debian, Ubuntu) | libwebkit2gtk-4.1-0, libgtk-3-0t64 or libgtk-3-0 |
.rpm (Fedora, RHEL) | webkit2gtk4.1, gtk3 |
With the .tar.xz archive, install the same libraries yourself. The engine, njmule, needs none of
them.
The Linux executables are built on Ubuntu 24.04 and need the system's C library (glibc). On a
distribution with an older C library, or one built on musl such as Alpine, they may not start: use
the static archive njmule-<version>-linux-x64-static.tar.xz there. It is linked statically, needs
no library of the system at all, but it has no desktop app.
Screen
The desktop window works down to 900 × 600 pixels; in a narrow window the sidebar folds to its icons and the tools show only their icons. The web interface also has a layout for phones.
Disk space
- The programs take little room; the packages are compressed with xz.
- Unfinished downloads live in the temporary folder (
temp) and grow as data arrives. njMule keeps a minimum of free space on that disk, 512 MiB unless you change it: below it, downloads wait and go on by themselves once there is room again. - Completed downloads move to the incoming folder. Keep both folders on the same disk if you can: a finished file then moves at once, without being copied.
The folders are listed in Data locations and set in Directories.
Network ports
| Port | Protocol | Used for | Default |
|---|---|---|---|
| 4662 | TCP | eD2K: other clients and the server's check of your port | open to the Internet |
| 4672 | UDP | eD2K client UDP and Kad | open to the Internet |
| 4711 | TCP | the web interface and its remote-control API | this computer only, until you allow other computers |
njMule works behind a router without any of these ports open, but other clients can then not connect to you (a Low ID on eD2K, firewalled on Kad), which gives you fewer sources. To be reachable, forward 4662/TCP and 4672/UDP to your computer: njMule asks the router to do it with UPnP (on by default), NAT-PMP or PCP. You can choose other ports in the first-start wizard or in the Connection options. Ports and firewalls explains it all, including the port test.
Besides the eD2K servers, the Kad network and other clients, njMule connects to:
- GitHub, at each start and once a day, to look for a new version (you can turn that into "only when I ask"; see Updates);
- the addresses of server lists,
nodes.datfiles and IP filter lists, when you ask for them or set them to update; - DB-IP, once a month, while the countries of other clients are shown (on by default; see Privacy).
Web interface
The web interface works in a current browser and listens on port 4711. By default it answers on the computer njMule runs on only; see Web interface to reach it from other computers.
Building from source
To build njMule yourself you need JDK 25, and GraalVM to build native executables. See Building in the developer guide.