I try to check this thread about every 2 weeks but I will not respond to PMs for support. Please post in the thread so other people also assist.

Like a number of people who may be in the same case I was in, I had gone to Corral for Docker Support. While these applications worked well in Corral as docker containers with datasets shared via 9PFS. I found coming back to FreeNAS 11 some of the applications such as Transmission and Plex began to choke and lockup with the same datasets shared under NFS in Docker containers running under Rancher.

I decided I'd migrate all of my applications back to Jails as I had them before Corral as I found them easier to manage and less resource intensive on the system. When I did that I made detailed notes on how to setup each application's base install from scratch. I figured I'd try to give back to the community a bit and share the steps for each application.

This should help guide you to getting these apps installed however I don't have specifics on settings for each as it may vary based on your usage requirements. Most of these apps have their own forums, github repos, etc, where you can get help for each application on its own.

This setup assumes you have a video dataset, a torrent dataset and apps dataset that has a dataset under it for each application's configuration files owned by the user that it will run as.

Determining the best choice for permissions for the video and torrents dataset is up to you to decide based on your setup. I highly recommend reading this post to get a better idea on the numerous ways permissions can be done in jails to best fit your needs.

Having the apps dataset and datasets under it made for easy snapshots of just the application config data and easy reinstalls of jails as to import data you would just need to mount the /config directory back into the new jail.

If anyone would like to see any changes let me know and I'll be happy to make them. If you find an issue with anything please make a post in the discussion thread for this resource.

For any jail below that has commands for iocage all commands should be run from the FreeNAS host. On the iocage create command for each jail you MUST replace <IP>,<MASK>,<GATEWAY> with the correct values for your setup.

There are 2 sets of directions below based on if you require the plexpass version or not. Personally I mount the video filesystem as readonly inside the plex jail as I don't need to be able to delete media from inside plex as it is managed through other applications.

If you would like to change to the latest repo to get faster updates to Plex than every month or so you can do that by creating the following file.iocage exec plex "mkdir -p /usr/local/etc/pkg/repos"
iocage exec plex "vi /usr/local/etc/pkg/repos/FreeBSD.conf"

Create an rc file for radarr using your favorite editor at /mnt/iocage/jails/radarr/root/usr/local/etc/rc.d/radarr

#!/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

Create an rc file for radarr using your favorite editor at /mnt/iocage/jails/sonarr/root/usr/local/etc/rc.d/sonarr

#!/bin/sh

# $FreeBSD$
#
# PROVIDE: sonarr
# REQUIRE: LOGIN
# KEYWORD: shutdown
#
# Add the following lines to /etc/rc.conf.local or /etc/rc.conf
# to enable this service:
#
# sonarr_enable: Set to YES to enable sonarr
# Default: NO
# sonarr_user: The user account used to run the sonarr 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
# sonarr_group: The group account used to run the sonarr 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
# sonarr_data_dir: Directory where sonarr configuration
# data is stored.
# Default: /var/db/sonarr

Create an rc file for jackett using your favorite editor at /mnt/iocage/jails/jackett/root/usr/local/etc/rc.d/jackett

#!/bin/sh

# $FreeBSD$
#
# PROVIDE: jackett
# REQUIRE: LOGIN
# KEYWORD: shutdown
#
# Add the following lines to /etc/rc.conf.local or /etc/rc.conf
# to enable this service:
#
# jackett_enable: Set to YES to enable jackett
# Default: NO
# jackett_user: The user account used to run the jackett 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
# jackett_group: The group account used to run the jackett 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
# jackett_data_dir: Directory where jackett configuration
# data is stored.
# Default: /var/db/jackett

If you don't need or want the VPN, you can omit installing openvpn, setting up the ipfw_rules file, running the devfs command and any sysrc / service commands related to openvpn/firewall/ipfw.

If you are going to going to use the vpn, you will need add a preinit task in the webui to run the following command as well as run it once before you setup the jail. This adds a rule to the default devfs_ruleset applied to all iocage jails to allow them to access tun devices.devfs rule -s 4 add path 'tun*' unhide

The default transmission settings will prevent any access to the WebUI from anything other than from localhost. We need to access edit the settings file for transmission to fix this to do so we need to stop transmission and edit settings.json file for Transmission.iocage exec transmission service transmission stop

Using your favorite editor edit /mnt/tank1/apps/transmission/config/transmission-home/settings.json and find the lines prefixed with rpc-whitelist. You have 2 options disabling the whitelist or adding your IP to the whitelist.

To disable the whitelist change the following lines:

Code:

"rpc-whitelist-enabled": true,

to

Code:

"rpc-whitelist-enabled": false,

To add your IP edit the line below to include your IP. The setting is a comma separated list, so if your IP was 192.168.1.100 you would change it as follows.

Code:

"rpc-whitelist": "127.0.0.1",

to

Code:

"rpc-whitelist": "127.0.0.1,192.168.1.100",

After you have completed either of these you can start transmission again.iocage exec transmission service transmission start

Navigate to http://JailIP and set the database location to "/config" and pick your timezone.

After you have completed the initial setup in the UI go back and do the following as some settings are stored in the config.php in the web directory such as homepage settings and email settings. If you ever need to recreate the jail you can omit the first 2 of the next 3 steps and just run the link instead of setting up your settings again.iocage exec organizr cp -a /usr/local/www/Organizr/api/config/config.php /config/config.php
iocage exec organizr rm /usr/local/www/Organizr/api/config/config.php
iocage exec organizr ln -s /config/config.php /usr/local/www/Organizr/api/config/config.php

You only need to run the next two commands if you are creating the jail for the first time.iocage exec ombi sqlite3 /config/Ombi.sqlite "create table aTable(field1 int); drop table aTable;"
iocage exec ombi mkdir -p /config/Backups

Create an rc file for ombi using your favorite editor at /mnt/iocage/jails/ombi/root/usr/local/etc/rc.d/ombi

#!/bin/sh
#
# $FreeBSD$
#
# PROVIDE: ombi
# REQUIRE: LOGIN
# KEYWORD: shutdown
#
# Add the following lines to /etc/rc.conf.local or /etc/rc.conf
# to enable this service:
#
# ombi_enable (bool): Set to NO by default.
# Set it to YES to enable it.
# ombi_user: The user account ombi daemon runs as what
# you want it to be. It uses 'ombi' user by
# default. Do not sets it as empty or it will run
# as root.
# ombi_group: The group account ombi daemon runs as what
# you want it to be. It uses 'ombi' group by
# default. Do not sets it as empty or it will run
# as wheel.
# ombi_data_dir: Directory where ombi configuration
# data is stored.
# Default: /usr/local/share/ombi

For what I used, the code is organized and works, so thumbs up for that. The only thing that is missing is a simple screenshot of the pool/dataset layout that your guide is based on. This would help illustrate the design for the inexperienced FreeNAS users. Perhaps doing so will provide the clarity that others are seeking.

Excellent resource! Thanks so very much. I would love to see a little more clarity on the recommended setup for the datasets, as well as setting permissions. I know that permissions in particular can be very troublesome and the addition of a short step-by-step for this aspect would make this guide even more incredible that it already is.

Lastly, can we use media:media credentials on all iocages so they all match and all have the same permissions to write/read to the same folders?
If so would I just have to change:
iocage exec radarr chown -R media:media /usr/local/share/Radarr /config
Because I tried this and just got an error :(

Lastly iocage exec radarr rm /usr/local/share/Radarr.*.linux.tar.gz
Didnt work, I had to go into the jail and do it manually, no biggie just thought I'd mention it.

Just curious... have any of you tried following the guide for Organizr? I get to the point where I navigate to http://JailIP and nginx throws an error. I'm guessing it has something to do with nginx.conf. When I change the line "root /usr/local/www/Organizr;" to "root /usr/local/www/nginx;", I do not get an error. Any suggestions?