With a whole slew of new reasons on why subscribing to streaming services WILL give you worse services than NOT subscribing to them, i think it’s time to write a new up-to-date guide on how to install and configure an Arr-Stack + SABnzbd via Docker-Compose.

0. Preamble

All these guides assume you have basic knowledge about docker & docker compose. To quickly summarize the methods here:

You either use a webui to manage your docker-compose like Dockge or you create a folder and a docker-compose.yaml for each service listed here and copy the contents of each of them into that docker-compose.yaml; IMPORTANT: You HAVE to name them docker-compose.yaml exactly like that. Do NOT name them radarr.yaml for example. After you created a docker-compose.yaml and filled it with the contents here, you simply run docker compose up -d

I specifically did NOT route all those docker-compose files through a VPN container like Gluetun. In my case i have my Mullvad VPN setup on my router directly and selected the whole server to be tunneled through that VPN.

You can add a VPN container to your setup and route all the docker compose files through that. But i will not go through this on this guide. There are guides out there how to do that and you can even ask any big enough LLM as this isn’t really that complicated.

Just as a simple run through. Install Gluetun as an additional docker container and append network_mode: "container:gluetun" at the end of every docker-compose.yaml here according to the gluetun readme. You also have to remove all the ports: sections in the docker-compose.yamls of each service because it will throw an error if you use the network_mode: and you then have to add the ports of each service into the gluetun docker-compose.yaml. You can then start a console for each docker container and check if the outside world IP adress is NOT your real one with curl ipinfo.io

For every configuration step in this guide where it says “ipofyourserver” for sonarr, radarr, etc. you will have to change that to 127.0.0.1 as they all run inside the same network of gluetun.

This is a super super quick run through and you HAVE to properly configure gluetun and run tests that stopping that container does NOT let your real IP go through.


1. Folder Structure

If you want to store all your media on a NAS or some other external drive, make sure it is configured properly for symlinking / hardlinking and that you have proper permissions for this storage. Everything here will run with the 1000 user and has to create new files to work.

So this is the folder structure i use. And it is stored on a NFS-Share coming from my TrueNAS.

arr-stack (for this example let's say it's located in /mnt/arr-stack)
	|---- media
	    |---- movies
	    |---- shows
	    |---- music
	    |---- etc.
	|---- configs
	    |---- radarr
	    |---- sonarr
	    |---- SABnzbd
	    |---- etc.
	|---- nzb
	    |---- watchfolder
		    |---- movies
		    |---- shows
		    |---- music
		    |---- etc.
	    |---- complete
	    |---- incomplete

I intentionally broke out the nzb folder to make it easier accessible for the watchfolder and/or if you download something fully manual and you want to grab it out of the ‘completed’ folder without searching too deep.


2. Docker-Compose Files for each service

SABnzbd is the download application for Usenet. Alternatively you can use NZBget but i find Sab to be more modern, versatile and i just like it.

SABnzbd

services:
  arch-SABnzbd:
    ports:
      - 8080:8080
      - 8090:8090
    container_name: SABnzbd
    volumes:
      - /mnt/arr-stack:/arr-stack
      - /mnt/arr-stack/configs/SABnzbd:/config
      - /etc/localtime:/etc/localtime:ro
    environment:
      - PUID=1000
      - PGID=1000
    image: binhex/arch-SABnzbd
    restart: unless-stopped
networks: {}

Radarr and Sonarr are the applications that will actually find and track your Movies (Radarr) and Shows (Sonarr). Additionally there is Lidarr for Music and Whisparr for porn.

Radarr

services:
  arch-radarr:
    ports:
      - 7878:7878
    container_name: radarr
    volumes:
      - /mnt/arr-stack:/mnt/arr-stack
      - /mnt/arr-stack/configs/radarr:/config
      - /etc/localtime:/etc/localtime:ro
    environment:
      - PUID=1000
      - PGID=1000
    image: binhex/arch-radarr
    restart: unless-stopped
networks: {}

Sonarr

services:
  arch-sonarr:
    ports:
      - 8989:8989
      - 9897:9897
    container_name: sonarr
    volumes:
      - /mnt/arr-stack:/mnt/arr-stack
      - /mnt/arr-stack/configs/sonarr:/config
      - /etc/localtime:/etc/localtime:ro
    environment:
      - PUID=1000
      - PGID=1000
    image: binhex/arch-sonarr
    restart: unless-stopped
networks: {}

Prowlarr is the application where you can configure your usenet sites. There you will put in the URLs of your Indexers like Drunkenslug and your API keys for those sites. Prowlarr will periodically check the availability of those services and will sync these accounts to all your connected services (Radarr, Sonarr, Lidarr, Whisparr, etc.). Prowlarr will then be doing the actual heavy lifting of accessing the API of any Usenet and search for your stuff.

Prowlarr

services:
  arch-prowlarr:
    ports:
      - 9696:9696
    container_name: prowlarr
    volumes:
      - /mnt/arr-stack/configs/prowlarr:/config
      - /etc/localtime:/etc/localtime:ro
    environment:
      - PUID=1000
      - PGID=1000
    image: binhex/arch-prowlarr
    restart: unless-stopped
networks: {}

3. Configuring each service

Now that we have all these Services up and running. It’s time to properly configure them. Let’s start with SABnzbd

3.1 SABnzbd

  1. Open the Webui with http://ipofyourserver:8080
  2. Click on the settings icon (cog) in the upper right corner

Configure Usenet providers (Servers)

  1. Go to “Servers”
  2. Enter your Usenet providers here. These are NOT the indexers like Drunkenslug. These are the server that actually host all the files; fastusenet.org, usenight.com, frugalusenet, etc. etc. You will find the specific addresses and ports to enter on your member-are on those sites.
  3. Click on “Test Server” and make sure everything is running fine.

Configure Folders

  1. Go to “Folders”
  2. Temporary Download Folder: If you have a fast SSD with enough storage you can use this. For this you would have to mount a new volume in your SABnzbd docker compose; e.G. /mnt/fastssd/temp and then configure it here. “Engough Storage” depends on your internet speed as this directory fills up while you download stuff. This is then getting moved over to the final location. So if you’re on Gigabit internet, i just made sure to always have 100GB free on my temporary drive.
  3. Completed Download Folder: /mnt/arr-stack/nzb/complete
  4. Watched Folder: /mnt/arr-stack/nzb/watchfolder This is where you can then create new directories with the categories names (comes in next step). You can then place nzb files you manually loaded from a forum or something into these “watchfolders”. Sab will then start to download these with that specific category set. This is useful for when Sonarr for example didn’t find a release you like and you got something out of a forum. Downloading it with the category via Watchfolder will enable sonarr to actually see those manual downloads and allows you to import them easier.

Configure Categories

  1. Go to “Categories”
  2. Find the row where it says “+Add” at the end.
  3. In that row you create a tv category and click +Add
  4. And one movies category and click +Add
  5. You can change the priorities of each category as you like
  6. Keep the “Folder/Path” filed empty

Grab your API Token

  1. Go to General
  2. Copy the API Key We will need this key to be put in Sonarr, Radarr, etc.

3.2 Sonarr

  1. Open the Webui with http://ipofyourserver:8989
  2. Click on Settings

Root Folder

  1. Click on “Media Management”
  2. Under Root Folders, add /mnt/arr-stack/media/shows

Connect SABnzbd

  1. Click on “Download Clients”
  2. Click on the big PLUS icon
  3. Select SABnzbd
  4. Enter the IP Adress of your server
  5. Port: 8090
  6. Check “Use SSL”
  7. Enter the API Key you copied earlier
  8. Under Category enter tv
  9. Check “Remove Completed” and “Remove failed”
  10. Click on Test and Save

Grab your API Token

  1. Click on General
  2. Copy API Key and save it for later. We need it for Prowlarr

3.3 Radarr

  1. Open the Webui with http://ipofyourserver:7878
  2. Click on Settings

Root Folder

  1. Click on “Media Management”
  2. Under Root Folders, add /mnt/arr-stack/media/movies

Connect SABnzbd

  1. Click on “Download Clients”
  2. Click on the big PLUS icon
  3. Select SABnzbd
  4. Enter the IP Adress of your server
  5. Port: 8090
  6. Check “Use SSL”
  7. Enter the API Key you copied earlier
  8. Under Category enter movies
  9. Check “Remove Completed” and “Remove failed”
  10. Click on Test and Save

Grab your API Token

  1. Click on General
  2. Copy API Key and save it for later. We need it for Prowlarr

The same procedure goes for Lidarr and Whisparr aswell with their respective categories changed.


3.4 Prowlarr

  1. Open the Webui with http://ipofyourserver:9696
  2. Click on Settings

Connect Sonarr and Radarr

  1. Click on Apps
  2. Click on the big Plus Icon
  3. Click on Sonarr
  4. Sync Level “Full Sync”
  5. Tags: none
  6. Prowlarr Server: http://localhost:9696
  7. Sonarr Server: http://ipofyourserver:8989
  8. API Key from Sonarr
  9. Test and Save
  10. Rinse and Repeat for Radarr with adjusted infos

Add Indexers

  1. Click on Indexers
  2. Click on Add Indexer
  3. Type in the name of your indexer. Many of the big ones will be pre configures
  4. Example: Drunkenslug
  5. Click on the entry
  6. Check “Enable”
  7. Sync Profile “Standard”
  8. Enter your API Key from Drunkenslug
  9. Enter when your VIP Subscription will expire
  10. Test and Save

Prowlarr will now test and sync the indexers to your other apps like Sonarr and Radarr. Manually click on Test all Inders and then on Sync all Indexers. Now go back to Sonarr and Radarr and click on Settings -> Indexers and check if Drunkenslug (in our example) shows up there.


4. You’re done

Now this is obviously just the tip of the iceberg. You still don’t have “finetuned” profiles and explaining these would absolutely blow up the scope of this post.

I highly recommend you to check out these two posts over on the trash-guides site: Sonarr Profiles and Radarr Profiles

Also if you still don’t have a working indexer and just read this guide out of interest you have to actively search for them. Usenet servers like the ones i listed earlier are always open to register. Indexers however are not. Most of them are private and closed and only let you in on a few days per year or if you get an invite from another user.

There are some communities that revolve around sharing invites. You will find them with looking for “usenet invites”

So, these are the basics and there is much more to finetune. But as soon as you have an invite and registered for a host you absolutely are ready to go sailing on the high seas!

If you’re looking for a neat mobile app to manage your sonarr, radarr and sabnzbd i highly recommend you check out nzb360.

Here is an alternate guide on how to set it up using qBitTorrent for torrents: https://lemmy.dbzer0.com/post/26293605

Part 2 of this Guide is aiming for Jellyfin + Jellyseer: https://lemmy.dbzer0.com/post/26296377

  • Mister Bean@lemmy.dbzer0.com
    link
    fedilink
    English
    arrow-up
    1
    ·
    2 months ago

    Great guide, especially the folder structure setup, I wasted so much storage getting that wrong at first.

    But im wondering why not put everything into one compose file? It might just be personal preference but I find it a little easy to find what I’m looking for.

    (Also this is just a nit-pick but including the version tag now prompts a warning that it’s deprecated.)

    • RandomLegend [He/Him]@lemmy.dbzer0.comOPM
      link
      fedilink
      English
      arrow-up
      1
      ·
      2 months ago
      1. Thank you :)
      2. I like to keep them seperate. Makes it easier to troubleshoot if some path goes haywire or what not. Also makes it easier to update one without stopping the other
      3. Yeah i will go through them and remove the version