Integrations
aMuTorrent integrates with any *arr application (Sonarr, Radarr, Lidarr, Readarr, etc.) by providing a Torznab indexer API for searching and a qBittorrent-compatible API for download management.
Table of Contents
Section titled “Table of Contents”- Overview
- How It Works
- Step 1: Configure Categories
- Step 2: Add the Torznab Indexer
- Step 3: Add the Download Client
- Step 4: Docker Path Configuration
- Step 5: Automatic Search (Optional)
- Rate Limiting & Caching
- Troubleshooting
Overview
Section titled “Overview”aMuTorrent provides two APIs for *arr integration:
- Torznab Indexer API - Allows Sonarr/Radarr to search the ED2K network
- qBittorrent-Compatible Download Client API - Allows Sonarr/Radarr to manage downloads and import completed files
How It Works
Section titled “How It Works”- Searching: When Sonarr/Radarr searches for content, they query our Torznab API, which performs an ED2K search and returns results
- Downloading: When a release is selected, Sonarr/Radarr sends the ED2K link to our qBittorrent-compatible API
- Monitoring: Sonarr/Radarr monitors download progress via the Queue page
- Importing: Once complete, Sonarr/Radarr imports the file from the download directory
Step 1: Configure Categories
Section titled “Step 1: Configure Categories”This step is critical! Categories determine where files are downloaded, and Sonarr/Radarr need to know these paths.
In aMuTorrent:
Section titled “In aMuTorrent:”- Go to Categories page
- Click New Category
- Create categories for each *arr application:
For Sonarr (TV Shows):
- Title:
sonarr - Path:
/incoming/sonarr(or your preferred path)
For Radarr (Movies):
- Title:
radarr - Path:
/incoming/radarr(or your preferred path)
Important: Remember these exact category names and paths - you’ll need them when configuring the download client.
Step 2: Add the Torznab Indexer
Section titled “Step 2: Add the Torznab Indexer”The Torznab indexer allows *arr applications to search the ED2K network.
For Sonarr:
Section titled “For Sonarr:”- Go to Settings → Indexers
- Click + (Add Indexer)
- Select Torznab → Custom
- Configure:
| Field | Value |
|---|---|
| Name | aMule (or any name) |
| URL | http://YOUR-SERVER:4000/indexer/amule/api |
| API Key | Your web UI password (see note below) |
| Categories | 5000 (TV) or leave default |
| Enable Automatic Search | Your preference (see Automatic Search) |
| Enable Interactive Search | Yes |
- Click Test to verify connection
- Click Save
For Radarr:
Section titled “For Radarr:”- Go to Settings → Indexers
- Click + (Add Indexer)
- Select Torznab → Custom
- Configure:
| Field | Value |
|---|---|
| Name | aMule (or any name) |
| URL | http://YOUR-SERVER:4000/indexer/amule/api |
| API Key | Your web UI password (see note below) |
| Categories | 2000 (Movies) or leave default |
| Enable Automatic Search | Your preference |
| Enable Interactive Search | Yes |
- Click Test to verify connection
- Click Save
Note: Replace
YOUR-SERVERwith your actual server IP/hostname. If running in Docker, use the container name orhost.docker.internal.
Authentication: If web UI authentication is enabled in the Web Controller, the API Key field is required. Use the same password you use to log into the web interface. If authentication is disabled, leave the API Key field empty.
Step 3: Add the Download Client
Section titled “Step 3: Add the Download Client”The qBittorrent-compatible API allows *arr applications to manage downloads.
For Sonarr:
Section titled “For Sonarr:”- Go to Settings → Download Clients
- Click + (Add Download Client)
- Select qBittorrent
- Configure:
| Field | Value |
|---|---|
| Name | aMule (or any name) |
| Host | YOUR-SERVER (IP or hostname) |
| Port | 4000 |
| Username | Any value, e.g. admin (see note below) |
| Password | Your web UI password (see note below) |
| Category | sonarr (must match category created in Step 1) |
| Remove Completed | Your preference |
- Click Test to verify connection
- Click Save
For Radarr:
Section titled “For Radarr:”- Go to Settings → Download Clients
- Click + (Add Download Client)
- Select qBittorrent
- Configure:
| Field | Value |
|---|---|
| Name | aMule (or any name) |
| Host | YOUR-SERVER (IP or hostname) |
| Port | 4000 |
| Username | Any value, e.g. admin (see note below) |
| Password | Your web UI password (see note below) |
| Category | radarr (must match category created in Step 1) |
| Remove Completed | Your preference |
- Click Test to verify connection
- Click Save
Authentication: If web UI authentication is enabled in the Web Controller, the Username and Password fields are required. The username can be any value (it’s ignored), but the password must match your web UI login password. If authentication is disabled, leave both fields empty.
Step 4: Docker Path Configuration
Section titled “Step 4: Docker Path Configuration”If you’re running aMule and/or *arr applications in Docker, you need to ensure all containers can access the download directories.
Understanding the Problem
Section titled “Understanding the Problem”Each Docker container has its own filesystem. When aMule downloads a file to /incoming/sonarr/file.mkv, Sonarr needs to access that same file. If Sonarr is in a different container, it might see that path differently.
Solution 1: Shared Volume Mounts
Section titled “Solution 1: Shared Volume Mounts”Mount the same download directory in aMule and *arr containers:
services: amule: volumes: - ./data/aMule/config:/home/amule/.aMule - ./data/aMule/incoming:/incoming - ./data/aMule/temp:/temp
sonarr: volumes: - ./data/aMule/incoming:/incoming # Same path as aMule! - ./data/sonarr/config:/config
radarr: volumes: - ./data/aMule/incoming:/incoming # Same path as aMule! - ./data/radarr/config:/configWith this setup, aMule and *arr containers all see /incoming as the same directory on the host (./data/aMule/incoming).
Note: The web controller doesn’t need access to the downloads directory - only aMule (which does the actual downloading) and Sonarr/Radarr (which import the files) need it.
Solution 2: Remote Path Mappings
Section titled “Solution 2: Remote Path Mappings”If containers use different internal paths for the same host directory, configure Remote Path Mappings in Sonarr/Radarr.
When do you need this? When aMule and Sonarr/Radarr mount the same host folder to different container paths.
Example Setup:
Host directory: ./data/aMule/incoming
aMule container: mounted as /incomingSonarr container: mounted as /data/incomingWhen aMule finishes downloading, it reports the file path as /incoming/sonarr/show.mkv. But Sonarr sees that same file as /data/incoming/sonarr/show.mkv. Remote Path Mapping tells Sonarr how to translate the path.
Configure in Sonarr/Radarr:
- Go to Settings → Download Clients
- Scroll to Remote Path Mappings
- Click + (Add Mapping)
- Configure:
| Field | Value |
|---|---|
| Host | YOUR-SERVER (same as download client host) |
| Remote Path | /incoming/ (path reported by aMule/download client) |
| Local Path | /data/incoming/ (path as Sonarr sees it) |
Sonarr will now translate /incoming/sonarr/show.mkv → /data/incoming/sonarr/show.mkv
Native Installation (No Docker)
Section titled “Native Installation (No Docker)”If aMule and *arr applications all run on the same machine without Docker:
- Use the same absolute paths everywhere
- No Remote Path Mappings needed
- Ensure file permissions allow all applications to read/write
Step 5: Automatic Search (Optional)
Section titled “Step 5: Automatic Search (Optional)”You can configure automatic searches to periodically check for missing content.
In aMuTorrent:
Section titled “In aMuTorrent:”-
Go to Settings
-
Enable Sonarr Integration and/or Radarr Integration
-
Configure:
- URL:
http://YOUR-SERVER:8989(Sonarr) orhttp://YOUR-SERVER:7878(Radarr) - API Key: Found in *arr Settings → General → Security
- Search Interval: Hours between automatic searches (e.g.,
6)
- URL:
-
Click Save
What This Does:
Section titled “What This Does:”At the configured interval, the Web Controller will:
- Connect to Sonarr/Radarr API
- Trigger a search for missing episodes/movies
- Sonarr/Radarr will then query the Torznab indexer for results
Required: Enable Automatic Search on the Indexer
Section titled “Required: Enable Automatic Search on the Indexer”For this feature to work, you must enable Automatic Search on the aMule indexer in Sonarr/Radarr:
- Go to Settings → Indexers
- Edit the aMule indexer
- Ensure Enable Automatic Search is checked
- Click Save
Rate Limiting & Caching
Section titled “Rate Limiting & Caching”ED2K servers have flood protection that can temporarily ban clients making too many searches. The Web Controller implements protective measures:
Rate Limiting
Section titled “Rate Limiting”- Default: 10 seconds between consecutive ED2K searches
- Configurable via:
ED2K_SEARCH_DELAY_MSenvironment variable - Recommendation: 5000-10000ms (5-10 seconds)
Troubleshooting
Section titled “Troubleshooting””Connection refused” when testing indexer/download client
Section titled “”Connection refused” when testing indexer/download client”- Verify the Web Controller is running
- Check the URL/host is correct
- If using Docker, ensure network connectivity between containers
- Check firewall rules
”Unauthorized” or “Invalid API key” errors
Section titled “”Unauthorized” or “Invalid API key” errors”- If web UI authentication is enabled, you must provide credentials:
- Torznab indexer: Enter your web UI password in the “API Key” field
- qBittorrent download client: Enter any username and your web UI password
- Verify the password matches exactly (case-sensitive)
- If authentication is disabled in the Web Controller, leave credential fields empty
Automatic search not triggering
Section titled “Automatic search not triggering”- Verify API key is correct in Settings
- Check Sonarr/Radarr URL is accessible from Web Controller
- Verify search interval is set (not 0)
- Check server logs for errors