- Sonarr Download Clients
- Sonarr Utorrent Setup
- Best Torrent Client For Sonarr Kodi
- Sonarr Download Client Setup
- Best Torrent Client Reddit
The best Usenet client is Easynews. Such as Sonarr, Sickrage, and Radarr. Features include managing individual files, night mode, speed limiting, and drag and drop interface. I prefer to download off of Usenet over Torrents, so I set up my profile to look like the one below. This will download from Usenet if the file is available on both. After an episode airs, if a torrent shows up, this profile will force Sonarr to wait 3 hours for it to show up on Usenet before downloading.
Troubleshooting
Please note that this information is only for Sonarr V3.
Asking for Help
Do you need help? That's okay, everyone needs help sometimes. You can get real time help via chat on Discord or Reddit.
But before you go there and post, be sure your request for help is the best it can be. Clearly describe the problem and briefly describe your setup, including things like your OS/distribution, version of Mono (if not Windows and not .Netcore), version of Sonarr, download client and its version. If you are using Docker please run through the Docker Guide first as that will solve common and frequent path/permissions issues. Otherwise please have a docker compose handy Tell us about what you've tried already, what you've looked at. Use the Logging and Log Files to turn your logging up to trace, recreate the issue, pastebin the relevant context and include a link to it in your post. Maybe even include some screen shots to highlight the issue.
The more we know, the easier it is to help you.
Logging and Log Files
If you're linked here for support remember to get them from the actual log file, put the logs in a pastebin and show us context around what we need to see.
Standard Logs Location
The log files are located in Sonarr's Appdata Directory, inside the logs/ folder. You can also access the log files from the Sonarr UI at System -> Logs -> Files.
Note: The Logs Table in the UI is not the same as the log files and isn't as useful. If you're asked for logs, please copy/paste from the log files and not the table.
Update Logs Location
The update log files are located in Sonarr's Appdata Directory, inside the UpdateLogs/ folder.
Sharing Logs
The logs can be long and hard to read as part of a forum or Reddit post and they're spammy in Discord, so please use Pastebin, Hastebin, or any other similar pastebin site . The whole file typically isn't needed, just a good amount of context from before and after the issue/error. Don't forget to wait for spammy tasks like the RSS sync or library refresh to finish.
Trace/Debug Logs
You can change the log level at Settings -> General -> Logging. Sonarr does not need to restarted for the change to take effect. This change only affects the log files, not the logging database. The latest debug/trace log files are named Sonarr.debug.txt
and Sonarrr.trace.txt
respectively.
If you're unable to access the Sonarr UI to set the logging level you can do so by editing config.xml in the AppData directory by setting the LogLevel value to Debug or Trace instead of Info.
Clearing Logs
You can clear log files and the logs database directly from the UI, under System -> Logs -> Files and System -> Logs -> Delete (Trash Can Icon)
Multiple Log Files
Sonarr uses rolling log files limited to 1MB each. The current log file is always ,Sonarr.txt
, for the the other files Sonarr.0.txt
is the next newest (the higher the number the older it is). This log file contains fatal, error, warn, and info entries.
When Debug log level is enabled, additional Sonarr.debug.txt
rolling log files will be present. This log files contains fatal, error, warn, info, and debug entries. It usually covers a 40h period.
When Trace log level is enabled, additional Sonarr.trace.txt
rolling log files will be present. This log files contains fatal, error, warn, info, debug, and trace entries. Due to trace verbosity it only covers a couple of hours at most.
Recovering from a Failed Update
Purpose
We do everything we can to prevent issues when upgrading, but they occur, this will walk you through the steps of recovering your installation.
Determine the issue
The best place to look when Sonarr won't start after an update is your log files, before trying to start Sonarr again, use Logging and Log Files to find them and increase the log level.
Migration Issue
Migration errors won't be identical, but here is an example:
14-2-4 18:56:49.5|Info|MigrationLogger|*** 36: update_with_quality_converters migrating ***
14-2-4 18:56:49.6|Error|MigrationLogger|SQL logic error or missing database duplicate column name: Items
While Processing: 'ALTER TABLE 'QualityProfiles' ADD COLUMN 'Items' TEXT'
Resolving the issue
In the event of a migration issue there is not much you can do immediately, if the issue is specific to you (or there are not yet any posts), please create a post on our subreddit, if there are others with the same issue, then rest assured we are working on it.
Manually upgrading
Grab the latest release from our website - if you're running the develop version you can get the latest release HERE
Install the update (.exe) or extract (.zip) the contents over your existing installation and re-run Sonarr as you normally would.
Downloads and Importing
Downloading and importing is where most people experience issues. From a high level perspective, Sonarr needs to be able to communicate with your download client and have access to the files it downloads. There is a large variety of supported download clients and an even bigger variety of setups. This means that while there are some common setups, there isn’t one right setup and everyone’s setup can be a little different.
Start by using the logging and log files article to turn logging up to trace, it is likely you’re going to need to look at them to figure out what is wrong. And if you can’t, anyone you ask for help will need to see them for sure. Remember to get them from the actual log file, put them in a pastebin and show us context around what we need to see. Nobody wants to dig through the whole trace log (it is huge!), but just a line or two is unlikely to help.
When you reach out for help, be sure to read asking for help so that you can provide us with the details we’ll need.
Testing the Download Client
Start by testing the download client, if it doesn’t work you’ll be able to see details in the trace level logs. You should find a URL you can put into your browser and see if it works. It could be a connection problem, which could indicate a wrong ip, hostname, port or even a firewall blocking access. It might be obvious, like an authentication problem where you’ve gotten the username, password or apikey wrong.
Testing a Download
Now we’ll try a download, pick a Show and do a manual search. Pick one of those files and attempt to download it. Does it get sent to the download client? Does it end up with the correct category? Does it show up in Activity? Does it end up in the trace level logs during the Check For Finished Download task which runs roughly every minute? Does it get correctly parsed during that task? Does the queued up download have a reasonable name? Since Sonarr searches by theTVDb, on most indexers/trackers, it can queue one up with a name that it can’t recognize.
Testing an Import
Import issues should almost always manifest as an item in Activity with an orange icon you can hover to see the error. If they’re not showing up in Activity, this is the issue you need to focus on first so go back and figure that out. Most import errors are permissions issues, remember that Sonarr needs to be able to read and write in the download folder. Sometimes, permissions in the library folder can be at fault too, so be sure to check both.
Incorrect path issues are possible too, though less common in normal setups. The key to understanding path issues is knowing that Sonarr gets the path to the download from the download client, via its API. This becomes a problem in more unique use cases, like the download client running on a different system (maybe even OS!). It can also occur in a Docker setup, when volumes are not done well. A remote path map is a good solution where you don’t have control, like a seedbox setup. On a Docker setup, fixing the paths is a better option.
Common Problems
Can’t see share on Windows
The default user for a Windows service is SYSTEM which typically doesn’t have access to your shares. Edit the service and set it up to run as your own user, see the FAQ entry why can’t Sonarr see my files on a remote server for details.
Mapped network drives are not reliable
While mapped network drives like X:
are convenient, they aren’t as reliable as UNC paths like servershare
and they’re also not available before login. Setup Sonarr and your download client(s) so that they use UNC paths as needed. If your library is on a share, you’d make sure your root folders are using UNC paths. If your download client sends to a share, that is where you’ll need to configure UNC paths since Sonarr gets the download path from the download client. It is fine to keep your mapped network drives to use yourself, just don’t use them for automation.
Docker and user, group, ownership, permissions and paths
Docker adds another layer of complexity that is easy to get wrong, but still end up with a setup that functions, but has various problems. Instead of going over them here, read this wiki article for these automation software and Docker which is all about user, group, ownership, permissions and paths. It isn’t specific to any Docker system, instead it goes over things at a high level so that you can implement them in your own environment.
Download client clearing items
The download client should not be responsible for removing downloads. Usenet clients should be configured so they don’t remove downloads from history. Torrent clients should be setup so they don’t remove torrents when they’re finished seeding (pause or stop instead). This is because Sonarr communicates with the download client to know what to import, so if they’re removed there is nothing to be imported… even if there is a folder full of files.
Download folder and library folder not different folders
The download client should download into a temporary-ish folder and Sonarr should import from that into your Library folder. If you download right into your library folder, you’ll end up with multiple copies of your media and when there are import issues, you may not notice because your media server will see the download client copy. The download folder will also be a hot mess of poorly named folders and files while your library folder will be nice and neat.
Incorrect category
Sonarr should be setup to use a category so that it only tries to process its own downloads. It is rare that a torrent submitted by Sonarr gets added w/o the correct category, but it can happen. If you’re adding torrents manually and want Sonarr to process them, they’ll need to have the correct category. It can be set at any time, since Sonarr tries to process downloads every minute.
Packed torrents
Sonarr Download Clients
If your torrent is packed in .rar
files, you’ll need to setup extraction. You can typically search your torrent client’s name and “unpack” to find a solution. There are some other interesting solutions in this space, like unpackerr and rarfs, but they’re more complicated. One issue to look out for with packed torrents is that the video file will be copied or hard linked like normal, but it isn’t needed since the .rar
files are seeding. That means if you’re using a copy setup, the torrent will be consuming double the space. And if you’re using a hard link setup, your torrent folder will be a little messier because of the unneeded file. This can be mitigated w/ a cleanup script.
Permissions on the destination
Don’t forget to check permissions and ownership of the destination. It is easy to get fixated on the download’s ownership and permissions and that is usually the cause of permissions related issues, but it could be the destination as well. Check that the destination folder(s) exist. Check that a destination file doesn’t already exist or can’t be deleted or moved to recycle bin. Check that ownership and permissions allow the downloaded file to be copied, hard linked or moved.
Repeated downloads
There are a few causes of repeated downloads, but a recent one is related to the Indexer restriction in Release Profiles. Because the indexer isn’t stored w/ the data, any preferred word scores are zero for media in your library, but during “RSS” and search, they’ll be applied. This gets you into a loop where you download the items again and again because it looks like an upgrade, then isn’t, then shows up again and looks like an upgrade, then isn’t. Don’t restrict your release profile to an indexer.
Sonarr Utorrent Setup
Usenet download misses import
Sonarr only looks at the 30 most recent downloads in sabnzbd and nzbget, so if you keep your history this means that during large queues with import issues, downloads can be silently missed and not imported. The best way to avoid that is to keep your history clear, so that any items that still appear need investigating. You can achieve this by enabling Remove under Completed and Failed Download Handler. In nzbget, this will move items to the hidden history which is great. Unfortunately, sabnzbd does not have a similar feature. The best you can achieve there is to use the nzb backup folder.
qBittorrent 4.3.x
This version of qB changed how torrent folder and torrent name relate, previous to this the folder was named after the torrent. Starting in this version, the torrent folder name can be different. This is fixed in v3.
Searches Indexers and Trackers
Turn logging up to trace
The first step is to turn logging up to Trace, see Logging and Log Files for details. You’ll then reproduce the issue and use the trace level logs from that time frame to examine the issue. If someone is helping you, put context from before/after in a pastebin to show them. It doesn’t need to be the whole file and it shouldn’t just be the error. You should also reproduce the issue while tasks that spam the log file aren’t running.
Testing an Indexer or Tracker
Best Torrent Client For Sonarr Kodi
When you test an indexer or tracker, in debug or trace logs you can find the URL used. An example of a successful test is below, you can see it query the indexer via a specific URL with specific parameters and then the response. You test this url in your browser like https://api.nzbgeek.info/api?t=tvsearch&cat=5030,5040,5045,5080,5070&extended=1&apikey=(removed)&offset=0&limit=100&tvdbid=268592&rid=34770&season=7&ep=14
replacing the apikey=(removed)
with the correct apikey like apikey=123
. You can experiment with the parameters if you’re getting an error from the indexer or see if you have connectivity issues if it doesn’t even work. After you’ve tested in your own browser, you should test from the system Sonarr is running on if you haven’t already.
Testing a Search
Just like the indexer/tracker test above, when you trigger a search while at Debug or Trace level logging, you can get the URL used from the log files. While testing, it is best to use as narrow a search as possible. A manual search is good because it is specific and you can see the results in the UI while examining the logs.
In this test, you’ll be looking for obvious errors and running some simple tests. You can see the search used the url https://api.nzbgeek.info/api?t=tvsearch&cat=5030,5040,5045,5080&extended=1&apikey=(removed)&offset=0&limit=100&tvdbid=354629&season=1&ep=1
, which you can try yourself in a browser after replacing (removed)
w/ your apikey for that indexer. Does it work? Do you see the expected results? In that URL, you can see that it set specific categories with cat=5030,5040,5045,5080
, so if you’re not seeing expected results, this is one likely reason. You can also see that it searched by tvdbid w/ tvdbid=354629
, so if the episode isn’t properly categorized on the indexer, it will need to be fixed. You can also see that it searches by specific season and episode with season=1
and ep=1
, so if that isn’t correct on the indexer, you won’t see those results. Look at Manual Episode Search XML Output below to see an example of a working query’s output.
Here you can see the full trace log below
Common Problems
Wrong categories
Incorrect categories is probably the most common cause of results showing in manual searches of an indexer/tracker, but not in Sonarr. The indexer/tracker should show the category in the search results, which should help you figure out what is missing. If you’re using Jackett, each tracker has a list of specifically supported categories. Make sure you’re using the correct ones for Categories. I find it helpful to have the list visible in one browser window while I edit the entry in Sonarr.
Wrong show type
The show type is another cause of poor search results. Most shows should be Standard
. For daily shows which are typically released with a date, Daily
should be used. Finally, there is anime where using Anime
is usually right, but sometimes Standard
can work better, so try the other one if you’re having issues.
Wrong results
Sometimes indexers will return completely unrelated results, Sonarr will feed in parameters to limit the search to a theTVDb, but the results returned are completely unrelated. Or sometimes, mostly related with a few incorrect results. The first is usually an indexer problem and you’ll be able to tell from the trace logs which is causing it. You can disable that indexer and report the problem. The other is usually categorized releases which should be reportable on the indexer/tracker.
Certificate validation
You’ll be connecting to most indexers/trackers via https, so you’ll need that to work properly on your system. That means your time zone and time both need to be set correctly. It also means your system certificates need to be up to date. And if you’re using Mono, MONO_TLS_PROVIDER=legacy
was a fix from years ago that should not be used anymore, so make sure you’re not setting that accidentally.
Hitting rate limits
If you run your Sonarr through a VPN or proxy, you may be competing with 10s or 100s or 1000s of other people all trying to use services like theTVDb, Xem and/or your indexers and trackers. Rate limiting and ddos protection are often done by IP address and your VPN/proxy exit point is one IP address. Unless you’re in a repressive country like China, Australia or South Africa you don’t need to VPN/proxy your Sonarr.
Using the Jackett /all endpoint
The Jackett /all
endpoint is convenient, but that is essentially its only benefit. Everything else is potential problems, so adding each tracker individually is preferred. It allows for fine tuning of categories on a per tracker basis, which can be a problem w/ the /all
end point if using the wrong category causes errors on some. In Sonarr, each indexer/tracker is limited to 1000 results if pagination is supported or 100 if not, which means as you add more and more trackers to Jackett, you’re more and more likely to clip results. Finally, if one of the trackers in /all
returns an error, Sonarr will disable it and now you don’t get any results.
Errors
These are some of the common errors you may see when adding an indexer
The underlying connection was closed: An unexpected error occurred on a send.
This is caused by the indexer using a SSL protocol not supported by .net 4.5, to resolve this you will need to install .net 4.5, which is available on Vista/Server 2008 and above (if you’re on XP/Server 2003 its time to upgrade).
Error getting response stream (Write: The authentication or decryption has failed.): SendFailure
This is caused by the indexer using a new certificate authority that is not trusted by mono 2.10. The solution is to upgrade to mono 3.x, on Ubuntu this can be done via this method: http://stackoverflow.com/a/13384233/882971 We recommend upgrading to mono 3.x to fix a number of bugs and add support for .net 4.5 features.
The request timed out
Sonarr seems to have issues with certain TLS versions or configurations. If you get the following error messages in your log:
And you can see the following in the trace logfile:
You might fix it by installing libcurl3. On Ubuntu/Debian use;
A few months ago my dad gave me a spare computer and after a bit of research I set out on creating a home media server. A couple of weeks later I realized this wasn't just a project, it was a full-blown hobby.
After a ton of trial and error and a couple of hard drive wipes later, I've finally achieved a setup that I am truly happy with.
My goal here is to document as much of it as possible, and be as available as I can in the comments here so I can help out anyone else starting their home server adventure!
By the end of this guide, you will have a server that lets you access your media wherever you want, automatically grabs movies and tv shows when they are requested via a web UI and is optimized for seeding.
Prerequisites
While all of the services we install will be running in Docker, this setup expects you are using Ubuntu 18.04. You can follow along, but when I start talking about mounting hard drives and writing bash scripts you may have to figure stuff out on your own!
Table of Contents
I. The Stack
II. Tips for managing your hard drives
III. Installing mhddfs (patched)
IV. Mounting Multiple Drives as One
V. Installing Docker
VI. Plex Config
VII. Transmission Config
VIII. Jackett Config
IX. Sonarr & Radarr Config
X. Ombi Config
Here's the stack we'll be using. There will be a section describing the installation and configuration for each one of these :)
Docker lets us run and isolate each of our services into a container. Everything for each of these services will live in the container except the configuration files which will live on our host.
Plex is a 'client-server media player system'. There are a few alternatives, but I chose Plex here because they have a client available on nearly every platform.
Transmission is a torrent client. I used to use Deluge but honestly found it pretty buggy and unreliable. Transmission also lets you easily run bash scripts whenever a torrent finishes which is huge.
Jackett is a tool that Sonarr and Radarr use to search indexers and trackers for torrents
Sonarr is a tool for automating and managing your TV library. It automates the process of searching for torrents, downloading them then 'moving' them to your library. It also checks RSS feeds to automatically download new shows as soon as they're uploaded! Radarr Is a fork of Sonarr that does all the same stuff but for Movies
Ombi is a super simple web UI for sending requests to Radarr and Sonarr
Tips for managing your hard drives
Here are some tips for how to manage your hard drives and data.
Optimizing for Ratios
I use private trackers to get my torrents, and this means I need to maintain a ratio. If you aren't familiar with this term, it basically means you should be uploading as much, if not more than you download.
The best way I've found to do this is to mount your drives directly to the machine that handles your downloads. This means you can configure Sonarr and Radarr to create hardlinks when a torrent finishes. With this enabled, a reference to the data will exist in your media directory and in your torrent directory so Transmission can continue seeding everything you download.
HDD vs SSD
Can also be written as Space vs. Reliability and Speed. I'm a freaking hoarder when it comes to media now, so I go with HDDs. This means I need to worry about my drives randomly dying.
If you roll with SSDs, I envy you and you should skip this next section!
HDD Backups vs. Redundancy
Sonarr Download Client Setup
HDDs are very prone to randomly dying and you need to prepare for this. You can either set up an array of drives and use something like RAID, but you usually end up losing some space and it's not very easy to expand. I'm building my library from scratch so I want to be able to expand the space on my server as I download more media.
So instead, I mount all of my drives and then use mhddfs to treat them as one file system, and what's really cool is that it automatically fills up your drives in order.
update: I still haven't found a good way to keep backups of this data and am actually working on a way around this now.
Edit: I've gotten a lot of feedback on Reddit and it sounds like using either LVM or Mergerfs + Snapraid might be a better setup. If you are interested, check this post out by Linuxserver.io! I'll be doing that soon too :)
mhddfs contains a bug where you can occasionally run into a segfault error when mounting your drives. You'll want to install it via the patch in this repo, but it's a bit tricky.
The docker installation method is outdated and doesn't run so you'll have to install fakeroot
and run the command from the Readme.
It'll give you trouble about signing, ignore it and install the .deb package
To get your drives to mount on boot we have to edit your /etc/fstab
file. Add the following lines at the end of your file and replace the drive IDs with your own.
This mounts both drives on /mnt/hdd1
and /mnt/hdd2
and then mounts them together via mhddfs
on /mnt/media
. Now let’s set up our file system with a folder for torrents and a couple for our Libraries.
This is an easy one :)
I also like to keep my configs in one easy place in case I want to transfer them anywhere, so let’s create a folder to hold our docker container configs and create our docker-compose.yml
file
And add this to your docker-compose file. We will be filling in the services in the coming steps. If you are confused on how to add the services or how your file should look, here is a good resource on docker-compose.
This will start your Plex server on port 32400, and add the volumes /mnt
and ~/docker-services/plex/config
onto the container. If you are trying to move your current Plex configs over, run something like this
Note that plex is looking for your config directory to contain a single directory Library
. Look for that directory and copy it over.
If you are on something other than Ubuntu, refer to this page to find your configs.
Notice how we mount our torrent drive on the container in the same location as the host, rather than something like /downloads
(which is suggested over at linuxserver). This, plus the config below ensures Sonarr and Radarr send torrents to the right directory.
Once Transmission has started for the first time, it will make a settings.json
file for you (and will overwrite/reset it every time you run docker-compose up
). here are some changes you should make to the settings file. Come back here later to make these changes once everything is started, then run docker restart transmission
.
Note: This get’s reset every time you create your container for some reason. Keep a backup!
See that script that get’s run once a torrent is done? This will search for any .rar files and decompress them in your torrents. Super helpful, let’s make that and then we’re done here!
This is super basic and just boots your Jackett service on port 9117. Doesn’t need much else!
Best Torrent Client Reddit
Now, these guys are freaking TRICKY. Make sure those PUID
and GUID
match the ID for your user and group… and make sure that user has read-write permissions for /mnt/media
. Sonarr and Radarr are going to try to be creating folders and files in there when they copy or hard link files over.
If you are running into issues, check the logs of the docker container or the logs in the web UI. It should tell you exactly where it’s having trouble. Then log into the user you set it to run as an attempt the same actions. See whats going on first hand.
This will open Ombi on port 3579 but sadly they don’t have SSL support by default. I can create a post on adding LetsEncrypt to this setup if it get’s enough traction!
Run this command to boot up all your services! Remember to go back and update your Transmission settings after this.
You now have these services running locally. Go to their web UI’s and configure everything.
There is some final configuration you will need to do that is out of the scope of this tutorial, but I can help if need be.
You will have to
- Configure Jackett with your indexers
- Point Sonarr and Radarr to Jackett for indexers and Transmission as a download client
- Tell Sonarr and Radarr to download Movies and Shows folders you created above
- Tell Sonarr and Radarr to use Hardlinks instead of Copies in advanced settings
- Configure Ombi to use Sonarr and Radarr for requests
Now go invite your friends to your Plex server