Install Sonarr Raspberry Pi 2 with latest stable mono thanks to the Xamarin packages. Sonarr is an alternative to SickBeard and SickRage for Usenet and torrent periodic video automation. It works well with NZBGet and Sabnzbd for usenet and Transmission for torrents. Sonarr also works with Jackett for additional torrent providers but you will have to build an older Jackett for public trackers. Mono is a heavy package and it can take some time to load Sonarr so be mindful of this when you are starting the service or waiting for it to start on boot. This was tested on Raspbian Wheezy and Jessie as well as Minibian.
Usenet Provider | |||||||
---|---|---|---|---|---|---|---|
UsenetServer | |||||||
Newshosting | |||||||
Frugal | |||||||
Usenetlink |
If you are trying to figure out which hardware would work best for you, consider reading the Pi benchmarks.
Install Sonarr Raspberry Pi 2 with Latest Stable Mono
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
Install Sonarr Raspberry Pi 2
Enable apt-get to install from https sources 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 Raspbian
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 repository list of packages
sudo apt-get update
Install Sonarr (NzbDrone)
sudo apt-get install nzbdrone -y
Take ownership of the Sonarr installation so updates will work properly
sudo chown -R pi:pi /opt/NzbDrone
Autostart Sonarr
Init.d scripts work on all Raspbian versions like Wheezy, Jessie and later
Sonarr init.d Script
Create the Sonarr init.d script file
sudo nano /etc/init.d/nzbdrone
Paste the Sonarr init.d startup script
#! /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 nzbdrone defaults 98
Reboot and wait for Sonarr to start, it can take a minute or two so be patient
Then configure Sonarr
sudo reboot
Sonarr on OSMC Update and Raspbian Fix
If you are using OSMC you should remove the sonarr repo from the sources.list (source here). The repository is not necessary for updating Sonarr and can cause dependency issues.
sudo rm /etc/apt/sources.list.d/sonarr.list
Note that Sonarr takes a minute or two to start up on boot so if you can't access the Sonarr web interface, be patient, it will be accessible when the Pi finishes loading it. This has been tested on a Raspbian fresh install at least 5 times and it does work. On the first run it can take 5 minutes, after the first run it will automatically start faster on boot.
You can access Sonarr on its default port at http://ip.address:8989
Now you can configure NzbDrone. An updated guide to include Sonarr's torrent abilities will be published when the updates make it to the master branch.