Install Jackett Debian Linux for Custom Torrents in Sonarr

jackettJackett lets you use additional torrent providers to Sonarr and CouchPotato. Jackets transforms your home media server into a Torznab API server. This Torznab API server interfaces with Sonarr to enable additional torrent providers on this list. This tutorial will walk you through installing and autostarting Jackett with init.d or systemd on Debian 7 Wheezy, Debian 8 Jessie and later versions. There is already a guide to add your custom Torznab providers in Sonarr. I will assume you already have Sonarr installed and therefore have the latest mono for your system. The guide was tested on Debian 7 and 8 for 32 bit and 64 bit systems. If you are using a Raspberry Pi or another ARM device then use this guide.

Attention: If you want to build an older Jackett with public torrent providers see this guide

VPN Service
All Platforms
Number of Connections
Monthly Cost
Annual Cost
Private Internet Access
Yes
5
$6.95
$39.95
($3.33 / month)
Pure VPN
Yes
5
$10.95
$59.95
($4.91 / month)
IPVanish
Yes
5
$10.00
$77.00
($6.41 / month)

Install Jackett Debian for Custom Torrents in Sonarr

Install libcurl and bzip for opening the Jackett compiled binary

sudo apt-get update
sudo apt-get install libcurl4-openssl-dev bzip2 -y

Download the latest Jackett release, I have automated grabbing the newest release but it may stop working if the Jackett team alter the folder or naming convention for new releases. If it doesn't work check here to get the URL and paste it in the bottom line.

Note the Jackett that supports public trackers is here

cd ~
jackettver=$(wget -q https://github.com/Jackett/Jackett/releases/latest -O - | grep -E \/tag\/ | awk -F "[><]" '{print $3}')
wget -q https://github.com/Jackett/Jackett/releases/download/$jackettver/Jackett.Binaries.Mono.tar.gz

Unpack the Jackett release

tar -xvf Jackett*

Make the Jackett installation folder

sudo mkdir /opt/jackett

Move the unzipped Jackett installation

sudo mv Jackett/* /opt/jackett

Change ownership of Jackett to your main user

sudo chown -R user:user /opt/jackett

Test running Jackett which runs on port 9117 http://ip.address:9117

mono /opt/jackett/JackettConsole.exe

Kill the Jackett process with Ctrl+C so we can start it automatically on boot using an init.d or systemd script.

This command will tell you which startup type you are using, if you see systemd use systemd, for anything else use the init.d script

sudo stat /proc/1/exe

Jackett init.d Script

Create the Jackett init.d startup script for Debian.

sudo nano /etc/init.d/jackett

Paste the Jackett init.d script, adjust your RUN_AS value to your main user

#! /bin/sh
### BEGIN INIT INFO
# Provides: Jackett
# 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 Jackett
# Description: starts instance of Jackett using start-stop-daemon
### END INIT INFO

############### EDIT ME ##################
# path to app
APP_PATH=/opt/jackett

# user
RUN_AS=user

# path to mono bin
DAEMON=$(which mono)

# Path to store PID file
PID_FILE=/var/run/jackett/jackett.pid
PID_PATH=$(dirname $PID_FILE)

# script name
NAME=jackett

# app name
DESC=Jackett

# startup args
EXENAME="JackettConsole.exe"
DAEMON_OPTS=" "$EXENAME

############### END EDIT ME ##################

JACKETT_PID=`ps auxf | grep $EXENAME | 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 $JACKETT_PID > $PID_FILE

case "$1" in
start)
if [ -z "${JACKETT_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 "Jackett already running."
fi
;;
stop)
echo "Stopping $DESC"
echo $JACKETT_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

Make the Jackett init.d script executable

sudo chmod +x /etc/init.d/jackett

Update your Debian system to use the Jackett init.d script

sudo update-rc.d jackett defaults

Now start the Jackett service

sudo service jackett start

Autostart Jackett Systemd Script

Create the Jacket systemd service on Debian

nano /etc/systemd/system/jackett.service

Paste the Jackett systemd script, change user to your user

[Unit]
Description=Jackett Daemon
After=network.target

[Service]
User=user
Restart=always
RestartSec=5
Type=simple
ExecStart=/usr/bin/mono --debug /opt/jackett/JackettConsole.exe
TimeoutStopSec=20

[Install]
WantedBy=multi-user.target

Enable the Jackett systemd script

sudo systemctl enable jackett

Start the Jackett systemd script

sudo service jackett start

You can access Jackett on port 9117. Follow the  Jackett configuration guide so you can add custom torrents in Sonarr.