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 | |||||||
---|---|---|---|---|---|---|---|
UsenetServer | |||||||
Newshosting | |||||||
Frugal | |||||||
Usenetlink |
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.