Skip to content

Arr’s Media Project – Radarr, Sonarr, Lidarr, Prowlarr, Bazarr, Readarr in Container Manager on a Synology NAS

Important or Recent Updates
Historic UpdatesDate
New guide13/09/2023
Added additional security option to the compose to restrict the container from gaining new privileges as well as umask variable25/10/2023
Adjusted the restart variable to make sure containers start on boot28/10/2023
Made some small tweaks for readablity added some useful external links05/03/2025
Historic Updates

The Arrs are a suite of apps they help you both organise and obtain media from various sources online. This guide will give you the core items your need for managing Movies, TV Shows, Subtitles, Music and Books as well as a central search app called Prowlarr.

  • Sonarr for TV
  • Radarr for Movies
  • Lidarr for Music
  • Readarr for Books and Audiobooks
  • Bazarr for Subtitles
  • Prowlarr for Search

If you only want a subset of these items you can adjust the setup according to your needs.

Useful external links for this guide

Servarr.wiki (Official Documentation)
Linuxserver.io (Documentation for the Containers)

Let’s Begin

In order for you to successfully use this guide please complete the three initial setup guides if you have not done so already

As Container Manager now supports using Docker Compose in the UI we will be using it as it will save you lots of time and steps!

What on earth is a Docker Compose?
Docker Compose allows us to define how Docker should set up one or more containers within a single configuration file. This file is yaml formatted and Container Manager uses the Projects feature to manage them.


Folder Setup

First we need to set up some folders for the Arr’s to save their configuration files and also where the Project will save the compose.

Using File Station create the following folders. (Skip ones you don’t need)

Folders
/docker/projects/arrs-compose - Required
/docker/radarr
/docker/sonarr
/docker/lidarr
/docker/prowlarr
/docker/bazarr
/docker/readarr

Container Set Up

Next we are going to set up a ‘Project’ in Container Manager. Open up Container Manager and click on Project, then on the right-hand side click ‘Create’.

In the next screen we will set up our General Settings.

SectionSetting
Project Name:media-project
Path:/docker/projects/arrs-compose
Source:Create docker-compose.yml

Next we are going to drop in our docker compose configuration, copy all the code in the box below and paste it into line ‘1’

A couple of notes:

  • I am pulling these images directly from Docker Hub and not lscr.io this is because container manager can’t check for updates on third party repos
  • You will see notes saying #change me we will do this on the next step, and you can remove the comments if you wish
  • The folder structure across my guides will result in Hard links for torrents
YAML
services:
  sonarr:
    image: linuxserver/sonarr:latest
    container_name: sonarr
    environment:
      - PUID=1234 #CHANGE_TO_YOUR_UID
      - PGID=65432 #CHANGE_TO_YOUR_GID
      - TZ=Europe/London #CHANGE_TO_YOUR_TZ
      - UMASK=022
    volumes:
      - /volume1/docker/sonarr:/config
      - /volume1/data:/data
    ports:
      - 8989:8989/tcp
    network_mode: synobridge
    security_opt:
      - no-new-privileges:true
    restart: always
  
  lidarr:
    image: linuxserver/lidarr:latest
    container_name: lidarr
    environment:
      - PUID=1234 #CHANGE_TO_YOUR_UID
      - PGID=65432 #CHANGE_TO_YOUR_GID
      - TZ=Europe/London #CHANGE_TO_YOUR_TZ
      - UMASK=022
    volumes:
      - /volume1/docker/lidarr:/config
      - /volume1/data:/data
    ports:
      - 8686:8686/tcp
    network_mode: synobridge
    security_opt:
      - no-new-privileges:true
    restart: always   
    
  radarr:
    image: linuxserver/radarr:latest
    container_name: radarr
    environment:
      - PUID=1234 #CHANGE_TO_YOUR_UID
      - PGID=65432 #CHANGE_TO_YOUR_GID
      - TZ=Europe/London #CHANGE_TO_YOUR_TZ
      - UMASK=022
    volumes:
      - /volume1/docker/radarr:/config
      - /volume1/data:/data
    ports:
      - 7878:7878/tcp
    network_mode: synobridge
    security_opt:
      - no-new-privileges:true
    restart: always

  readarr:
    image: linuxserver/readarr:develop
    container_name: readarr
    environment:
      - PUID=1234 #CHANGE_TO_YOUR_UID
      - PGID=65432 #CHANGE_TO_YOUR_GID
      - TZ=Europe/London #CHANGE_TO_YOUR_TZ
      - UMASK=022
    volumes:
      - /volume1/docker/readarr:/config
      - /volume1/data/:/data
    ports:
      - 8787:8787/tcp
    network_mode: synobridge
    security_opt:
      - no-new-privileges:true
    restart: always

  bazarr:
    image: linuxserver/bazarr:latest
    container_name: bazarr
    environment:
      - PUID=1234 #CHANGE_TO_YOUR_UID
      - PGID=65432 #CHANGE_TO_YOUR_GID
      - TZ=Europe/London #CHANGE_TO_YOUR_TZ
      - UMASK=022
    volumes:
      - /volume1/docker/bazarr:/config
      - /volume1/data/:/data
    ports:
      - 6767:6767/tcp
    network_mode: synobridge
    security_opt:
      - no-new-privileges:true
    restart: always

I have split out Prowlarr as you may want this running on a VPN connection if your ISP blocks certain indexers. If not copy this section into your compose as well. See the side menu for adding this to GlueTUN.

YAML
  prowlarr:
    image: linuxserver/prowlarr:latest
    container_name: prowlarr
    environment:
      - PUID=1234 #CHANGE_TO_YOUR_UID
      - PGID=65432 #CHANGE_TO_YOUR_GID
      - TZ=Europe/London #CHANGE_TO_YOUR_TZ
      - UMASK=022
    volumes:
      - /volume1/docker/prowlarr:/config
    ports:
      - 9696:9696/tcp
    network_mode: synobridge
    security_opt:
      - no-new-privileges:true
    restart: always

Editing the Compose & Environment Variables

Please keep in mind that YAML formatting is very specific, so keep things lined up as per the original.

The compose contains all the Arr’s in the overall stack, you can remove any you don’t plan on using by deleting their entire section in the code.

We need to make some minor edits to the compose file in order to make sure the containers use the ‘dockerlimited’ user we created earlier and also let them know which timezone we are located. You will need to edit these in each section noted with ‘#change me’

VariableValue
PUID=Change it to the UID you obtained earlier in the first setup guides
PGID=Change it to the GID you obtained earlier in the first setup guides
TZ=You will need to change this line to your own timezone code – you can find the correct list of ones to use on wikipedia.org/wiki/List_of_tz_database_time_zones
Key Edits

Once you have made all your required edits click ‘Next’

Nothing to change on the next screen click ‘Next’ again..

On the final screen just click ‘Done’ and you will see a new window appear which will kick of downloading of the required container image and configure the containers.

This can take a couple of minutes to finish as all the images are downloaded and extracted. You should see ‘Code 0’ when it has finished.

Once finished you will see the Project is running with a green status.


Firewall Exceptions

(Skip if you don’t have the Firewall configured)

If you have the Synology Firewall enabled please see this additional guide for further info on exceptions and correct set up.

Containers are ready to use

You will now be able to access each of the containers on their respective ports.

AppAddress (not https://)
Lidarrhttp://NASIP:8686
Radarrhttp://NASIP:7878
Sonarrhttp://NASIP:8989
Readarrhttp://NASIP:8787
Bazarrhttp://NASIP:6767
Prowlarrhttp://NASIP:9696

Please see the next section which covers the ‘basics’ of each application setup as these usually catch people out. Full documentation can be found on https://wiki.servarr.com/

Key Settings within the Arrs

Settings > Media Management > Root Folders

Each of the Arr’s refer to the place(s) you keep your media as ‘Root Folders’. These are where the app will ultimately move your music/movies/books/shows once they finish downloading. Use the table below to set each of your folders correctly.

You will see other folders when you first browse for the /data folder it is located in the top level folder.

AppRoot Folder
Lidarr/data/media/music
Radarr/data/media/movies
Sonarr/data/media/tv
Readarr/data/media/books
BazarrNot required
ProwlarrNot required

Settings > Media Management > Remote Path Mappings

While most of the settings on this page are self-explanatory something that has caught people out is the Remote Path Mappings setting. If you are hosting all your services on the same NAS and in Docker do not add any settings here.

Settings > Download Client(s) > Add your Client > Host and Port

As our containers are all running on the ‘synobridge’ custom bridge we can use the Gateway IP for this bridge for inter container networking. This will be 172.20.0.1 and the appropriate port for your Client assuming it is running in Docker!

You should now have the basics in place and I 100% recommend having a look at the previously mentioned https://wiki.servarr.com/ documentation as it will help you understand how the Arrs work.

Other settings for the Arrs

While I covered some very basics you really need to make use of the documentation, it goes into detail of how and why the core functions work across the apps. You can find it on the Servarr Wiki.


FAQ

Migration from old guides.

If you followed my older guides where you set up each of these containers in the Container Manager UI or Pre DSM7.2 Docker UI you can follow this one to migrate in a couple of steps.

  1. Stop and delete the existing containers but keep your directories!
  2. Follow the rest of this guide and all your existing configs will be kept using your old files.

Looking for some help, join our Discord community

If you are struggling with any steps in the guides or looking to branch out into other containers join our Discord community!

Buy me a beverage!

If you have found my site useful please consider pinging me a tip as it helps cover the cost of running things or just lets me stay hydrated. Plus 10% goes to the devs of the apps I do guides for every year.

Published inMedia Management 7.2

258 Comments

  1. Shawn Shawn

    What do you mean to use the gateway when adding download client? I try and it just says my username is wrong. When I try using my localhost IP, which is the same one I use to access the web ui, it says unable to connect to qbittorrent.

    • Dr_Frankenstein Dr_Frankenstein

      Hi Shawn – it says the IP to use in that same paragraph, its the Gateway IP for the bridge network we set up in the first starter guides. If it is then saying the username is incorrect it may be your login details its not liking, be careful as if you enter incorrectly a number of times it may block the IP.

  2. Aaron Aaron

    Ah, I found out why we’re using the develop tag for readarr, there is no latest tag. When there’s an update available though for that develop tag, I can’t seem to get a notification in Container Manager for an update, so I had to manually pull the new version via ssh. Let me know if there’s a way to update through Container Manager though.

    • Dr_Frankenstein Dr_Frankenstein

      Yeah thats the one bit that kind of sucks with Container Manager is that it may not pick up some image updates. Readarr is not the greatest app to be honest so see how you get on with it vs manual pulling books..

  3. Aaron Aaron

    ooc why is the readarr image pulling develop vs the others pulling the latest? I noticed that in trying to debug why when the readarr app says there’s an update but the container manager doesn’t register an update is available like it does with the other arr containers.

  4. justin case justin case

    Thanks for great guides Dr. I have a strange problem. I get the following error message in sonarr: “No files found are eligible for import in /data/completed/tv-sonarr/”, However, the correct path should be “/data/torrents/completed/tv-sonarr/”. How do I fix this?

    • Dr_Frankenstein Dr_Frankenstein

      Double check your torrent or usenet client as they will be telling Sonarr and Radarr where to find the files for import.

      • justin justin

        Thanks for your reply. You are definitely on to something, but I am a bit confused about how to sort it out. I am using Transmission-openvpn because I could not get gluetun to work with my vpn. In my docker compose file I have:

        volumes:
        – ‘/volume1/data/torrents:/data’

        Which shows up as /data/completed in the Transmission UI, while in reality, downloads were placed in /data/torrents/completed. Changing the mapping in the Transmission UI to be /data/torrents/completed, results in downloads now being placed in /data/torrents/torrents/completed. Do I actually have to give Transmission access to the root data folder for this to work and then change it in the UI, or is there some other option?

        • Dr_Frankenstein Dr_Frankenstein

          You need to adjust the actual mapping by the looks of it…

          is should be – ‘/volume1/data/torrents:/data/torrents’

          And then within Transmission it will be /data/torrents/completed /data/torrents/incomplete etc

          • justin justin

            Thanks for your reply. For some reason, that didn’t work. Transmission would place the downloads in the data/torrents/completed/ directory, but it would still report /data/completed/ to the arr apps. I needed to add the following environmental variables for it to work:

            – TRANSMISSION_DOWNLOAD_DIR=/data/torrents/completed
            – TRANSMISSION_INCOMPLETE_DIR=/data/torrents/incomplete
            – TRANSMISSION_WATCH_DIR=/data/torrents/watch

            However, sonarr is still complaining that Transmission is downloading to a root directory. But things mostly work now, so I don’t know if I need to mess with it further?

            • Dr_Frankenstein Dr_Frankenstein

              OK good to know I have not used Transmission for ages – I would ignore the error as I find it sometimes takes a while for them to clear.

  5. Jock Jock

    I started getting errors in sonarr and radarr that indexers are unavailable and at the same time that update is available. Is this meant to update automatically? Do I need to restart the docker container or completely rebuild it?

    • Dr_Frankenstein Dr_Frankenstein

      Hi Jock

      Have a look at the updates guide on the left menu here and it takes you through the steps.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

drfrankenstein.co.uk – writing Synology Docker Guides since 2016 – Join My Discord!