FreeNAS 11.2 US3 w/ Plex Pass, Radarr, Tautulli, NZBget, & Medusa. Manual Install

statik

Explorer
Joined
Sep 8, 2013
Messages
71
Quick story: I was running FreeNAS 11.1 with Plex, Radarr, Medusa, SABnzbd, & Tautulli just fine until I tried a latest Plex update which was beyond what FreeNAS 11.1 could handle.... My bad... and I could not revert back. So I decided to finally make the plunge to this new FreeNAS 11.2 (Which I tried in the past and did not like). So I did it, I wiped all of my jails and my data sets besides my data sets which hold all of my movies, tv shows, and files. I am sure I am not the only one that has done or will do this. But this is what I did and hopefully, it will work for you.

After doing my Jail and Data Set wipes, I installed everything manually. Reasons I could not resolve, I could not install any Plugins or Jails from the FreeNAS GUI... but really you don't need to. I did it all manually, and this is exactly what I did. After reading many forum posts and guides, I spent literally four days on this, nothing else, late nights just to get it working. Copy and paste the following if you are in the same or similar situation as me. Also on a side note, I could not get SABnzbd working, I could not find any good guide, so I went to use NZBget. On a second side note, after installing the latest Plex Media Server Plexpass version, I realized Tautulli is no longer needed because the latest and greatest Plex comes with most of the Tautulli features. FYI, I have to volumes from 20x drives, VolumeData and VolumeData2.

----------------------------- Plex Media Server Plexpass
# Create the Iocage Jail
iocage create -n "plex" -r 11.2-RELEASE ip4_addr="vnet0|192.168.1.240/24" defaultrouter="192.168.1.1" vnet="on" allow_raw_sockets="1" boot="on"

# Mount Storages
iocage exec plex "mkdir -p /config"
iocage fstab -a plex /mnt/VolumeData/apps/Plex /config nullfs rw 0 0
iocage fstab -a plex /mnt/VolumeData/Media /Media nullfs rw 0 0
iocage fstab -a plex /mnt/VolumeData2/Media /Media2 nullfs rw 0 0

# Mount Remote Storages (Synology NFS)
iocage fstab -a plex 192.168.1.245:/volume1/SynologyRoot /Media3 nfs rw 0 0

# Install Packages
iocage exec plex pkg install -y python2 py27-sqlite3 py27-openssl py27-pycryptodome security/ca_root_nss git mono mediainfo sqlite3 curl nano wget
iocage exec plex pkg update -f
iocage exec plex pkg upgrade -fy

# Install Plex Media Server Plexpass
iocage exec plex pkg install -y plexmediaserver-plexpass

# Set Permissions & Make Configuration Changes
iocage exec plex chown -R plex: plex /config

# Enable Service
iocage exec plex sysrc "plexmediaserver_plexpass_enable=YES"
iocage exec plex sysrc plexmediaserver_plexpass_support_path="/config"

# Start Plex
iocage exec plex service plexmediaserver_plexpass start

# Allow Plex Media Server to Update to the Latest Version
iocage exec plex mkdir -p /usr/local/etc/pkg/repos
iocage exec plex echo 'FreeBSD: { url: "pkg+http://pkg.FreeBSD.org/${ABI}/latest" }' > /usr/local/etc/pkg/repos/FreeBSD.conf



----------------------------- Radarr
# Create the Iocage Jail
iocage create -n "radarr" -r 11.2-RELEASE ip4_addr="vnet0|192.168.1.242/24" defaultrouter="192.168.1.1" vnet="on" allow_raw_sockets="1" boot="on"

# Mount Storages
iocage exec radarr mkdir -p /config
iocage fstab -a radarr /mnt/VolumeData/apps/Radarr /config nullfs rw 0 0
iocage fstab -a radarr /mnt/VolumeData/Media /Media nullfs rw 0 0
iocage fstab -a radarr /mnt/VolumeData2/Media /Media2 nullfs rw 0 0

# Mount Remote Storages (Synology NFS)
iocage fstab -a radarr 192.168.1.245:/volume1/SynologyRoot /Media3 nfs rw 0 0

# Install Packages
iocage exec radarr pkg install -y python2 py27-sqlite3 py27-openssl py27-pycryptodome security/ca_root_nss git mono mediainfo sqlite3 curl nano wget
iocage exec radarr pkg update -f
iocage exec radarr pkg upgrade -fy

# Install Radarr
iocage exec radarr ln -s /usr/local/bin/mono /usr/bin/mono
iocage exec radarr "fetch https://github.com/Radarr/Radarr/re...0.1293/Radarr.develop.0.2.0.1293.linux.tar.gz -o /usr/local/share"
iocage exec radarr "tar -xzvf /usr/local/share/Radarr.develop.0.2.0.1293.linux.tar.gz -C /usr/local/share"
iocage exec radarr rm /usr/local/share/Radarr.develop.0.2.0.1293.linux.tar.gz

# Set Permissions & Make Configuration Changes
iocage exec radarr "pw user add radarr -c radarr -u 352 -d /nonexistent -s /usr/bin/nologin"
iocage exec radarr "pw user add media -c media -u 8675309 -d /nonexistent -s /usr/bin/nologin"
iocage exec radarr "pw groupmod media -m radarr"
iocage exec radarr chown -R media:media /usr/local/share/Radarr /config
iocage exec radarr mkdir /usr/local/etc/rc.d

Create an rc file (Copy an rc file from another app like Tautulli) and include the following:

#!/bin/sh

# $FreeBSD$
#
# PROVIDE: radarr
# REQUIRE: LOGIN
# KEYWORD: shutdown
#
# Add the following lines to /etc/rc.conf.local or /etc/rc.conf
# to enable this service:
#
# radarr_enable: Set to YES to enable radarr
# Default: NO
# radarr_user: The user account used to run the radarr daemon.
# This is optional, however do not specifically set this to an
# empty string as this will cause the daemon to run as root.
# Default: media
# radarr_group: The group account used to run the radarr daemon.
# This is optional, however do not specifically set this to an
# empty string as this will cause the daemon to run with group wheel.
# Default: media
# radarr_data_dir: Directory where radarr configuration
# data is stored.
# Default: /var/db/radarr

. /etc/rc.subr
name=radarr
rcvar=${name}_enable
load_rc_config $name

: ${radarr_enable:="NO"}
: ${radarr_user:="radarr"}
: ${radarr_group:="radarr"}
: ${radarr_data_dir:="/config"}

pidfile="${radarr_data_dir}/nzbdrone.pid"
command="/usr/sbin/daemon"
procname="/usr/local/bin/mono"
command_args="-f ${procname} /usr/local/share/Radarr/Radarr.exe --data=${radarr_data_dir} --nobrowser"

start_precmd=radarr_precmd
radarr_precmd() {
if [ ! -d ${radarr_data_dir} ]; then
install -d -o ${radarr_user} -g ${radarr_group} ${radarr_data_dir}
fi

export XDG_CONFIG_HOME=${radarr_data_dir}
}

run_rc_command "$1"


# Enable Service
iocage exec radarr chmod u+x /usr/local/etc/rc.d/radarr
iocage exec radarr sysrc "radarr_enable=YES"
iocage exec radarr service radarr start
iocage exec radarr sysrc 'radarr_user=media'

# Start Radarr
iocage exec radarr service radarr start

----------------------------------- Tautulli
# Create the Iocage Jail
iocage create -n "tautulli" -r 11.2-RELEASE ip4_addr="vnet0|192.168.1.244/24" defaultrouter="192.168.1.1" vnet="on" allow_raw_sockets="1" boot="on"

# Mount Storages
iocage exec tautulli mkdir -p /config
iocage fstab -a tautulli /mnt/VolumeData/apps/Tautulli /config nullfs rw 0 0

# Install Packages
iocage exec tautulli pkg install -y python2 py27-sqlite3 py27-openssl py27-pycryptodome security/ca_root_nss git mono mediainfo sqlite3 curl
iocage exec radarr pkg update -f
iocage exec radarr pkg upgrade -fy

# Install Tautulli
iocage exec tautulli git clone https://github.com/Tautulli/Tautulli.git /usr/local/share/tautulli

# Set Permissions & Make Configuration Changes
iocage exec tautulli "pw user add tautulli -c tautulli -u 109 -d /nonexistent -s /usr/bin/nologin"
iocage exec tautulli chown -R tautulli:tautulli /config
iocage exec tautulli chown -R tautulli:tautulli /usr/local/share/tautulli
iocage exec tautulli cp /usr/local/share/tautulli/init-scripts/init.freenas /usr/local/etc/rc.d/tautulli
iocage exec tautulli chmod u+x /usr/local/etc/rc.d/tautulli

# Enable Service
iocage exec tautulli sysrc "tautulli_enable=YES"
iocage exec tautulli sysrc "tautulli_user=tautulli"
iocage exec tautulli sysrc "tautulli_dir=/usr/local/share/tautulli"
iocage exec tautulli sysrc "tautulli_chdir=${tautulli_dir}"
iocage exec tautulli sysrc "tautulli_pid=${tautulli_dir}/tautulli.pid"}
iocage exec tautulli sysrc "tautulli_flags=--datadir /config"

# Start Tautulli
iocage exec tautulli service tautulli start


------------------------------------ NZBget

# Create the Iocage Jail
iocage create -n "nzbget" -r 11.2-RELEASE ip4_addr="vnet0|192.168.1.243/24" defaultrouter="192.168.1.1" vnet="on" allow_raw_sockets="1" boot="on"

# Mount Storages
iocage exec nzbget mkdir -p /config
iocage exec nzbget mkdir -p /downloads
iocage fstab -a nzbget /mnt/VolumeData/apps/NZBget /config nullfs rw 0 0
iocage fstab -a nzbget /mnt/VolumeData/Media /Media nullfs rw 0 0
iocage fstab -a nzbget /mnt/VolumeData2/Media /Media2 nullfs rw 0 0

# Mount Remote Storages (Synology NFS)
iocage fstab -a nzbget 192.168.1.245:/volume1/SynologyRoot /Media3 nfs rw 0 0

# Install Packages
iocage exec nzbget pkg install -y security/ca_root_nss git mono mediainfo sqlite3 curl nano wget unrar unzip p7zip
iocage exec nzbget pkg update -f
iocage exec nzbget pkg upgrade -fy

# Install NZBget
iocage exec nzbget pkg install -y nzbget

# Set Permissions & Make Configuration Changes
iocage exec nzbget ln -s /usr/local/bin/python2.7 /usr/bin/python
iocage exec nzbget ln -s /usr/local/bin/python2.7 /usr/bin/python2
iocage exec nzbget "pw groupadd -n media -g 8675309"
iocage exec nzbget "pw user add media -c media -u 8675309 -d /nonexistent -s /usr/bin/nologin"
iocage exec nzbget chown -R media:media /downloads /config

Open NZBget.conf and set the "ControlUsername=" and "ControlPassword="

# Enable Service
iocage exec nzbget sysrc nzbget_enable=YES
iocage exec nzbget sysrc nzbget_conf_dir="/config"

# Start NZBget
iocage exec nzbget service nzbget start



------------------------------ Medusa
# Create the Iocage Jail
iocage create -n "medusa" -r 11.2-RELEASE ip4_addr="vnet0|192.168.1.241/24" defaultrouter="192.168.1.1" vnet="on" allow_raw_sockets="1" boot="on"

# Mount Storages
iocage exec medusa mkdir -p /config
iocage fstab -a medusa /mnt/VolumeData/apps/Medusa /config nullfs rw 0 0
iocage fstab -a medusa /mnt/VolumeData/Media /Media nullfs rw 0 0
iocage fstab -a medusa /mnt/VolumeData2/Media /Media2 nullfs rw 0 0

# Mount Remote Storages (Synology NFS)
iocage fstab -a medusa 192.168.1.245:/volume1/SynologyRoot /Media3 nfs rw 0 0

# Install Packages
iocage exec medusa pkg install -y python2 python27 py27-pip py27-lxml py27-sqlite3 py27-openssl py27-pycryptodome security/ca_root_nss git mono mediainfo sqlite3 curl nano wget
iocage exec medusa pkg update -f
iocage exec medusa pkg upgrade -fy
iocage exec medusa pip install --upgrade pip

# Install Medusa
iocage exec medusa "git clone https://github.com/pymedusa/Medusa.git /usr/local/share/medusa"
iocage exec medusa "pip install -r /usr/local/share/medusa/requirements.txt"

# Set Permissions & Make Configuration Changes
iocage exec medusa "pw user add medusa -c medusa -u 351 -d /nonexistent -s /usr/bin/nologin"
iocage exec medusa "pw user add media -c media -u 8675309 -d /nonexistent -s /usr/bin/nologin"
iocage exec medusa "pw groupadd -n media -g 8675309"
iocage exec medusa "pw groupmod media -m medusa"
iocage exec medusa chown -R media:media /usr/local/share/medusa /config
iocage exec medusa mkdir /usr/local/etc/rc.d
iocage exec medusa cp /usr/local/share/medusa/runscripts/init.freebsd /usr/local/etc/rc.d/medusa
iocage exec medusa chmod u+x /usr/local/etc/rc.d/medusa

# Enable Service
iocage exec medusa sysrc "medusa_enable=YES"
iocage exec medusa sysrc "medusa_user=media"
iocage exec medusa sysrc "medusa_dir=/usr/local/share/medusa"
iocage exec medusa sysrc "medusa_datadir=/config"

# Start Medusa
iocage exec medusa service medusa start
 
Last edited:

danb35

Hall of Famer
Joined
Aug 16, 2011
Messages
15,456

msbxa

Contributor
Joined
Sep 21, 2014
Messages
151
FYI, I have to volumes from 20x drives, VolumeData and VolumeData2.
Good guide to start with thanks static but one question?

Any reasons why doing it in 2 separate volumes?

iocage fstab -a plex /mnt/VolumeData/Media /Media nullfs rw 0 0
iocage fstab -a plex /mnt/VolumeData2/Media /Media2 nullfs rw 0 0
 

statik

Explorer
Joined
Sep 8, 2013
Messages
71
FYI, I have to volumes from 20x drives, VolumeData and VolumeData2.
Good guide to start with thanks static but one question?

Any reasons why doing it in 2 separate volumes?

iocage fstab -a plex /mnt/VolumeData/Media /Media nullfs rw 0 0
iocage fstab -a plex /mnt/VolumeData2/Media /Media2 nullfs rw 0 0

10 disks max allowed per volume.
 

statik

Explorer
Joined
Sep 8, 2013
Messages
71

statik

Explorer
Joined
Sep 8, 2013
Messages
71
Maybe it is different now. but when I originally built my 20 bay FreeNAS it only let me have a max of 10 disks per RaidZ2 volume. That is why I have two volumes. I just keep all jails and movies on one volume and tv shows and everything else on the other.

Made an update to NZBget guide:

Open NZBget.conf and set the "ControlUsername=" and "ControlPassword="

# Enable Service
iocage exec nzbget sysrc nzbget_enable=YES
iocage exec nzbget sysrc nzbget_conf_dir="/config"

# Start NZBget
iocage exec nzbget service nzbget start
 

danb35

Hall of Famer
Joined
Aug 16, 2011
Messages
15,456
it only let me have a max of 10 disks per RaidZ2 volume.
This has never been the case. You wouldn't ordinarily want more than 10 disks in a vdev (though it's certainly possible), but you can have as many vdevs in a pool as you want/need.
 

statik

Explorer
Joined
Sep 8, 2013
Messages
71
Besides the point of my post. That was what I dealt with years ago and I tried to make it one large volume but was not able to.
 

statik

Explorer
Joined
Sep 8, 2013
Messages
71
Updated adding the commands to mount remote storage on a Synology. I ran out of space on my 40tb FreeNAS, so procured an RS814 Synology and bought 4x 6TB Red Pro 256MB Cache drives.
 

Savell Martin

Contributor
Joined
Jun 10, 2013
Messages
164
The nzbget guide doesnt seem to work for some reason.
Followed it fully using my own mnt points, and when running service it says:
root@freenas[~]# iocage exec nzbget service nzbget start
/usr/local/etc/rc.d/nzbget: /usr/local/bin/nzbget-D: not found
/usr/local/etc/rc.d/nzbget: 16: Syntax error: ";;" unexpected
 

msbxa

Contributor
Joined
Sep 21, 2014
Messages
151
Any reason why this command doesn't work?

iocage exec medusa pip install --upgrade pip

jexec: execvp: pip: No such file or directory
 

cripplesauce

Cadet
Joined
Aug 10, 2019
Messages
3
I think i figured out a possible bandaid fix

i 'consoled' into the jail with # iocage console jail_name
thrn ran pip as python module # python2 -m pip install --upgrade pip

rinse and repeat module step for pip lines

seems like an environment variable issue idk how to fix
 
Top