There have been multiple accounts created with the sole purpose of posting advertisement posts or replies containing unsolicited advertising.

Accounts which solely post advertisements, or persistently post them may be terminated.

Guide: Arr-Stack + qBitTorrent using Docker-Compose

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 + qBitTorrent via Docker-Compose.

  1. 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 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

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.


<span style="color:#323232;">arr-stack (for this example let's say it's located in /mnt/arr-stack)
</span><span style="color:#323232;">	|---- media
</span><span style="color:#323232;">	    |---- movies
</span><span style="color:#323232;">	    |---- shows
</span><span style="color:#323232;">	    |---- music
</span><span style="color:#323232;">	    |---- etc.
</span><span style="color:#323232;">	|---- configs
</span><span style="color:#323232;">	    |---- radarr
</span><span style="color:#323232;">	    |---- sonarr
</span><span style="color:#323232;">	    |---- qbittorrent
</span><span style="color:#323232;">	    |---- etc.
</span><span style="color:#323232;">	|---- torrents
</span><span style="color:#323232;">	    |---- complete
</span>

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


  1. Docker-Compose Files for each service
    ========================================

qBitTorrent 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.

qBitTorrent


<span style="color:#323232;">services:
</span><span style="color:#323232;">  qbittorrent:
</span><span style="color:#323232;">    image: lscr.io/linuxserver/qbittorrent:latest
</span><span style="color:#323232;">    container_name: qbittorrent
</span><span style="color:#323232;">    environment:
</span><span style="color:#323232;">      - PUID=1000
</span><span style="color:#323232;">      - PGID=1000
</span><span style="color:#323232;">      - TZ=Etc/UTC
</span><span style="color:#323232;">      - WEBUI_PORT=8081
</span><span style="color:#323232;">    volumes:
</span><span style="color:#323232;">      - /mnt/arr-stack/configs/qbittorrent/config:/config
</span><span style="color:#323232;">      - /mnt/arr-stack/torrents/complete:/downloads
</span><span style="color:#323232;">    ports:
</span><span style="color:#323232;">      - 8081:8081
</span><span style="color:#323232;">      - 6881:6881
</span><span style="color:#323232;">      - 6881:6881/udp
</span><span style="color:#323232;">    restart: unless-stopped
</span><span style="color:#323232;">networks: {}
</span>

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


<span style="color:#323232;">services:
</span><span style="color:#323232;">  arch-radarr:
</span><span style="color:#323232;">    ports:
</span><span style="color:#323232;">      - 7878:7878
</span><span style="color:#323232;">    container_name: radarr
</span><span style="color:#323232;">    volumes:
</span><span style="color:#323232;">      - /mnt/arr-stack:/mnt/arr-stack
</span><span style="color:#323232;">      - /mnt/arr-stack/configs/radarr:/config
</span><span style="color:#323232;">      - /etc/localtime:/etc/localtime:ro
</span><span style="color:#323232;">    environment:
</span><span style="color:#323232;">      - PUID=1000
</span><span style="color:#323232;">      - PGID=1000
</span><span style="color:#323232;">    image: binhex/arch-radarr
</span><span style="color:#323232;">    restart: unless-stopped
</span><span style="color:#323232;">networks: {}
</span>

Sonarr


<span style="color:#323232;">services:
</span><span style="color:#323232;">  arch-sonarr:
</span><span style="color:#323232;">    ports:
</span><span style="color:#323232;">      - 8989:8989
</span><span style="color:#323232;">      - 9897:9897
</span><span style="color:#323232;">    container_name: sonarr
</span><span style="color:#323232;">    volumes:
</span><span style="color:#323232;">      - /mnt/arr-stack:/mnt/arr-stack
</span><span style="color:#323232;">      - /mnt/arr-stack/configs/sonarr:/config
</span><span style="color:#323232;">      - /etc/localtime:/etc/localtime:ro
</span><span style="color:#323232;">    environment:
</span><span style="color:#323232;">      - PUID=1000
</span><span style="color:#323232;">      - PGID=1000
</span><span style="color:#323232;">    image: binhex/arch-sonarr
</span><span style="color:#323232;">    restart: unless-stopped
</span><span style="color:#323232;">networks: {}
</span>

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


<span style="color:#323232;">services:
</span><span style="color:#323232;">  arch-prowlarr:
</span><span style="color:#323232;">    ports:
</span><span style="color:#323232;">      - 9696:9696
</span><span style="color:#323232;">    container_name: prowlarr
</span><span style="color:#323232;">    volumes:
</span><span style="color:#323232;">      - /mnt/arr-stack/configs/prowlarr:/config
</span><span style="color:#323232;">      - /etc/localtime:/etc/localtime:ro
</span><span style="color:#323232;">    environment:
</span><span style="color:#323232;">      - PUID=1000
</span><span style="color:#323232;">      - PGID=1000
</span><span style="color:#323232;">    image: binhex/arch-prowlarr
</span><span style="color:#323232;">    restart: unless-stopped
</span><span style="color:#323232;">networks: {}
</span>

  1. Configuring each service
    ===========================

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

3.1 qBitTorrent

  1. Open the Webui with ipofyourserver:8081
  2. Click on “Tools” in the menu bar
  3. Click on Options
  4. Click on Web Ui
  5. Under “Authentification” change your Username and Password
  6. Click on Save at the bottom

3.2 Sonarr

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

Root Folder

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

Connect qBitTorrent

  1. Click on "Download Clients"
  2. Click on the big PLUS icon
  3. Select qBitTorrent
  4. Enter the IP Adress of your server
  5. Port: 8081
  6. Enter your username and passwort from earlier
  7. Under Category enter tv
  8. Check "Remove Completed"
  9. 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 ipofyourserver:7878
  2. Click on Settings

Root Folder

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

Connect qBitTorrent

  1. Click on "Download Clients"
  2. Click on the big PLUS icon
  3. Select qBitTorrent
  4. Enter the IP Adress of your server
  5. Port: 8081
  6. Enter your username and passwort from earlier
  7. Under Category enter tv
  8. Check "Remove Completed"
  9. 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 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: localhost:9696
  7. Sonarr Server: 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: The Pirate Bay
  5. Click on the entry
  6. Check "Enable"
  7. Sync Profile "Standard"
  8. Under Base URL select the first one (you may have to cycle through if one of them doesn’t work)
  9. Enter your Seed Ratio
  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.


  1. 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

So, these are the basics and there is much more to finetune. But you absolutely are ready to go sailing on the high seas now!

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 for Usenet Downloads: lemmy.dbzer0.com/post/26287096

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

akwd169 ,

So awesome, I’m am just about to jump into this so you had perfect timing posting this

Thank you!

RandomLegend OP ,
@RandomLegend@lemmy.dbzer0.com avatar

Happy to hear!

I updated the guides to include a link to my next guide: Jellyfin + Jellyseer in junction with sonarr / radarr. Make sure to refresh the page :)

Sujan ,

can i get a tip for readarr too. i am too dumb to figure it out even after reading documentation from official site.

RandomLegend OP ,
@RandomLegend@lemmy.dbzer0.com avatar

I never really looked into readarr i’m sorry… maybe someone else can chime in? I’ve always found calibre web super annoying aswell

eLEMONator ,

First off, this is an excellent guide and I thank you for writing it all out!

Coming from an absolute noob, how difficult is this to setup via a VPN for privacy concerns? Could I somehow use the PIA subscription I already have?

RandomLegend OP , (edited )
@RandomLegend@lemmy.dbzer0.com avatar

Glad you find it well-written :)

Well it isn’t really that hard techznically, but you have to be really sure it actually works and that’s the hard part.

You can look into “Gluetun”. It is a small docker service that supports PIA. You will have to put this and the rest of the ARR stack into the same “docker network” and configure it so that radarr, etc. go through Gluetun and use it’s VPN.

You can then open a terminal for the radarr container for example and run curl ipinfo.io for example to check the IP adress that container has to the outside world.

I didn’t do that whole gluetun setup in quite a while so i’m not really in the position to give a proper guide on how to route your docker containers through it. But there are guides out there that will definetely help.

Testing that it’s failproof would be for example run while sleep 5; do clear && curl ipinfo.io; done which shows your outside world IP for that container once per 5 seconds. Then stopping that gluetun container and look if the radarr container stops the ping and / or suddenly shows your real IP.

EDIT: found a quick readme for the gluetun container that shows how to route other containers through it

eLEMONator ,

You are amazing! Thanks for pointing me in that direction!

RandomLegend OP ,
@RandomLegend@lemmy.dbzer0.com avatar

You’re welcome!

After we learned that disney can kill your husband / wife and you’re not even allowed to take them to court because you signed up for a disney+ trial years ago, i am more than happy for every single person that is able to rip as much of their (most of the time) shitty content

RxBrad ,
@RxBrad@infosec.pub avatar

Your -arrs see the torrent download folder as /mnt/arr-stack/torrents/completed, and qBittorrent sees it as /downloads.

Maybe this is only a problem with Transmission, but I’ve had trouble making my Arr stack play nice with torrents when the different apps think downloads live in different folders.

RandomLegend OP ,
@RandomLegend@lemmy.dbzer0.com avatar

I have tried it like that before writing the guide and it didn’t cause issues. But yes, if it does one could simply mount the whole base folder and navigate from there

Facebones ,

Saved for later, I’ve been meaning to look into getting this going. Any suggestions on storage solutions to hook to an rpi? I just have a 1tb external on it right now so obv that’d fill up pretty quick lol

RandomLegend OP ,
@RandomLegend@lemmy.dbzer0.com avatar

I don’t think a raspberry pi is really suitable for huge amounts of storage. Ideally you should prefer some proper NAS device that also does some proper RAID configuration.

Facebones ,

I’m aware, but AFAIK NAS devices with some brains aren’t really suitable for containers so im not sure how to get my storage and my services

Or am i overthinking it and I can just point jellyfin/etc at the NAS? Might have just solved my own problem I’ll look into it later 🤣

RandomLegend OP ,
@RandomLegend@lemmy.dbzer0.com avatar

The are stack itself is so low power that you absolutely can run it on a NAS like synology for example… I mean you can run a Plex server on a NAS and it actually works so…

In my case I have it seperated. I have a NAS that does absolutely nothing else besides being a NAS. I then have my mediaserver for the are stack and jellyfin.

So that could be your Pi, and the you get an old used Synology for example.

BakedCatboy ,

I actually run my arrstack on a Synology, it has official support for docker and docker-compose. Granted I do have a higher powered model (the DS1621xs+) but most of the arrstack is fairly low power friendly.

You can also get away with running Plex on a nas but I would only do it if 1. Your nas has a quick sync supported CPU and you get that enabled properly or 2. You go the direct streaming only / no transcoding setup - which means checking the codec support for all client devices and either only downloading exactly the supported codecs or pre-transcoding everything.

What I do is actually run Plex/JF on a separate nuc and point it at the nas using a network mount. Just don’t use a network mount for the Plex app database (maybe same applies to JF too), just mount the media files itself. Running Plex and having it access the DB over a network mount is a big no no for various reasons.

Facebones ,

What nuc do you use? I’ve seen people touting the N100 as this miracle chip but IIRC it’s like 1Ghz to my pi’s 1.8 I think? I know moving away from the pi is fairly inevitable but IDK what to move to. A NUC sorta thing makes sense, but at the same time if I bother to buy new hardware I want to be able to run a game server or two and I assume I’d probably need more power than a NUC for that (I haven’t actually looked into reqs for that yet, although I know some games are explicitly more RAM intensive.)

BakedCatboy ,

I use a nuc10i7fnkn and since transcoding is almost entirely done using the dedicated quicksync hardware in the CPU you don’t end up actually using the CPU much. So I’m sure it would work on an older generation or the i5 version. I don’t know much about the N100 but it looks like it would be very capable. Supposedly it boosts to 3+GHz and it’s a 10nm node compared to my NUCs 14nm. But the GPU has the same number of execution units so I’m not sure if the quicksync transcoding performance is that different. I saw someone mention 3 simultaneous 4K transcodes and I think I got about that much on mine. Generally for quick sync performance you just compare the Intel hd or uhd graphics model (like 630, 730, uhd, etc) and the number of execution units and that should correlate to the performance. Also check the Wikipedia page for quicksync for codec compatibility (under the Hardware decoding and encoding section), but anything recent will handle most stuff you’d need: en.m.wikipedia.org/wiki/Intel_Quick_Sync_Video

  • All
  • Subscribed
  • Moderated
  • Favorites
  • [email protected]
  • random
  • lifeLocal
  • goranko
  • All magazines