iplayer-arr

iplayer-arr

Docker app from Will_Luck's Repository

Overview

BBC iPlayer Newznab indexer and SABnzbd-compatible download client for Sonarr. Lets Sonarr discover and grab BBC iPlayer content with no separate Newznab indexer required and no Perl/get-iplayer dependency. Calls the BBC iBL API directly and remuxes HLS to MP4 with ffmpeg. Includes an optional WireGuard VPN client (built on the hotio base image) for use outside the UK. By default the VPN is disabled. Set VPN_ENABLED=true and configure the VPN settings in the advanced section if you are running from outside the UK -- BBC iPlayer requires a UK IP address. After installing, open the WebUI and follow the Setup Wizard to connect Sonarr.

iplayer-arr

BBC iPlayer download manager that plugs into Sonarr as both an indexer and download client.

CI

Gitea CI Release Licence GHCR Docker Hub Pulls Image Size Platforms

Dashboard

How it works

Most iPlayer download tools grab programmes by URL and leave you with a file to sort out yourself. iplayer-arr speaks Sonarr's language natively -- it presents a Newznab indexer for search and a SABnzbd download client for fetching, so Sonarr treats it like any other indexer/downloader pair.

The hard part is episode numbering. BBC iPlayer doesn't follow a consistent scheme -- some shows have full series/episode metadata, others only have a position index within a series, and daily shows often have nothing but an air date. Sonarr expects TheTVDB-style S01E03 numbering, and the two rarely agree out of the box.

iplayer-arr solves this with a 4-tier resolution chain:

  1. Full -- BBC provides series + episode number, used directly
  2. Position -- no episode number, but the programme has a position in its series (e.g. 3rd of 6), mapped to S01E03
  3. Date -- no numbering at all, air date used as the episode identifier (2026.01.15)
  4. Manual -- title only, last resort

When the auto-resolved numbering still doesn't match TheTVDB (common with specials, reboots, or shows where the BBC counts differently), per-show overrides let you adjust series/episode offsets, force date-based numbering, or remap programme names -- all from the web UI.

Features

  • Newznab indexer + SABnzbd download client in one container
  • 4-tier episode identity resolution with per-show overrides
  • HLS stream download with quality selection (1080p/720p/540p/396p)
  • Real-time dashboard with SSE progress and download history
  • Built-in WireGuard VPN via hotio base image (off by default)
  • Setup wizard walks you through Sonarr configuration
  • BBC iPlayer search with thumbnails and one-click download
  • System health page with geo check, disk usage, ffmpeg status

Quick Start

Important: You must hold a valid UK TV Licence to legally access BBC iPlayer content via iplayer-arr. iplayer-arr does not verify this and assumes you are compliant. See DISCLAIMER.md for full legal terms.

Running Unraid? Install the Community Applications template from Will-Luck/unraid-templates rather than the docker run command below. The template pre-configures the VPN variables and the NET_ADMIN capabilities required when VPN_ENABLED=true.

docker run -d \
  --name iplayer-arr \
  -p 62001:62001 \
  -v iplayer-arr-config:/config \
  -v /path/to/downloads:/downloads \
  -e TZ=Europe/London \
  -e PORT=62001 \
  ghcr.io/will-luck/iplayer-arr:latest

Or with Docker Compose:

services:
  iplayer-arr:
    image: ghcr.io/will-luck/iplayer-arr:latest
    container_name: iplayer-arr
    ports:
      - 62001:62001
    volumes:
      - iplayer-arr-config:/config
      - /path/to/downloads:/downloads
    environment:
      - TZ=Europe/London
      - PORT=62001  # must match the container-side port in ports: above
    restart: unless-stopped

volumes:
  iplayer-arr-config:

iPlayer requires a UK IP address. Enable the built-in VPN or run behind an existing UK VPN/proxy. See the VPN Configuration wiki page.

If you set VPN_ENABLED=true, the examples above are not sufficient. You must also pass --cap-add=NET_ADMIN and --sysctl net.ipv4.conf.all.src_valid_mark=1 (or the Compose equivalent) or the container will crash-loop at startup with [VPN] Not the right capabilities. Full example: VPN Configuration → Docker Capabilities.

Open http://localhost:62001 and the setup wizard will guide you through connecting Sonarr.

Configuration

See the Configuration Reference for the full list of environment variables, application settings, and VPN options.

Documentation

See the Wiki for:

In-tree: docs/testing.md for the diag endpoints and regression-anchor pattern used in CI.

Legal

iplayer-arr is not affiliated with, endorsed by, or sponsored by the BBC. iPlayer is a trademark of the British Broadcasting Corporation. Users in the UK must hold a valid TV Licence to legally access BBC iPlayer content via this tool.

  • DISCLAIMER.md - full legal terms, TV Licence requirement, personal-use restriction
  • SECURITY.md - security and abuse reporting via GitHub's Private Vulnerability Reporting

Licence

GPL-3.0. See LICENSE.


iplayer-arr is not affiliated with, endorsed by, or sponsored by the BBC. iPlayer is a trademark of the British Broadcasting Corporation.

Install iplayer-arr on Unraid in a few clicks.

Find iplayer-arr in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.

Open the Apps tab on your Unraid server Search Community Apps for iplayer-arr Review the template variables and paths Click Install

Requirements

A UK IP address (or the built-in WireGuard VPN configured with a UK endpoint) and a valid UK TV Licence.

Related apps

Explore more like this

Explore all

Details

Repository
ghcr.io/will-luck/iplayer-arr:latest
Last Updated2026-07-21
First Seen2026-07-18

Runtime arguments

Web UI
http://[IP]:[PORT:62001]
Network
bridge
Shell
sh
Privileged
false
Extra Params
--cap-add=NET_ADMIN --sysctl="net.ipv4.conf.all.src_valid_mark=1"

Template configuration

WebUI PortPorttcp

Port for the iplayer-arr web interface and Newznab/SABnzbd APIs.

Target
62001
Default
62001
Value
62001
AppdataPathrw

Config files, database, override files and logs.

Target
/config
Default
/mnt/user/appdata/iplayer-arr
Value
/mnt/user/appdata/iplayer-arr
DownloadsPathrw

Where finished BBC content is written. Point Sonarr's import path at the same location.

Target
/downloads
Default
/mnt/user/downloads/iplayer
Value
/mnt/user/downloads/iplayer
TimezoneVariable

Container timezone.

Target
TZ
Default
Europe/London
Value
Europe/London
VPN: EnabledVariable

Enable the built-in WireGuard VPN client. Required for use outside the UK. When enabled, set VPN_PROVIDER and either supply PIA credentials below OR drop your own WireGuard config at /config/wireguard/wg0.conf.

Target
VPN_ENABLED
Default
false|true
Value
false
VPN: ProviderVariable

VPN provider. Use 'pia' to auto-configure Private Internet Access via the credentials below. Use 'generic' if you are supplying your own WireGuard config file.

Target
VPN_PROVIDER
Default
generic
Value
generic
VPN: WireGuard config nameVariable

Filename (without .conf) of your WireGuard config inside /config/wireguard/. Default is wg0 which matches /config/wireguard/wg0.conf.

Target
VPN_CONF
Default
wg0
Value
wg0
VPN: LAN networkVariable

Your LAN subnet in CIDR notation. Allows Unraid and Sonarr on the LAN to keep talking to iplayer-arr while the VPN tunnel is active. Comma-separate multiple subnets.

Target
VPN_LAN_NETWORK
Default
192.168.1.0/24
Value
192.168.1.0/24
VPN: PIA usernameVariable

Private Internet Access username. Only used when VPN_PROVIDER=pia.

Target
VPN_PIA_USER
VPN: PIA passwordVariable

Private Internet Access password. Only used when VPN_PROVIDER=pia.

Target
VPN_PIA_PASS
VPN: PIA preferred regionVariable

PIA region ID. Must be a UK region for BBC iPlayer (e.g. uk_london, uk_manchester, uk_southampton).

Target
VPN_PIA_PREFERRED_REGION
Default
uk_london
Value
uk_london
VPN: HealthcheckVariable

Stop the container if the VPN tunnel drops. Recommended when running behind a VPN.

Target
VPN_HEALTHCHECK_ENABLED
Default
false|true
Value
false
VPN: NameserversVariable

Optional comma-separated DNS resolvers to use inside the VPN tunnel (e.g. 1.1.1.1). Set this if the dashboard geo-check reports DNS failures while the VPN is up.

Target
VPN_NAMESERVERS
PUIDVariable

User ID for the running container. Unraid default is 99.

Default
99
Value
99
PGIDVariable

Group ID for the running container. Unraid default is 100.

Default
100
Value
100
UMASKVariable

File creation mask for files written by the container.

Default
002
Value
002