Setup Radarr in Docker to automate & manage your Plex Movies

Radarr is a movie collection manager for Usenet and BitTorrent users. It can monitor multiple RSS feeds for new movies and will interface with clients and indexers to grab, sort, and rename them. It can also be configured to automatically upgrade the quality of existing files in the library when a better quality format becomes available.

We'll be installing Radarr in Docker. For other platforms, take a look at Radarr's official documentation here.

ℹ️
For help in setting up Docker on your server, check out my docker guide here.

Since Radarr doesn't have any official docker image, we'll be using LinuxServer's Radarr Docker image.

Supported Architectures

Their images support multiple architectures such as x86-64, arm64 and armhf. We utilize the docker manifest for multi-platform awareness. More information is available from docker here and their announcement here.

Simply pulling lscr.io/linuxserver/radarr should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Tag
x86-64 amd64-latest
arm64 arm64v8-latest
armhf arm32v7-latest

Version Tags

This image provides various versions that are available via tags. latest tag usually provides the latest stable version. Others are considered under development and caution must be exercised when using them.

Tag Description
latest Stable Radarr releases
develop Radarr releases from their develop branch
nightly Radarr releases from their nightly branch

Installation

To help you get started creating a container from this image you can either use the docker CLI or docker-compose.

docker CLI

docker run -d \
  --name=radarr \
  -e PUID=1000 \
  -e PGID=1000 \
  -e TZ=Europe/London \
  -p 7878:7878 \
  -v /path/to/data:/config \
  -v /path/to/media:/media `#optional` \
  --restart unless-stopped \
  lscr.io/linuxserver/radarr

Go down to the parameters section for more info.

docker-compose

---
version: "2.1"
services:
  radarr:
    image: lscr.io/linuxserver/radarr
    container_name: radarr
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/London
    volumes:
      - /path/to/data:/config
      - /path/to/media:/media #optional
    ports:
      - 7878:7878
    restart: unless-stopped

Parameters

Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

Ports (-p)

Parameter Function
7878 The port for the Radarr web interface

Environment Variables (-e)

Env Function
PUID=1000 for UserID - see below for explanation
PGID=1000 for GroupID - see below for explanation
TZ=Europe/London Specify a timezone to use EG Europe/London, this is required for Radarr. See here for your timezone code.

Volume Mappings (-v)

Volume Function
/config Database and Radarr configs
/media Location of Media & Downloads library on disk

Note:

Be sure to put your downloads on the same drive and mount them in Docker as your media. This helps maintain hardlinks (a way for a file to exist in multiple places on the same file system while only consuming one file worth of space) and atomic move (instant file moves, rather than copy+delete) while processing content.

The folks over at servarr.com wrote a good write-up on how to get started with this.

Other parameters

  • To use host network mode, simply add network_mode: "host" to docker-compose or --net=host to docker-CLI.
  • If you are managing docker containers via systemd like me (see below), set the restart policy to no.
  • To limit CPU threads for this container, add cpus: value to docker-compose or --cpus=value to docker-CLI. Here value is the number of cpu threads. For instance, if the host machine has four CPU threads and you set --cpus="1.5", the container is guaranteed at most one and a half of the CPU threads.

After this, you can access the WebUI at <your-ip>:7878, for more information check out Radarr.

Umask for running applications

For all of their images, they provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on its value it does not add. Please read up here before asking for support.

User / Group Identifiers

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find your use id user as below:

  $ id username
    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)

Docker Mods

LinuxServer publishes various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any), as well as universal mods that can be applied to any one of their images, can be accessed via the link below.

Radarr Mods
Universal Mods

Important Commands

Shell access whilst the container is running:

docker exec -it radarr /bin/bash

To monitor the logs of the container in realtime:

docker logs -f radarr

Container version number:

docker inspect -f '{{ index .Config.Labels "build_version" }}' radarr

Image version number:

docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/radarr

Managing Radarr Docker via Systemd

🖥️
You can look into Managing Docker containers via systemd section in my Docker Ubuntu Guide for detailed info.

Here's my systemd file

[Unit]
Description=Docker radarr
After=media-drive.mount
Requires=media-drive.mount
StartLimitIntervalSec=10
StartLimitBurst=5

[Service]
Type=simple
ExecStart=/usr/bin/docker start -a radarr
ExecStop=/usr/bin/docker stop radarr
Restart=always
RestartSec=60s

[Install]
WantedBy=media-drive.mount

Note: I start all my docker containers after I have mounted my external hard drive, therefore the media-drive.mount is for that.

For a more generic systemd service,

[Unit]
Description=Docker radarr
After=network-online.target
Requires=network-online.target
StartLimitIntervalSec=10
StartLimitBurst=5

[Service]
Type=simple
ExecStart=/usr/bin/docker start -a radarr
ExecStop=/usr/bin/docker stop radarr
Restart=always
RestartSec=60s

[Install]
WantedBy=multi-user.target

Now to start, stop, or restart the radarr docker container, you would just use,

sudo systemctl start radarr.service
sudo systemctl stop radarr.service
sudo systemctl restart radarr.service

Note: If you are managing docker containers via systemd like this, DONT use docker restart policies and docker start/stop commands separately. If you stop a container directly via the docker stop command, this systemd service will just restart it after a 60s interval. Also, be sure to set a restart=no flag for your container.

Configuration

For detailed instructions on configuring Radarr, take a look at Radarr's official documentation here.

Some Key Points from my configuration

  • I have set up 3 separate radarr instances on my server. one for 1080p, one for 4K, and another for Dolby Vision.
  • All 3 of them are just different docker containers with the same images but different radarr config folders.
  • To give more resources to my Plex server and other services, I have limited Radarr containers to 2.5 out of 4 CPU threads that I have.
  • Also, I am running these containers in host network mode and have changed their ports from Radarr's settings and I am managing them via systemd instead of docker restart policies.

1080p Radarr Instance

My 1080p Quality Profile

Custom Format Score
x265 English 3
yts 3
ettv 1
rarbg 1
x264 English 0
Dolby Vision -4

My 1080p Quality Size Limit

Quality Min Preferred Max
HDTV-1080p 7.4 18 24
WEBDL-1080p 7.4 18 24
WEBRip-1080p 7.4 17 22
Bluray-1080p 7.4 20 27

The Custom Formats I used above

x265 English: Name condition with Regular Expression (((x|h).?265)|(HEVC)|(hevc)) required and Language English condition.

yts: Name condition with Regular Expression ((yts)|(YTS)|(yify)|(YIFY)) required.

ettv: Name condition with Regular Expression ((ETTV)|(ettv)) required.

rarbg: Name condition with Regular Expression ((rarbg)|(RARBG)) required.

x264 English: Name condition with Regular Expression (x|h).?264 and Language English condition.

Dolby Vision: Name condition with Regular Expression ((dv)|(DV)|(DOLBY)|(dolby)|(VISION)|(vision)|(DOLBYVISION)|(dolbyvision)|(12bit)|(12BIT))

My Indexers

All of the indexers are configured via Jackett except the duplicate Rarbg one.

Also in the Indexers tab, I use the following restrictions

4K Radarr Instance

My 4K Quality Profile

Custom Format Score
yts 3
x265 English 2
ettv 1
x264 English 0
Dolby Vision -4

My 4K Quality Size Limit

Quality Min Preferred Max
HDTV-2160p 1.1 150 179
WEBDL-2160p 1.1 150.4 179.4
WEBRip-2160p 3 149.6 178.6
Bluray-2160p 1.3 159.8 188.2
Remux-2160p 3 166.1 204.5

All else is the same as the 1080p instance above.

Dolby Vision Radarr Instance

My 4K Quality Profile

Custom Format Score
Dolby Vision 4
x265 English 2
ettv 1
mkv 1
mp4 -1
x264 English -4

My 4K Quality Size Limit

Quality Min Preferred Max
HDTV-2160p 1.1 150 179
WEBDL-2160p 1.1 150.4 179.4
WEBRip-2160p 3 149.6 178.6
Bluray-2160p 1.3 159.8 188.2
Remux-2160p 3 166.1 204.5

The Custom Formats I used above

mkv: Name condition with Regular Expression \b(MKV|mkv)\b

mp4: Name condition with Regular Expression \b(mp4|MP4)\b

Dolby Vision: Name condition with Regular Expression ((dv)|(DV)|(DOLBY)|(dolby)|(VISION)|(vision)|(DOLBYVISION)|(dolbyvision)|(12bit)|(12BIT)) required.

Others are the same as the 1080p one above.

Also in the Indexers tab, I use the following restrictions

That's it.

This should help you set up and configure Radarr for the most part.

For any doubts, feel free to comment below.

References

  1. Radarr Website.
  2. Radarr Official Docs.
  3. LinuxServer Docs.