mularr

mularr

apps.detail.types.app from JoeCarl's Repository

apps.detail.sections.overview

Mularr is a powerful integration for aMule that provides a functional web interface with a nostalgia-infused retro touch. It bridges the gap between classic P2P and modern automation tools by offering qBittorrent-compatible APIs and Torznab indexers, making it seamless to use aMule with apps like Sonarr and Radarr.

Key features:

  • *Arr integration: native support for Sonarr/Radarr via qBittorrent and Torznab API compatibility (API Path: /api/as-torznab-indexer, URL Base: /api/as-qbittorrent).
  • Bundled aMule daemon: no separate aMule container needed.
  • Telegram integration: download-complete notifications via bot, and optional use of the Telegram network as a download provider.
  • VPN ready: built-in Gluetun health checks and automatic forwarded-port updates (set GLUETUN_ENABLED=true and route this container through your Gluetun container).
  • Retro-style responsive web UI with multiple themes (Windows XP Classic, Windows 11 Experimental).

Notes:

  • The container runs as UID 1000 by default. On most Unraid systems this works out of the box; if you hit permission errors on your shares, add '--user 99:100' in Extra Parameters to run as nobody:users.
  • If no AUTH_USERNAME/AUTH_PASSWORD is set, the web UI and API are open without authentication. Set them if the port is reachable from untrusted networks.
  • For a HighID on the eD2k network, keep the eD2k TCP/UDP port mappings and forward them in your router (not needed when routing through Gluetun with port forwarding).

Logo

Mularr

Docker Image

Mularr is a powerful integration for aMule that provides a functional web interface with a nostalgia-infused retro touch. It bridges the gap between classic P2P and modern automation tools by offering qBittorrent-compatible APIs and Torznab indexers, making it seamless to use aMule with apps like Sonarr and Radarr.

It also includes an extension to use the Telegram Network as a download provider. This requires a real account (not a bot) to access groups/channels with media files.

Overview


Key Features

  • *Arr Integration: Native support for Sonarr/Radarr via qBittorrent & Torznab API compatibility.
  • Docker Ready: Easy deployment using Docker and Docker Compose.
  • Telegram Integration:
    • Notifications: Get notified of your downloads via a Telegram bot.
    • Provider: Use the Telegram network for searching and downloading files.
  • 🛡️ VPN Ready: Built-in support for Gluetun health checks and automatic port updates.
  • Retro-Style Web Interface: A fully responsive UI with a nostalgic Windows XP feel. Includes multiple themes like Classic and Windows 11 (Experimental). Built with Chispa.

Quick Start with Docker 🐳

The easiest way to get Mularr running is using Docker Compose:

services:
    mularr:
        image: ghcr.io/joecarl/mularr
        container_name: mularr
        restart: unless-stopped
        ports:
            - '8940:8940'
        volumes:
            - ./data:/app/data

    # Check docker-compose.example.yml for a full configuration guide

Run it with:

docker-compose up -d

Access the web UI at http://localhost:8940.


Screenshots

Transfers Settings


Integrate with Sonarr / Radarr

You can configure Mularr as both an indexer and a download client.

[!TIP] In Sonarr/Radarr's configuration forms, click Show Advanced to reveal all required fields.

To configure as indexer use the following settings:

  • Type: Torznab
  • API Path: /api/as-torznab-indexer

To configure as download client use the following settings:

  • Type: qBittorrent
  • URL Base: /api/as-qbittorrent

Tech Stack

Mularr is built primarily with TypeScript.

Component Technology
Frontend Chispa + Vite
Backend Node.js + Express
Database SQLite (better-sqlite3)

💻 Development Setup

If you want to contribute or run Mularr you need docker & VS Code devcontainers. Open the project in the devcontainer and it automatically installs the needed dependencies.

Then you can start the application in dev mode:

1. Backend Setup

cd backend
npm run dev

2. Frontend Setup

cd frontend
npm run dev

[!WARNING] Do not run npm install in the root folder. Install dependencies separately in backend/ and frontend/.


Production Build

The included Dockerfile handles everything for you. It builds the frontend and bundles it with the backend for a single-image deployment.

docker build -t mularr .

Contributing

To contribute, follow the standard process:

  1. Fork the Project
  2. Create your feature branch & Commit your changes
  3. Open a Pull Request

Any contributions you make are greatly appreciated.


License

MIT


Made with ❤️ for the P2P Community

apps.detail.sections.mediaGallery

1 / 2

apps.marketingCta.appInstallTitle

apps.marketingCta.appInstallDescription

apps.installHelp.stepOpen apps.installHelp.stepSearchApp apps.installHelp.stepReview apps.installHelp.stepInstall

apps.detail.sections.requirements

Optional: a Gluetun container if you want to route traffic through a VPN.

apps.detail.sections.categories

apps.detail.sections.related

apps.detail.sections.details

apps.detail.details.repository
ghcr.io/joecarl/mularr:latest
apps.detail.details.lastUpdated2026-08-08
apps.detail.details.firstSeen2026-08-05

apps.detail.sections.runtime

apps.detail.details.webui
http://[IP]:[PORT:8940]
apps.detail.details.network
bridge
apps.detail.details.shell
bash
apps.detail.details.privileged
false

apps.detail.sections.configuration

WebUI PortPorttcp

Port for the Mularr web interface and API.

apps.detail.config.target
8940
apps.detail.config.default
8940
apps.detail.config.value
8940
eD2k TCP PortPorttcp

aMule eD2k TCP port. Forward it in your router to get a HighID. Remove if routing through Gluetun.

apps.detail.config.target
4662
apps.detail.config.default
4662
apps.detail.config.value
4662
eD2k UDP PortPortudp

aMule eD2k UDP port (Kad and extended protocol). Forward it in your router. Remove if routing through Gluetun.

apps.detail.config.target
4672
apps.detail.config.default
4672
apps.detail.config.value
4672
AppdataPathrw

Persistent data: SQLite database and aMule configuration.

apps.detail.config.target
/app/data
apps.detail.config.default
/mnt/user/appdata/mularr
apps.detail.config.value
/mnt/user/appdata/mularr
DownloadsPathrw

Download storage. Completed files go to /downloads, in-progress files to /downloads/.incomplete (see AMULE_INCOMING_DIR / AMULE_TEMP_DIR).

apps.detail.config.target
/downloads
apps.detail.config.default
/mnt/user/downloads/mularr
apps.detail.config.value
/mnt/user/downloads/mularr
AUTH_USERNAMEVariable

Username for the web UI and the qBittorrent-compatible API. Leave both auth fields empty to disable authentication (not recommended).

AUTH_PASSWORDVariable

Password for the web UI and the qBittorrent-compatible API.

API_KEYVariable

API key to authenticate requests from other apps without login (needed for the Torznab integration with Sonarr/Radarr). Can also be used as password with username 'apikey' for the qBittorrent API.

JWT_SECRETVariable

Secret used to sign JSON Web Tokens. If not set, a random secret is generated on startup and existing sessions are invalidated after each restart.

AMULE_INCOMING_DIRVariable

Directory (inside the container) where completed downloads are stored.

apps.detail.config.default
/downloads
apps.detail.config.value
/downloads
AMULE_TEMP_DIRVariable

Directory (inside the container) for in-progress downloads.

apps.detail.config.default
/downloads/.incomplete
apps.detail.config.value
/downloads/.incomplete
AMULE_SHAREDDIR_RECURSIVEVariable

Semicolon-separated absolute container paths to share recursively. When set, shared directories are managed at startup and become read-only in Settings.

AMULE_SHAREDDIR_EXPLICITVariable

Semicolon-separated absolute container paths to share (non-recursive).

AMULE_RESTART_INTERVAL_HOURSVariable

How often (in hours) the monitoring service automatically restarts the aMule daemon. Set to 0 to disable.

apps.detail.config.default
12
apps.detail.config.value
12
TELEGRAM_BOT_TOKENVariable

Telegram bot token for notifications about system events and transfer completions.

TELEGRAM_CHAT_IDVariable

Telegram chat ID for notifications.

TELEGRAM_TOPIC_IDVariable

Telegram topic ID for notifications (optional, for forum-style groups).

GLUETUN_ENABLEDVariable

Set to true when routing this container through a Gluetun container so the VPN forwarded port is automatically applied to aMule.

apps.detail.config.default
false
apps.detail.config.value
false
GLUETUN_APIVariable

Gluetun control server API URL.

apps.detail.config.default
http://localhost:8000/v1
apps.detail.config.value
http://localhost:8000/v1
GLUETUN_PORT_INDEXVariable

When Gluetun forwards multiple ports, index of the 'ports' array to use instead of the default 'port' value. Leave empty for default behavior.