Sonarr is a badass TV Show PVR that works with usenet and torrents. Create a list of shows and Sonarr will find the relevant .torrent and/or nzb files for you. For torrents it will work with uTorrent, Transmission, Deluge and a watch directory ‘blackhole' for other torrent clients. With usenet download clients you can use Sabnzbd or NZBGet. Sonarr renames and organizes your TV shows beautifully so they can easily be recognized by XBMC or Plex Media Server when you want to stream your media around your home.
Usenet Provider UsenetServer Newshosting Frugal Usenetlink
In order to use SSL with Sonarr you need another package which is not included in this guide. You can still access it through SSL outside your home network with a reverse proxy.
Here is a quick overview of the hardware advantages of the Banana Pi compared to the Raspberry Pi. You can see my detailed benchmarks (Raspberry vs Banana Pi Benchmarks: Do SATA and Gigabit Matter?) for more information.
Install Sonarr Banana Pi with Bananian
Add the Xamarin mono repository to make sure we get the latest stable mono (source)
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb http://download.mono-project.com/repo/debian wheezy main" | sudo tee /etc/apt/sources.list.d/mono-xamarin.list
sudo apt-get update
Enable apt-get to install from https sources on the Banana Pi or you will get this error
The method driver /usr/lib/apt/methods/https could not be found.
To solve it install the https package
sudo apt-get install apt-transport-https -y --force-yes
Add sources to install Sonarr on Bananian
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys FDA5DFFC
echo "deb https://apt.sonarr.tv/ master main" | sudo tee -a /etc/apt/sources.list.d/sonarr.list
Update packages
sudo apt-get update
Install Sonarr (NzbDrone) on the Banana Pi
sudo apt-get install nzbdrone -y
Take ownership of the Sonarr installation with your Banana Pi user so updates will work properly
sudo chown -R pi:pi /opt/NzbDrone
Test if Sonarr runs
mono /opt/NzbDrone/NzbDrone.exe
If you can access Sonarr at http://ip.address:8989 all is well
Kill the Sonarr (NzbDrone) process with Ctrl+C or Ctrl+Z
Remove the sonarr repository to avoid future issues with libmono-dev
sudo rm /etc/apt/sources.list.d/sonarr.list
Autostart Sonarr
There are two methods, the init.d script and upstart script. Upstart can conflict with your system so attempt the init.d method first.
Sonarr init.d Script
Create the Sonarr init.d script file
sudo nano /etc/init.d/nzbdrone
Paste this long code, adjust the user if it is not pi
#! /bin/sh
### BEGIN INIT INFO
# Provides: NzbDrone
# Required-Start: $local_fs $network $remote_fs
# Required-Stop: $local_fs $network $remote_fs
# Should-Start: $NetworkManager
# Should-Stop: $NetworkManager
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts instance of NzbDrone
# Description: starts instance of NzbDrone using start-stop-daemon
### END INIT INFO
############### EDIT ME ##################
# path to app
APP_PATH=/opt/NzbDrone
# user
RUN_AS=pi
# path to mono bin
DAEMON=$(which mono)
# Path to store PID file
PID_FILE=/var/run/nzbdrone/nzbdrone.pid
PID_PATH=$(dirname $PID_FILE)
# script name
NAME=nzbdrone
# app name
DESC=NzbDrone
# startup args
EXENAME="NzbDrone.exe"
DAEMON_OPTS=" "$EXENAME
############### END EDIT ME ##################
NZBDRONE_PID=`ps auxf | grep NzbDrone.exe | grep -v grep | awk '{print $2}'`
test -x $DAEMON || exit 0
set -e
#Look for PID and create if doesn't exist
if [ ! -d $PID_PATH ]; then
mkdir -p $PID_PATH
chown $RUN_AS $PID_PATH
fi
if [ ! -d $DATA_DIR ]; then
mkdir -p $DATA_DIR
chown $RUN_AS $DATA_DIR
fi
if [ -e $PID_FILE ]; then
PID=`cat $PID_FILE`
if ! kill -0 $PID > /dev/null 2>&1; then
echo "Removing stale $PID_FILE"
rm $PID_FILE
fi
fi
echo $NZBDRONE_PID > $PID_FILE
case "$1" in
start)
if [ -z "${NZBDRONE_PID}" ]; then
echo "Starting $DESC"
rm -rf $PID_PATH || return 1
install -d --mode=0755 -o $RUN_AS $PID_PATH || return 1
start-stop-daemon -d $APP_PATH -c $RUN_AS --start --background --pidfile $PID_FILE --exec $DAEMON -- $DAEMON_OPTS
else
echo "NzbDrone already running."
fi
;;
stop)
echo "Stopping $DESC"
echo $NZBDRONE_PID > $PID_FILE
start-stop-daemon --stop --pidfile $PID_FILE --retry 15
;;
restart|force-reload)
echo "Restarting $DESC"
start-stop-daemon --stop --pidfile $PID_FILE --retry 15
start-stop-daemon -d $APP_PATH -c $RUN_AS --start --background --pidfile $PID_FILE --exec $DAEMON -- $DAEMON_OPTS
;;
status)
# Use LSB function library if it exists
if [ -f /lib/lsb/init-functions ]; then
. /lib/lsb/init-functions
if [ -e $PID_FILE ]; then
status_of_proc -p $PID_FILE "$DAEMON" "$NAME" && exit 0 || exit $?
else
log_daemon_msg "$NAME is not running"
exit 3
fi
else
# Use basic functions
if [ -e $PID_FILE ]; then
PID=`cat $PID_FILE`
if kill -0 $PID > /dev/null 2>&1; then
echo " * $NAME is running"
exit 0
fi
else
echo " * $NAME is not running"
exit 3
fi
fi
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart|force-reload|status}" >&2
exit 1
;;
esac
exit 0
Ctrl+X, Y and Enter to save
Make the Sonarr init.d script executable
sudo chmod +x /etc/init.d/nzbdrone
Update the Sonarr init.d to start on boot
sudo update-rc.d /etc/init.d/nzbdrone defaults
If the above command gives an error try
sudo update-rc.d nzbdrone defaults
Reboot and then configure Sonarr.
It is a good idea to remove the Sonarr repository afterwards since it can cause future dependency issues when upgrading distros.
sudo rm /etc/apt/sources.list.d/sonarr.list