Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ A unified download manager for aMule, rTorrent, qBittorrent, Deluge, and Transmi

### Integrations
- **Prowlarr Search** - Search torrents across multiple indexers (results go to any connected BitTorrent client)
- **Sonarr/Radarr** - Torznab indexer and qBittorrent-compatible API for aMule
- **Sonarr/Radarr/Lidarr/Readarr** - Torznab indexer and qBittorrent-compatible API for aMule
- **Push Notifications** - Apprise integration for 80+ notification services
- **Custom Event Scripts** - Run your own scripts on download events

Expand Down Expand Up @@ -132,7 +132,7 @@ Open `http://localhost:4000` and complete the setup wizard.
| [Notifications](./docs/NOTIFICATIONS.md) | Push notifications via Apprise (80+ services) |
| [Custom Scripting](./scripts/README.md) | Run custom scripts on download events |
| [GeoIP Setup](./docs/GEOIP.md) | Display peer locations with MaxMind databases |
| [Sonarr/Radarr Integration](./docs/INTEGRATIONS.md) | Complete guide for *arr applications setup |
| [*arr Integration](./docs/INTEGRATIONS.md) | Complete guide for Sonarr, Radarr, Lidarr, Readarr, and other *arr apps |
| [User Management](./docs/USERS.md) | Authentication, capabilities, SSO, and API keys |
| [API Reference](./docs/API.md) | REST API and WebSocket protocol |
| [Development Guide](./docs/DEVELOPMENT.md) | Building, project structure, contributing |
Expand Down Expand Up @@ -199,7 +199,7 @@ Open `http://localhost:4000` and complete the setup wizard.
- Test your service configuration via the Notifications page
- See [Notifications Guide](./docs/NOTIFICATIONS.md) for setup details

**Sonarr/Radarr can't find downloaded files?**
**Sonarr/Radarr/Lidarr/Readarr can't find downloaded files?**
- Configure categories with correct download paths
- Set up Remote Path Mappings if using Docker
- See [Integration Guide](./docs/INTEGRATIONS.md) for details
Expand Down
34 changes: 31 additions & 3 deletions docs/CONFIGURATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ This guide covers all configuration options for aMuTorrent.
>
> **Prowlarr:** Search torrents directly from the web UI. See [Prowlarr Setup](./PROWLARR.md).
>
> ***arr Apps:** Use aMuTorrent as a Torznab indexer and qBittorrent-compatible download client for Sonarr, Radarr, and other *arr applications. See [*arr Integration](./INTEGRATIONS.md).
> ***arr Apps:** Use aMuTorrent as a Torznab indexer and qBittorrent-compatible download client for Sonarr, Radarr, Lidarr, Readarr, and other *arr applications. See [*arr Integration](./INTEGRATIONS.md).
>
> **Notifications:** Get notified when downloads complete or other events occur. See [Notifications](./NOTIFICATIONS.md).
>
Expand All @@ -34,7 +34,7 @@ When you first access the web interface (or if no configuration exists), an inte
2. **Security** - Configure web interface authentication (password protection)
3. **Download Clients** - Configure aMule, rTorrent, qBittorrent, Deluge, and/or Transmission connections (with testing)
4. **Directories** - Set data, logs, and GeoIP directories
5. **Integrations** - Optionally enable Prowlarr, Sonarr, and Radarr
5. **Integrations** - Optionally enable Prowlarr, Sonarr, Radarr, Lidarr, and Readarr
6. **Review & Save** - Test all settings and save configuration

The wizard will:
Expand All @@ -60,7 +60,7 @@ When authentication is enabled, the password must meet these requirements:
After initial setup, access the Settings page anytime via the sidebar (desktop) or bottom navigation bar (mobile). The Settings page allows you to:

- View and edit all configuration options
- Test individual configuration sections (aMule, rTorrent, qBittorrent, Deluge, Transmission, Directories, Prowlarr, Sonarr, Radarr)
- Test individual configuration sections (aMule, rTorrent, qBittorrent, Deluge, Transmission, slskd, Directories, Prowlarr, Sonarr, Radarr, Lidarr, Readarr)
- Test all configuration at once before saving
- Enable/disable integrations with toggle switches

Expand Down Expand Up @@ -94,6 +94,8 @@ Sensitive fields include:
- `PROWLARR_API_KEY` - Prowlarr API key
- `SONARR_API_KEY` - Sonarr API key
- `RADARR_API_KEY` - Radarr API key
- `LIDARR_API_KEY` - Lidarr API key
- `READARR_API_KEY` - Readarr API key

When these are set via environment variables:
- The environment variable **always takes precedence**
Expand Down Expand Up @@ -211,6 +213,16 @@ services:
- RADARR_API_KEY=your_api_key # Locks UI editing
- RADARR_SEARCH_INTERVAL_HOURS=6

# Lidarr Integration (optional)
- LIDARR_URL=http://lidarr:8686
- LIDARR_API_KEY=your_api_key # Locks UI editing
- LIDARR_SEARCH_INTERVAL_HOURS=6

# Readarr Integration (optional)
- READARR_URL=http://readarr:8787
- READARR_API_KEY=your_api_key # Locks UI editing
- READARR_SEARCH_INTERVAL_HOURS=6

# Skip wizard (optional - only if all settings provided)
- SKIP_SETUP_WIZARD=false
```
Expand Down Expand Up @@ -326,6 +338,22 @@ services:
| `RADARR_API_KEY` | - | Radarr API key (locks UI editing) |
| `RADARR_SEARCH_INTERVAL_HOURS` | `6` | Hours between automatic searches |

#### Lidarr Integration

| Variable | Default | Description |
|----------|---------|-------------|
| `LIDARR_URL` | - | Lidarr base URL (auto-enables integration) |
| `LIDARR_API_KEY` | - | Lidarr API key (locks UI editing) |
| `LIDARR_SEARCH_INTERVAL_HOURS` | `6` | Hours between automatic searches |

#### Readarr Integration

| Variable | Default | Description |
|----------|---------|-------------|
| `READARR_URL` | - | Readarr base URL (auto-enables integration) |
| `READARR_API_KEY` | - | Readarr API key (locks UI editing) |
| `READARR_SEARCH_INTERVAL_HOURS` | `6` | Hours between automatic searches |

#### Download History

| Variable | Default | Description |
Expand Down
86 changes: 47 additions & 39 deletions docs/INTEGRATIONS.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,23 +20,23 @@ aMuTorrent integrates with any *arr application (Sonarr, Radarr, Lidarr, Readarr

aMuTorrent provides two APIs for *arr integration:

1. **Torznab Indexer API** - Allows Sonarr/Radarr to search the ED2K network
2. **qBittorrent-Compatible Download Client API** - Allows Sonarr/Radarr to manage downloads and import completed files
1. **Torznab Indexer API** - Allows Sonarr/Radarr/Lidarr/Readarr to search the ED2K network
2. **qBittorrent-Compatible Download Client API** - Allows Sonarr/Radarr/Lidarr/Readarr to manage downloads and import completed files

---

## How It Works

1. **Searching:** When Sonarr/Radarr searches for content, they query our Torznab API, which performs an ED2K search and returns results
2. **Downloading:** When a release is selected, Sonarr/Radarr sends the ED2K link to our qBittorrent-compatible API
3. **Monitoring:** Sonarr/Radarr monitors download progress via the Queue page
4. **Importing:** Once complete, Sonarr/Radarr imports the file from the download directory
1. **Searching:** When Sonarr/Radarr/Lidarr/Readarr searches for content, they query our Torznab API, which performs an ED2K search and returns results
2. **Downloading:** When a release is selected, Sonarr/Radarr/Lidarr/Readarr sends the ED2K link to our qBittorrent-compatible API
3. **Monitoring:** Sonarr/Radarr/Lidarr/Readarr monitors download progress via the Queue page
4. **Importing:** Once complete, Sonarr/Radarr/Lidarr/Readarr imports the file from the download directory

---

## Step 1: Configure Categories

**This step is critical!** Categories determine where files are downloaded, and Sonarr/Radarr need to know these paths.
**This step is critical!** Categories determine where files are downloaded, and Sonarr/Radarr/Lidarr/Readarr need to know these paths.

### In aMuTorrent:

Expand All @@ -52,6 +52,14 @@ aMuTorrent provides two APIs for *arr integration:
- **Title:** `radarr`
- **Path:** `/downloads/radarr` (or your preferred path)

**For Lidarr (Music):**
- **Title:** `lidarr`
- **Path:** `/downloads/lidarr` (or your preferred path)

**For Readarr (Books):**
- **Title:** `readarr`
- **Path:** `/downloads/readarr` (or your preferred path)

> **Important:** Remember these exact category names and paths - you'll need them when configuring the download client.

---
Expand All @@ -60,7 +68,7 @@ aMuTorrent provides two APIs for *arr integration:

The Torznab indexer allows *arr applications to search the ED2K network.

### For Sonarr:
### For Sonarr / Radarr / Lidarr / Readarr:

1. Go to **Settings** → **Indexers**
2. Click **+** (Add Indexer)
Expand All @@ -79,36 +87,36 @@ The Torznab indexer allows *arr applications to search the ED2K network.
5. Click **Test** to verify connection
6. Click **Save**

### For Radarr:

1. Go to **Settings** → **Indexers**
2. Click **+** (Add Indexer)
3. Select **Torznab** → **Custom**
4. Configure:
Use the same Torznab endpoint in all *arr apps:

| 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 |

5. Click **Test** to verify connection
6. Click **Save**
Suggested category presets by app:

| App | Suggested Torznab Category |
|-----|----------------------------|
| Sonarr | 5000 (TV) |
| Radarr | 2000 (Movies) |
| Lidarr | 3000 (Audio) |
| Readarr | 7000 (Books) |

> **Note:** Replace `YOUR-SERVER` with your actual server IP/hostname. If running in Docker, use the container name or `host.docker.internal`.

> **Authentication:** If web UI authentication is enabled, the **API Key** field is required. Use your personal API key (found in Settings → Sonarr/Radarr integration info). If authentication is disabled, leave the API Key field empty.
> **Authentication:** If web UI authentication is enabled, the **API Key** field is required. Use your personal API key (found in Settings → *arr integration info). If authentication is disabled, leave the API Key field empty.

---

## Step 3: Add the Download Client

The qBittorrent-compatible API allows *arr applications to manage downloads.

### For Sonarr:
### For Sonarr / Radarr / Lidarr / Readarr:

1. Go to **Settings** → **Download Clients**
2. Click **+** (Add Download Client)
Expand All @@ -128,12 +136,7 @@ The qBittorrent-compatible API allows *arr applications to manage downloads.
5. Click **Test** to verify connection
6. Click **Save**

### For Radarr:

1. Go to **Settings** → **Download Clients**
2. Click **+** (Add Download Client)
3. Select **qBittorrent**
4. Configure:
Use the same download client endpoint in all *arr apps:

| Field | Value |
|-------|-------|
Expand All @@ -142,11 +145,16 @@ The qBittorrent-compatible API allows *arr applications to manage downloads.
| **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 |

5. Click **Test** to verify connection
6. Click **Save**
Set category by app (must match Step 1):

| App | Category |
|-----|----------|
| Sonarr | `sonarr` |
| Radarr | `radarr` |
| Lidarr | `lidarr` |
| Readarr | `readarr` |

> **Authentication:** If web UI authentication is enabled, fill **either** the API Key field (preferred, newer Sonarr/Radarr) **or** the Username + Password fields — see the next section.

Expand Down Expand Up @@ -197,13 +205,13 @@ services:

With this setup, aMule and *arr containers all see `/downloads` 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.
> **Note:** The web controller doesn't need access to the downloads directory - only aMule (which does the actual downloading) and Sonarr/Radarr/Lidarr/Readarr (which import the files) need it.

### Solution 2: Remote Path Mappings

If containers use different internal paths for the same host directory, configure **Remote Path Mappings** in Sonarr/Radarr.
If containers use different internal paths for the same host directory, configure **Remote Path Mappings** in Sonarr/Radarr/Lidarr/Readarr.

**When do you need this?** When aMule and Sonarr/Radarr mount the same host folder to *different* container paths.
**When do you need this?** When aMule and Sonarr/Radarr/Lidarr/Readarr mount the same host folder to *different* container paths.

**Example Setup:**

Expand All @@ -216,7 +224,7 @@ Sonarr container: mounted as /data/downloads

When aMule finishes downloading, it reports the file path as `/downloads/sonarr/show.mkv`. But Sonarr sees that same file as `/data/downloads/sonarr/show.mkv`. Remote Path Mapping tells Sonarr how to translate the path.

**Configure in Sonarr/Radarr:**
**Configure in Sonarr/Radarr/Lidarr/Readarr:**

1. Go to **Settings** → **Download Clients**
2. Scroll to **Remote Path Mappings**
Expand Down Expand Up @@ -247,9 +255,9 @@ You can configure automatic searches to periodically check for missing content.
### In aMuTorrent:

1. Go to **Settings**
2. Enable **Sonarr Integration** and/or **Radarr Integration**
2. Enable **Sonarr Integration**, **Radarr Integration**, **Lidarr Integration**, and/or **Readarr Integration**
3. Configure:
- **URL:** `http://YOUR-SERVER:8989` (Sonarr) or `http://YOUR-SERVER:7878` (Radarr)
- **URL:** `http://YOUR-SERVER:8989` (Sonarr), `http://YOUR-SERVER:7878` (Radarr), `http://YOUR-SERVER:8686` (Lidarr), or `http://YOUR-SERVER:8787` (Readarr)
- **API Key:** Found in *arr Settings → General → Security
- **Search Interval:** Hours between automatic searches (e.g., `6`)

Expand All @@ -258,13 +266,13 @@ You can configure automatic searches to periodically check for missing content.
### What This Does:

At the configured interval, the Web Controller will:
1. Connect to Sonarr/Radarr API
2. Trigger a search for missing episodes/movies
3. Sonarr/Radarr will then query the Torznab indexer for results
1. Connect to Sonarr/Radarr/Lidarr/Readarr API
2. Trigger a search for missing episodes/movies/albums/books
3. Sonarr/Radarr/Lidarr/Readarr will then query the Torznab indexer for results

### Required: Enable Automatic Search on the Indexer

For this feature to work, you **must** enable **Automatic Search** on the aMule indexer in Sonarr/Radarr:
For this feature to work, you **must** enable **Automatic Search** on the aMule indexer in Sonarr/Radarr/Lidarr/Readarr:

1. Go to **Settings** → **Indexers**
2. Edit the aMule indexer
Expand Down Expand Up @@ -306,6 +314,6 @@ ED2K servers have flood protection that can temporarily ban clients making too m
### Automatic search not triggering

1. Verify API key is correct in Settings
2. Check Sonarr/Radarr URL is accessible from Web Controller
2. Check Sonarr/Radarr/Lidarr/Readarr URL is accessible from Web Controller
3. Verify search interval is set (not 0)
4. Check server logs for errors
Loading