mularr
Docker app from JoeCarl's Repository
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).
Readme
View on GitHubLogo
Mularr
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 can also use the Telegram Network as a download provider, set up from its own Telegram section. This requires a real account (not a bot) to access groups/channels with media files.
Mularr dashboard (Windows XP theme) Transfers (Windows XP theme)
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.
- Hispashare Provider: Search the Hispashare catalogue of eD2k releases alongside the aMule network.
- 🛡️ 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, Windows 11, Hacker and Modern.
- 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
Mularr ships with multiple themes:
Modern & Hacker Mode
Dashboard (Modern theme) Dashboard (Hacker Mode theme)
Dashboard view
Windows XP
Dashboard (Windows XP theme) Transfers (Windows XP theme) Settings (Windows XP theme)
Dashboard, Transfers and Settings view
Windows Classic
Dashboard (Windows Classic theme) Transfers (Windows Classic theme) Settings (Windows Classic theme)
Dashboard, Transfers and Settings view
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
Automatic downloads & RSS sync
eD2k has no RSS feed for Sonarr/Radarr to poll, so Mularr builds one. In Extensions, add a Sonarr or Radarr extension with the instance URL and API key: Mularr periodically searches for the titles in its Wanted > Missing list and publishes the matches in its Torznab feed.
The extension also chooses which search providers that app uses, for the sync and for its own automatic searches.
Unlike eD2k, Telegram and Hispashare do report new releases, and Mularr can add them to the same feed: enable it in the Hispashare extension settings or with the Indexer feed toggle in the Telegram view. The Indexer Feed view shows the state of the feed.
Hispashare provider
Hispashare catalogues eD2k releases by title, with IMDb ids. In Extensions, add a Hispashare extension with the personal token from hispashare.org/token. Its releases then show up in searches next to aMule's, linked to their Hispashare page, and are downloaded by aMule like any other eD2k file. The Sonarr/Radarr sync looks titles up by IMDb id on Hispashare when it knows it, and so do their automatic searches: with Hispashare enabled the indexer accepts IMDb ids and answers them from the Hispashare catalogue.
The API allows 250 requests per hour per token. Mularr caches identical searches for 15 minutes and stops background searches when fewer than 30 requests are left, keeping them for the ones you run yourself.
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.
All runtime data (SQLite database, aMule config and downloads) is kept in dev-data/ at the repository root, which is gitignored and mirrors the /app/data volume of the production image.
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
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:
- Fork the Project
- Create your feature branch & Commit your changes
- Open a Pull Request
Any contributions you make are greatly appreciated.
License
MIT
Made with ❤️ for the P2P Community
Media gallery
1 / 2Requirements
Categories
Related apps
Explore more like this
Explore allDetails
ghcr.io/joecarl/mularr:latestRuntime arguments
- Web UI
http://[IP]:[PORT:8940]- Network
bridge- Shell
bash- Privileged
- false
Template configuration
Port for the Mularr web interface and API.
- Target
- 8940
- Default
- 8940
- Value
- 8940
aMule eD2k TCP port. Forward it in your router to get a HighID. Remove if routing through Gluetun.
- Target
- 4662
- Default
- 4662
- Value
- 4662
aMule eD2k UDP port (Kad and extended protocol). Forward it in your router. Remove if routing through Gluetun.
- Target
- 4672
- Default
- 4672
- Value
- 4672
Persistent data: SQLite database and aMule configuration.
- Target
- /app/data
- Default
- /mnt/user/appdata/mularr
- Value
- /mnt/user/appdata/mularr
Download storage. Completed files go to /downloads, in-progress files to /downloads/.incomplete (see AMULE_INCOMING_DIR / AMULE_TEMP_DIR).
- Target
- /downloads
- Default
- /mnt/user/downloads/mularr
- Value
- /mnt/user/downloads/mularr
Username for the web UI and the qBittorrent-compatible API. Leave both auth fields empty to disable authentication (not recommended).
Password for the web UI and the qBittorrent-compatible API.
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.
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.
Directory (inside the container) where completed downloads are stored.
- Default
- /downloads
- Value
- /downloads
Directory (inside the container) for in-progress downloads.
- Default
- /downloads/.incomplete
- Value
- /downloads/.incomplete
Semicolon-separated absolute container paths to share recursively. When set, shared directories are managed at startup and become read-only in Settings.
Semicolon-separated absolute container paths to share (non-recursive).
How often (in hours) the monitoring service automatically restarts the aMule daemon. Set to 0 to disable.
- Default
- 12
- Value
- 12
Telegram bot token for notifications about system events and transfer completions.
Telegram chat ID for notifications.
Telegram topic ID for notifications (optional, for forum-style groups).
Set to true when routing this container through a Gluetun container so the VPN forwarded port is automatically applied to aMule.
- Default
- false
- Value
- false
Gluetun control server API URL.
- Default
- http://localhost:8000/v1
- Value
- http://localhost:8000/v1
When Gluetun forwards multiple ports, index of the 'ports' array to use instead of the default 'port' value. Leave empty for default behavior.