Link Search Menu Expand Document

How to install Jackett in a FreeNAS iocage jail

This is how i installed jackett, which works as a proxy server- it translates queries from apps (Sonarr, Radarr, SickRage, CouchPotato, Mylar, Lidarr, DuckieTV, qBittorrent, Nefarious etc.) into tracker-site-specific http queries, parses the html response, then sends results back to the requesting software. This allows for getting recent uploads (like RSS) and performing searches. Jackett is a single repository of maintained indexer scraping & translation logic - removing the burden from other apps.

Table of contents
  1. Getting started
    1. Prerequisites
  2. Installing
  3. Update Jackett
    1. Automatic update
    2. Manual update
  4. Authors
  5. Acknowledgments

Getting started

Show some love for Jackett over at https://github.com/Jackett/Jackett.

Prerequisites

  • FreeNAS Version: FreeNAS-11.3-RELEASE
  • Iocage jail version: 11.3-RELEASE

Installing

root@Jackett:~ # pkg update
root@Jackett:~ # pkg upgrade

Change from `quarterly` to `latest` in `FreeBSD.conf`:
```bash
root@Lidarr:~ # nano /etc/pkg/FreeBSD.conf
  url: "pkg+http://pkg.FreeBSD.org/${ABI}/latest",

Install Jackett:

root@Jackett:~ # pkg install jackett
Updating FreeBSD repository catalogue...
pkg: Repository FreeBSD has a wrong packagesite, need to re-create database
[Jackett] Fetching meta.txz: 100%    944 B   0.9kB/s    00:01    
[Jackett] Fetching packagesite.txz: 100%    6 MiB 283.3kB/s    00:23    
Processing entries: 100%
FreeBSD repository update completed. 31769 packages processed.
All repositories are up to date.
The following 37 package(s) will be affected (of 0 checked):

New packages to be INSTALLED:
	jackett: 0.12.1486
	mono: 5.10.1.57_2
	ca_root_nss: 3.49.1
	python27: 2.7.17_1
	readline: 8.0.1
	libffi: 3.2.1_3
	py27-pillow: 6.2.0
	tk86: 8.6.10_1
	libXrender: 0.9.10_2
	libX11: 1.6.9,1
	libxcb: 1.13.1
	libXdmcp: 1.1.3
	xorgproto: 2019.2
	libXau: 1.0.9
	libxml2: 2.9.10
	libpthread-stubs: 0.4
	libXext: 1.3.4,1
	libXScrnSaver: 1.2.3_2
	libXft: 2.3.3
	fontconfig: 2.12.6,1
	expat: 2.2.8
	freetype2: 2.10.1
	tcl86: 8.6.10
	py27-tkinter: 2.7.17_6
	py27-setuptools: 44.0.0
	webp: 1.1.0
	tiff: 4.1.0
	jpeg-turbo: 2.0.3
	jbigkit: 2.1_1
	png: 1.6.37
	giflib: 5.2.1
	openjpeg: 2.3.1
	lcms2: 2.9
	py27-olefile: 0.46
	libinotify: 20180201_1
	curl: 7.68.0
	libnghttp2: 1.40.0

Number of packages to be installed: 37

The process will require 415 MiB more space.
104 MiB to be downloaded.

Proceed with this action? [y/N]: y
Message from mono-5.10.1.57_2:

--
If you have build/runtime errors with Mono and Gtk# apps please try the
following first:

* Build Mono and gtk+ (x11-toolkits/gtk20) without CPUTYPE and with the
  default FreeBSD CFLAGS ('-O2 -fno-strict-aliasing -pipe') as Mono has
  been known to expose compiler bugs.

* Try building and running Mono with the GENERIC kernel.
  - Mono requires SYSVSHM, SYSVMSG, and SYSVSEM which are part of the
    GENERIC kernel.
  - Removing kernel options or changing defaults to use experimental
    options can adversely affect Mono's ability to build and run.

* Remove leftover semaphores / increase semaphore limits.
  - Close apps which use Mono and run `ipcs -sbt`.  Remove the
    semaphores with MODE "--rw-------" and NSEMS "8" using ipcrm (1)
  - _OR_ simply reboot which is the safest method.
  - On multi-user systems the semaphore limits may need to be increased
    from the defaults. The following should comfortably support 30 users.

    # echo "kern.ipc.semmni=40" >> /boot/loader.conf
    # echo "kern.ipc.semmns=300" >> /boot/loader.conf

* If you are in a jailed environment, ensure System V IPC are enabled.
  You can rely on the security.jail.sysvipc_allowed  sysctl to check
  this status.  The following enables this feature on the host system:
    # echo "jail_sysvipc_allow=\"YES\"" >> /etc/rc.conf

* Some process information are accessed through /proc (e.g. when using
  NUnit) and procfs(5) has to be mounted for these features to work:
    # echo "proc            /proc   procfs  rw 0 0" >> /etc/fstab
root@Jackett:~ # 

To make Jackett start as a service on boot, enter the following command:

root@Jackett:~ # sysrc "jackett_enable=YES"
jackett_enable:  -> YES

.. or you could edit this file manually:

root@Jackett:~ # nano /etc/rc.conf

Update Jackett

For some reason, the owner:group of the folder which jackett resides (/usr/local/share/jackett) was owned by a random UID:GID. If this is the case with you, you will be unable to update jackett automatically through the GUI.

Automatic update

Check which version of Jackett you are running by looking at the bottom in the web-gui. E.g.: Jackett Version 0.12.1632.0

If you have started Jackett, ensure jackett service is stopped by entering the following:

service jackett stop

Change ownership of the /usr/local/share/jackett folder.

root@Jackett:/usr/local/share # chown -R jackett:jackett jackett

Then start jackett again and click “Check for updates”:

service jackett start

I now have successfully updated to Jackett Version 0.12.1815.0

Manual update

If the above did not fix your problem, you can do a manual update by grabbing the latest version from the GitHub repository.

If you have started Jackett, ensure jackett service is stopped by entering the following:

service jackett stop

Next we will need to download the latest version of Jackett from its GitHub repository. First you will need to go to Jackett GitHub releases page and make a note of the latest version number. At the time of the writing this article, the latest version is v0.11.802. https://github.com/Jackett/Jackett/releases

Download the latest version with this command (replacing “v0.12.1632” with the latest version found above):

fetch https://github.com/Jackett/Jackett/releases/download/v0.12.1632/Jackett.Binaries.Mono.tar.gz -o /usr/local/share

Unzip the downloaded file:

root@Jackett:~ # tar -xzvf /usr/local/share/Jackett.Binaries.Mono.tar.gz -C /usr/local/share

Delete the downloaded tar.gz file:

root@Jackett:~ # rm /usr/local/share/Jackett.Binaries.Mono.tar.gz

Make a backup of the original pkg installation:

root@Jackett:~ # mv /usr/local/share/jackett /usr/local/share/jackett-old

mv our extracted Jackett binaries to original folder:

root@Jackett:~ # mv /usr/local/share/Jackett /usr/local/share/jackett

Then start jackett again

service jackett start

Authors

Mr. Johnson


Acknowledgments