Freenas Plex Setup

Before downloading FreeNAS, consider joining our newsletter for exclusive access to FreeNAS tutorials, builds, tech tips, and additional information related to the world's #1 storage OS. Join the other 152,532 FreeNAS Newsletter Subscribers and become a FreeNAS Pro. Oct 05, 2020 This is part of my ongoing series of TrueNAS and FreeNAS setup, configuration and install articles. Install PMS Updater. After following my TrueNAS: Plex Manual Install article you have probably noticed that your Plex Media Server is not the latest version and is asking for an update. And you probably also notice that you are unable to update. Official Docker container for Plex Media Server plexinc/pms-docker. With our easy-to-install Plex Media Server software and your Plex apps, available on all your favorite phones, tablets, streaming devices, gaming consoles, and smart TVs, you can stream your video, music, and photo collections any time, anywhere, to any device. Login to the FreeNAS Web UI, once you login you will see Settings and System information TAB. Under Settings, change the Protocol of our web interface to use whether http/https and set the ip address that we going to use for this GUI Interface and also set, timezone, Keyboard Map, Language for GUI.

Warning

The Canon EOS 80D is a digital single-lens reflex camera announced by Canon on February 18, 2016. It has a body-only MSRP of US$1199, which is the same as the Canon EOS 70D, which it replaces. The camera can be purchased as a body-only, as kit with the 18-55mm IS STM lens at US$1,049, with the new 18-135mm IS USM lens at US$1,799 or with the EF. Answered 1 year ago The 80D maintains a new shutter count once a newly charged battery is inserted in the body. You can check the shutter count for the battery in the Battery Information option in the menu. It shows the battery percentage, health and the shutter count yet. Camera shutter count canon 80d

This section describes the plugin system implemented in the11.2 release of FreeNAS®. Any plugins created or installed with aprevious version of FreeNAS® must be managed with theLegacy Web Interface.

FreeNAS® provides the ability to extend the built-in NASservices by providing two methods for installing additional software.

Plugins allow the user to browse, install, and configurepre-packaged software from the web interface. This method is easy to use, butprovides a limited amount of available software. Each plugin isautomatically installed into its own limitedFreeBSD jail thatcannot install additional software.

Jails provide more control over software installation, butrequires working from the command line and a good understanding ofnetworking basics and software installation on FreeBSD-based systems.

Look through the Plugins and Jails sections to becomefamiliar with the features and limitations of each. Choose the methodthat best meets the needs of the application.

Note

Jail Storage must be configured before plugins areavailable on FreeNAS®. This means having a suitablepool created to store plugins.

13.1. Install¶

A plugin is a self-contained application installer designed tointegrate into the FreeNAS® web interface. A plugin offers several advantages:

  • the FreeNAS® web interface provides a browser for viewing the list ofavailable plugins
  • the FreeNAS® web interface provides buttons for installing, starting,managing, and deleting plugins
  • if the plugin has configuration options, a screen will be added tothe FreeNAS® web interface for these options to be configured

To install a plugin, clickPlugins ➞ Available.Figure 13.1.1 shows some of the availableplugins.

The Available Plugins page lists the plugin name,description, current version, and whether the plugin is officiallysupported.

Note

If the list of available plugins is not displayed, openShell and verify that the FreeNAS® system can pingan address on the Internet. If it cannot, add a default gatewayaddress and/or DNS server address inNetwork ➞ Global Configuration.

Freenas Plex Setup

Click  (Options) and Install for the desired plugin. SetDHCP to automatically configure IP settings, or manuallyenter an IPv4 or IPv6 address. ClickADVANCED PLUGIN INSTALLATION to show all options for theplugin jail. The options are described in Advanced Jail Creation.

Click SAVE when finished configuring the plugin jail.In the example shown in Figure 13.1.2,Plex Media Server is selected for installation.

The installation takes a few minutes because the system downloads andconfigures a jail to store the plugin application. A confirmationmessage displays at the bottom of the screen after successfullyinstalling a plugin. When applicable, post-install notes are displayedafter a successful install. Installed plugins appear in thePlugins ➞ Installedpage as shown in Figure 13.1.3.

Note

Plugins are also added toJailsas a pluginv2 jail. This type of jail is editable like astandard jail, but the UUID cannot be altered.See Managing Jails for more details about modifyingjails.

The entry in thePlugins ➞ Installedsection displays the plugin jail name, status, IPv4 and IPv6 addresses,plugin application version, and FreeBSD release.

The plugin must be started before the installed application isavailable. Click  (Options) and Start. The pluginStatus changes to up when it starts successfully.

Freenas Plex Setup Instructions

Stop and immediately start an up plugin by clicking (Options) and Restart.

Click  (Options) and Management to open a managementor configuration screen for the application. For example, clickingManagement for an installed Plex plugin opens the Plexweb interface in a new browser tab.

Note

Not all plugins have a functional management option. SeeManaging Jails for more instructions about interacting witha plugin jail with the shell.

Always review plugin configuration options before attempting tostart it. Some plugins have options that need to be set before theirservice will successfully start. To help with installing a newapplication, check the website of the application to see whatdocumentation is available.

If the application requires access to the data stored on the FreeNAS®system, click the entry for the associated jail in theJails page and add a storage as described inAdditional Storage.

Click  (Options) and Shell for the plugin jail in theJails page. This will give access to the shell of thejail containing the application to complete or test the configuration.

If a plugin jail fails to start, open the plugin jail shell from theJail page and type tail /var/log/messages tosee if any errors were logged.

13.2. Updating Plugins¶

A plugin update is a fix for issues in the current plugin release.When a newer version of a plugin becomes available in the officialrepository, update the plugin jail by clicking  (Options) andUpdate.

Figure 13.2.1shows updating the Plex plugin.

To update or upgrade the plugin jail operating system, seeJail Updates and Upgrades

13.3. Delete¶

Installing a plugin creates an associated jail. Deleting a plugindeletes the associated jail because it is no longer required.Before deleting a plugin, make sure that there is no dataor configuration in the jail that needs to be saved. Back upthat data first if needed.

In the example shown inFigure 13.3.1,plex has been installed and the Delete button hasbeen clicked. A pop-up message asks for verification that the pluginis to be deleted. This is the only warning. The plugin and theassociated jail are permanently deleted when Confirm isset and DELETE is clicked.

13.4. Create a Plugin¶

If an application is not available as a plugin, it is possible tocreate a new plugin for FreeNAS® in a few steps. This requires anexisting GitHub account.

Create a new artifact repository onGitHub.

Refer to table 13.4.1 for the files to addto the artifact repository.

Table 13.4.1 FreeNAS® Plugin Artifact Files
Directory/FileDescription
post_install.shThis script is run inside the jail after it is created and anypackages installed. Enable services in /etc/rc.conf thatneed to start with the jail and apply any configurationcustomizations with this this script.
ui.json

JSON file that accepts the key or value options. For example:

adminportal:'http://%%IP%%/'

designates the web-interface of the plugin.

overlay/Directory of files overlaid on the jail after install.For example, usr/local/bin/myfile is placed in the/usr/local/bin/myfile location of the jail. Can be used tosupply custom files and configuration data, scripts, andany other type of customized files to the plugin jail.
settings.json

JSON file that manages the settings interface of the plugin.Required fields include:

  • 'servicerestart':'servicefoorestart'

Command to run when restarting the plugin service afterchanging settings.

  • 'serviceget':'/usr/local/bin/myget'

Command used to get values for plugin configuration.Provided by the plugin creator. The command acceptstwo arguments for key or value pair.

  • 'options':

This subsection contains arrays of elements, starting with the “key”name and required arguments for that particular type of setting.

See options subsection examplebelow.

This example settings.json file is used for theQuasselcore plugin. It is also available online in theiocage-plugin-quassel artifact repository.

Create and submit a new JSON file for the plugin:

Clone theiocage-ix-pluginsGitHub repository.

Tip

Freenas

Full tutorials and documentation for GitHub and gitcommands are available onGitHub Guides.

On the local copy of iocage-ix-plugins, create a new JSON filefor the FreeNAS® plugin. The JSON file describes the plugin, thepackages it requires for operation, and other installation details.This file is named pluginname.json. For example, theTransmissionplugin is named transmission.json.

The fields of the file are described intable 13.4.2.

Table 13.4.2 Plugin JSON File Contents
Data FieldDescription
'name':Name of the plugin.
'plugin_schema':Optional. Enter 2 if simplified post-install information hasbeen supplied in post_install.sh. After specifying 2,echo the information to be presented to the user in/root/PLUGIN_INFO inside thepost_install.sh file.See the rslsync.json andrslsync post_install.sh examples.
'release':FreeBSD RELEASE to use for the plugin jail.
'artifact':URL of the plugin artifact repository.
'pkgs':The FreeBSD packages required by the plugin.
'packagesite':Content Delivery Network (CDN) used by the plugin jail. Default forthe TrueOS CDN is http://pkg.cdn.trueos.org/iocage.
'fingerprints':

'function':

Default issha256.

'fingerprint':

The pkg fingerprint for the artifact repository. Default is226efd3a126fb86e71d60a37353d17f57af816d1c7ecad0623c21f0bf73eb0c7

'official':Define whether this is an official iXsystems-supported plugin.Enter true or false.

Here is quasselcore.json reproduced as an example:

The correct directory and package name of the plugin application must beused for the 'pkgs': value. Find the package name and directoryby searching FreshPorts and checkingthe “To install the port:” line. For example, the Quasselcore pluginuses the directory and package name /irc/quassel-core.

Now edit iocage-ix-plugins/INDEX. Add an entry for the newplugin that includes these fields:

Plex
  • 'MANIFEST': Add the name of the newly createdplugin.json file here.
  • 'name': Use the same name used within the .jsonfile.
  • 'icon': Most plugins will have a specific icon. Search theweb and save the icon to the icons/ directory as a.png. The naming convention is pluginname.png. Forexample, the Transmission plugin has the icon filetransmission.png.
  • 'description': Describe the plugin in a single sentence.
  • 'official': Specify if the plugin is supported byiXsystems. Enter false.

See theINDEXfor examples of INDEX entries.

Submit the plugin

Open a pull request for theiocage-ix-plugins repo.Make sure the pull request contains:

  • the new plugin.json file.
  • the plugin icon .png added to the icons/ directory.
  • an update to the INDEX file with an entry for the new plugin.
  • a link to the artifact repository populated with all required pluginfiles.

13.4.1. Test a Plugin¶

Warning

Installing experimental plugins is not recommended forgeneral use of FreeNAS®. This feature is meant to help plugin creatorstest their work before it becomes generally available on FreeNAS®.

Plugin pull requests are merged into the master branch of theiocage-ix-pluginsrepository. These plugins are not available in the web interface until theyare tested and added to a RELEASE branch of the repository. It ispossible to test an in-development plugin by using thisiocage command:iocagefetch-P--namePLUGINIPADDRESS_PROPS--branch'master'

This will install the plugin, configure it with any chosen properties,and specifically use the master branch of the repository todownload the plugin.

Here is an example of downloading and configuring an experimental pluginwith the FreeNAS®Shell:

This plugin appears in theJails andPlugins ➞ Installedscreens as mineos and can be tested with the FreeNAS® system.

13.5. Official Plugins¶

table 13.5.1 lists and describes allplugins supported by iXsystems. Adding “unofficial” plugins to FreeNAS®is supported by following the process outlined inCreate a Plugin.

Table 13.5.1 Official FreeNAS® plugins
NameDescription
AsigraAgentless backup of your data from any source - in the data center,cloud and every endpoint device, anywhere. See Asigra Pluginfor plugin requirements.
BackupPCBackupPC is a high-performance, enterprise-grade system for backing upLinux, WinXX and MacOSX PCs and laptops to a server disk.
BaculaBacula is an open-source, enterprise-level computer backup system forheterogeneous networks.
BRU ServerBRU Server™ Backup and Recovery Software by TOLIS Group, Inc.
ClamAVClamAV is an open source antivirus engine for detecting trojans,viruses, malware & other malicious threats.
CouchPotatoCouchPotato is an automatic NZB and torrent downloader.
DelugeBittorrent client using Python, and libtorrent-rasterbar.
EmbyHome media server built using mono and other open source technologies.
GitLabGitLab is a fully integrated software development platform.
irssiIrssi is an IRC client.
JenkinsJenkins is a self-contained, open source automation server which canbe used to automate all sorts of tasks related to building, testing,and delivering or deploying software.
Jenkins (LTS)Jenkins Long-Term Support releases.
MadsonicOpen-source web-based media streamer and jukebox.
MineOSSelf-contained Minecraft server.
NextcloudAccess, share and protect files, calendars, contacts, communicationand more at home and in the enterprise environment.
PlexMediaServerThe Plex media server system.
Plex Media Server (PlexPass)Premium service for Plex media server system.
qBittorrentqBittorrent is a cross-platform client for the BitTorrent protocolthat is released under the GNU GPL, version 2.
QuasselcoreQuassel Core is a daemon/headless IRC client, part of Quassel, thatsupports 24/7 connectivity. Quassel Client can also be attached to it.
radarrA fork of Sonarr to work with movies in the style of Couchpotato.
RedmineFlexible project management web application.
Resilio SyncFormerly known as BitTorrent Sync. Resilient, fast and scalable filesync software for enterprises and individuals.
SonarrPVR for Usenet and BitTorrent users.
SubsonicOpen-source web-based media streamer and jukebox.
SyncthingPersonal cloud sync.
TarsnapOnline encrypted backup service (client).
TransmissionFast and lightweight daemon BitTorrent client.
WeeChatWeeChat is a free and open-source Internet Relay Chat client, which isdesigned to be light and fast.
XMRigXMRig is a high performance Monero (XMR) CPU miner
ZoneMinderA full-featured, open source, state-of-the-art video surveillancesoftware system.

If there are any difficulties using a plugin, refer to the officialdocumentation for that application.

13.5.1. Asigra Plugin¶

The Asigra plugin connects FreeNAS® to a third party service and issubject to licensing. Please read theAsigra Software License Agreementbefore using this plugin.

To begin using Asigra services after installing the plugin, open theplugin options and click Register. A new browser tab openstoregister a user with Asigra.

The FreeNAS® system must have a public static IP address for Asigraservices to function.

Refer to the Asigra documentation for details about using the Asigraplatform:

  • DS-Operator Management Guide:Using the DS-Operator interface to manage the pluginDS-System service. Click Management in theplugin options to open the DS-Operator interface.
  • DS-Client Installation Guide:How to install the DS-Client system. DS-Clientaggregates backup content from endpoints and transmits it to theDS-Systemservice.
  • DS-Client Management Guide:Managing the DS-Client system after it has beensuccessfully installed at one or more locations.

If you are not familiar with Plex then you should take a look at their website.

Plex organizes your video, music, and photo collections and streams them to all of your screens.

Setup

What this explanation leaves out is that Plex will handle all of the details for you fairly seamlessly. Whatever format your collection is in, Plex will automatically ensure that it is compatible with whatever device you are using to view the collection. First I will explain how to install it on FreeNAS and then I will talk more about the software itself.

First, we must create a jail. Go to Jails and click Add Jail. Give your jail a name and click OK. By default Plex will use this as the name it displays in the client, but you can easily change that in the settings.

Once the jail is created, click on the Shell icon to log in. Verify your IP address via ifconfig. FreeNAS 9.3 introduced the option to use DHCP addresses for your Jails. I changed my configuration to use DHCP as I assign static IPs via my router which gives me the added benefit of registering the machine name in DNS.

Now that we are logged into the jail we run the following command to install Plex. If you do not have a Plex Pass or do not wish to use the Plex Pass version, then replace plexmediaserver-plexpass with just plexmediaserver.

pkg install plexmediaserver-plexpass

Install plex on freenas 11.3

This will want to upgrade pkg. Select y to allow this. Once that is done, select y again to install Plex server. The install will automatically create a plex user and group with id’s of 972.

Enable Plex autostart by the following, as in the instructions.

sysrc plexmediaserver_plexpass_enable=YES

Then start the server by running the following.

service plexmediaserver_plexpass start

Freenas Plex Setup Free

Plex will now be running on the IP you verified via ifconfig.

Now you need to add some media to Plex. Go to the Storage tab and select the Volume you wish to store your Plex media in. Pick the Dataset with the same name as the Volume. Then select Create Dataset.

Name your Dataset as you wish. I tend to use plexmedia but it does not particularly matter. I would however avoid naming it just media. Click on Advanced Mode and change the Record Size to 1024K. This is not required but is useful as we will be storing large video files in this Dataset. I leave Share type as UNIX because I do not share my Plex media Dataset. I use SCP to directly copy the data or log in and move it over from another Dataset which has been shared.

To simplify permissions I create a Plex user and group in FreeNAS, both with id’s of 972 as that is what Plex defaults to. I disable password login as this user is primarily for easy Dataset permissions and does not need to log in. Then I change the permissions of the Plex media Dataset to be owned by the Plex user and group. Make sure your SCP user is part of the Plex group if you wish to use SCP to copy your data as I do.

Now we go back to the Jails tab and add the Plex media Dataset to the jail as storage. I tend to mount it as /plexmedia but that is an individual choice. I find it easiest to create the directory in the jail shell before adding storage. This helps prevent typos. If you want to ensure that Plex does not accidentally delete your data you can mount the Dataset read only. You will still be able to modify it from FreeNAS but it will no longer be able to be changed from inside the jail. Note that doing this will make the “Allow media deletion” checkbox in Plex irrelevant.

Once the storage is added, I create a movies directory and a tv directory. They default to the Plex group with read permissions. I change the ownership to the plex user as well. This is not a required step. Make sure to change the group permissions to allow writing or the user you added to the plex group will not be able to add files. If you wish to use Plex for music, pictures or home videos you will want to add directories for those as well.

Once the jail storage is configured I log into Plex and add the directories I created as libraries. You will want to ensure that each directory type is it’s own library as the metadata scanners can get confused if they do not find the expected type of media. Note that Plex in a jail will not automatically detect folder changes. You will have to set the server to update your library periodically. I originally set it to daily but since Plex does not always update every library during the update cycle I have changed it to hourly. If I need something to show up quicker then I just manually update the appropriate library.

Keep in mind that the update interval is based off of the server start time and not the clock. So an hourly update will update in 60 minute increments from the time the server started, not exactly on the hour. Secondly, the update interval does not take affect until the previous update interval has passed. In my case of changing the interval from daily to hourly I had to wait until the next day before the server started checking hourly.

That is all there is to it. Once you add files into the appropriate directories you will start to see them populated in the Plex library.

Plex will not automatically update in a FreeNAS jail. Once a new update is released you will need to log into the shell of the jail and run the following command.

pkg upgrade

Since FreeBSD and therefore FreeNAS are not the primary target for Plex it will take a few days for the release to become available. I do not mind as this usually gives enough time for any major bugs to reveal themselves.