Install Sonarr (Nzbdrone) Ubuntu

Nzbdronelogo

Sonarr (previously NzbDrone) is a PVR that downloads periodic media files automatically from usenet and torrents. It is a strong competitor to SickBeard. Nzbdrone has a modern UI and an active developer who is currently adding torrent support and recently added anime indexing. In the future it will include longer media file support so I have high hopes for this software. This guide is for Ubuntu 14.04.01 but also works on Xubuntu. For 15.x you can use either the systemd script or the init.d script.

Usenet Provider
Backbone
Retention
Speed
Connections
VPN
Monthly
Annual
UsenetServer
UsenetServer
2265
Unlimited
20
Yes
$10
$95.40
Usenetlink
Cloudgate
2000
100 Mbit
30
No
$15
$140
Astraweb
Astraweb
2264
Unlimited
20
No
$7.50
$96.00
UsenetBucket
XS News
1100
40 Mbit
25
No
€4.95
€60.00
Frugal
Blocknews
600
Unlimited
60
No
$4.99
$50.00

Install Sonarr (Nzbdrone) Ubuntu

Update and upgrade packages

sudo apt-get update && sudo apt-get upgrade -y

Add the mono repository from Xamarin to make sure you get the latest version

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

Enable apt-get to install from https sources

sudo apt-get install apt-transport-https -y

Add source repositories for Nzbdrone

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

Now update and install nzbdrone

sudo apt-get update
sudo apt-get install nzbdrone -y

Remove the custom NzbDrone list to avoid future dependency issues

sudo rm /etc/apt/sources.list.d/sonarr.list

Change the ownership of the Sonarr folder to your regular user and its group, replace both instances of htpcguides as your user and group

sudo chown -R htpcguides:htpcguides /opt/NzbDrone

Make sure Sonarr runs

mono /opt/NzbDrone/NzbDrone.exe

See if you can connect at http://ip.address:8989

If it loads then you can make it run on boot, press Ctrl-C to get out of the Sonarr (Nzbdrone) process

Autostart Sonarr (NzbDrone)

Autostart Sonarr with init.d Script

This is the preferred method for Ubuntu 14.x and 15.x since init.d works on all distributions

Create the Sonarr (NzbDrone) init.d script file

sudo nano /etc/init.d/nzbdrone

Paste this long code and change htpcguides to your user

#! /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=htpcguides

# 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 nzbdrone defaults

Reboot and then configure Sonarr.

Autostart Sonarr with Upstart Script

This should not be done on Ubuntu 15.x unless you already use upstart for personal reasons.

Install Upstart

sudo apt-get install upstart

Now create the nzbdrone upstart file

sudo nano /etc/init/nzbdrone.conf

Change yourusername to the username you use to log on

#author "Simon Tallmyr - Nosscire"
#description "Upstart Script to run NzbDrone as a service on Ubuntu/Debian based systems, as well as others"

#Set username for the process. Should probably be what you use for logging in
setuid yourusername

#This is the install directory. If you installed using a deb package or the NzbDrone Repository you do not need to change this
env DIR=/opt/NzbDrone

setgid nogroup
start on runlevel [2345]
stop on runlevel [016]

#respawn

exec mono $DIR/NzbDrone.exe

Hit Ctrl-X, press Enter and then Y to exit nano.

Make the script executable

sudo chmod +x /etc/init/nzbdrone.conf

Try to start the service

sudo service nzbdrone start

Reboot to test

sudo reboot

Open your browser and go to http://ip.address:8989/

You have successfully installed nzbdrone on Ubuntu 🙂

Now you can configure Nzbdrone.