Important or Recent Updates
Historic Updates | Date |
---|---|
New guide | 13/09/2023 |
Added additional security option to the compose to restrict the container from gaining new privileges as well as umask variable | 25/10/2023 |
Adjusted the restart variable to make sure containers start on boot | 28/10/2023 |
This guide is going to eventually replace the existing separate guides for all the apps in the title. By combining these into a single project it saves you time and effort in the initial set up and makes updates more seamless.
You can add and remove the containers from this project based on your preferences.
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.
- Stop and delete the existing containers but keep your directories!
- Follow the rest of this guide and all your existing configs will be kept using your old files.
Settings for the Arrs
While I cover some very basics towards the end of the guide 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.
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
- Docker Package, SSD and Memory Recommendations
- Step 1: Directory Setup Guide
- Step 2: Setting up a restricted Docker user
- Step 3: Setting up a Docker Bridge Network (synobridge)
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)
/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.
Section | Setting |
---|---|
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 personally use the Linuxserver images, so they are used below
- 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 sites
- You will see notes saying #change me we will do this on the next step, and you can remove the comments if you wish
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 my Gluetun guides for more information on adding to a VPN.
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’
Variable | Value |
---|---|
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 |
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.
App | Address (not https://) |
---|---|
Lidarr | http://NASIP:8686 |
Radarr | http://NASIP:7878 |
Sonarr | http://NASIP:8989 |
Readarr | http://NASIP:8787 |
Bazarr | http://NASIP:6767 |
Prowlarr | http://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.
App | Root Folder |
---|---|
Lidarr | /data/media/music |
Radarr | /data/media/movies |
Sonarr | /data/media/tv |
Readarr | /data/media/books |
Bazarr | Not required |
Prowlarr | Not required |
Permission Issues (User ABC doesn’t have permission to access folder)
If you get this error when trying to add your Root folders check the following:
- Your PUID and PGID are set correctly and the right way round in the compose
- The ‘dockerlimited’ user has read and write permissions showing in the Control Panel > Shared Folders > Permissions
- If the above has not worked go back to the User creation guide and see the section ‘Permission Fixes – only use if you have issues‘ for a couple of commands that will fix things.
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.
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.
If you’re consolidating the arr’s to one docker-compose project, why not also the downloader (sabnzbd)? Or asked differently, why keep it separate?
It’s one of those things that comes down to user preference. I could add qBittorrent and Deluge in as well, but what if you want those on a vpn and I have seen a lot of people adding the *arrs to the compose from my Gluetun guides. I am slowly rewriting all the guides again to just use Projects over the UI so within each one I will be mentioning that it could be added to the overall compose with the *arrs. In my personal set up I used to have one massive compose with everything in it but it actually started making more sense to break stuff down into categories or certain container stacks to keep things manageable.
what is the benefit of running for example in my case sonarr and radarr as a project versus running these each as a container.
The ‘Project’ aka compose is just a different method of setting up the exact same containers. So the benefit is the speed of setup and also gives the flexibility to make changes to the compose that you cannot do in the UI. For example if you want to swap from the Sonarr ‘latest’ image to the ‘develop’ version (v4) the UI setup would require you to delete the existing container and set it all up in the UI again. The compose (aka project) you just swap the tag and hit build.
Ok have put sonar and radar in a project (media-project) now.
do i need to make sure these are pre-booked in network/synobridge and network/bridge?
I know as you wrote before that in the vpn project it is not needed.
They will be in the synobridge already as it is part of the compose 🙂
Thanks
What’s the reason to reunite all these programs in a single container? It’s only a matter of make easier containers management or is there any other reason?
Thanks
The majority of people have all these containers running or a combination of them, so rather than set them all up individually this simplifies things massively from a time perspective vs doing each one via the UI. Also if you want to quickly make edits or swap container versions the compose makes that quicker as the UI doesn’t make a version swap simple.
I’m having trouble setting up the root folder in the ARR programs. Radarr for example. When I try to type /data/media/movies nothing happens. If I select data, there are no subfolders even thought they were set up and I can also see them in file station. Should I add the folder to the compose file instead?
This would usually be a permissions issue – can you try recreating the folders using Filestation and double-check the ‘dockerlimited’ user has access to them correctly as per the initial guide – if it is still not working let me know.
I figured it out. I put the PGID value in PUID and vice versa for the docker compose. Now working. Thanks for your guide – very helpful!
Classic 🙂
As an additional tip, I setup a separate “dockerGroup” with the correct permissions, with the dockerlimited being a member of this group.
Then when doing “id dockerlimited” it showed :
uid=10xx gid=100(users) groups=100(users), 655xx(dockerGroup)
So when using the dockercompose, I had to use 655xx instead of 100, otherwise /data would be empty when trying to set the root folders. Kind of makes sense actually, since the “users” group did not have the permissions for the root folders set.
Hey – I will have a play around with this – I will spin up a brand-new DSM install, so I can check what the out-of-the-box permissions are now. Thanks
You are my hero Sir! I thought about this in the very beginning of the setup, then I just lived with the GID 100, and then I forgot about it and had no folders in /data/ … I stumbled across this comment and boom I remembered, changed it and it finally works!
Also thanks for the detailed tutorial(s) on this page to Dr Frankenstein, you’re a legend!
i followed the individual guide versions versions yesterday and got all the containers working and configured. however i just downloaded an nzb and was expecting it to be moved to the movies folder automatically. could you share how to accomplish this? is this done through prowlarr/overseerr? or do i do this individually for radarr/sonarr/lidarr?
If you grabbed an nzb independently from one of the arrs you need to make sure it is in the appropriate category in sab so for example Radarr can track it if it’s in the movies category. It can be a little hit and miss so ideally do a manual search in the Arrs