Welcome!
XigmaNAS is an Open Source Storage NAS (Network-Attached Storage) distribution based on FreeBSD.
XigmaNAS is one of the best NAS Systems out there. While using very litte server resources it provides more options in some areas than FreeNAS (e.g. Optional and selectable statistics). Minimized write access on system flash storage makes it great for simple flash media installs like USB sticks. The Plex media server system. Plex Media Server (PlexPass) Premium service for Plex media server system. QBittorrent: qBittorrent is a cross-platform client for the BitTorrent protocol that is released under the GNU GPL, version 2. Quasselcore: Quassel Core is a daemon/headless IRC client, part of Quassel, that supports 24/7 connectivity.
The XigmaNAS operating system can be installed on virtually any hardware platform to share computer data storage over a computer network. ‘NAS' means 'Network-Attached Storage'. XigmaNAS is the simplest and fastest way to create a centralized and easily-accessible server for all kinds of data easily accessed with all kinds of network protocols and from any network.
XigmaNAS supports sharing across Windows, Apple, and UNIX-like systems. It includes ZFS v5000 , Software RAID (0,1,5), disk encryption, S.M.A.R.T / email reports etc. with the following protocols: CIFS/SMB (Samba), Active Directory Domain Controller (Samba), FTP, NFS, TFTP, AFP, RSYNC, Unison, iSCSI (initiator and target), HAST, CARP, Bridge, UPnP, and Bittorent which is all highly configurable by its WEB interface. XigmaNAS can be installed on Compact Flash/USB-key/SSD Drive, Hard disk or booted from a LiveCD/LiveUSB with a small usb-key/floppy drive for it's configuration storage.
Why XigmaNAS?
It's nice to have an expensive off-the-shelf NAS box, but how can you be sure you bought a great solution or just a shiny box? It probably has a slick interface but underneath it isn't really what you were looking for. Over the years with competition we see underpowered NAS devices that are modified with hardware/software locks and software updates ends within 2-3 years. And with many other things, once you've bought it, good luck getting upgrades.
Surfshark allows you to choose IKEv2 or OpenVPN (UDP or TCP) protocol on your Mac. Download Surfshark VPN A VPN for Windows PC, Mac, Android, Android TV, iOS, Linux, Chrome & Firefox to secure your digital life.
XigmaNAS keeps going where many commercial box solutions stop. Your customized XigmaNAS solution will likely be cheaper, more powerful, and more custom fit to your needs than many commercial NAS boxes. The XigmaNAS project also sees regular development, always with the focus on stability and simplicity. This means XigmaNAS receives regular updates, some of which include new features, bug fixes, and version upgrades of included components. These updates help keeping your NAS up-to-date with the latest standards and the best working versions for many, many years.
Learn laravel. Try XigmaNAS,
We think you'll like it.
Warning
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.
Xigmanas Plex San Antonio
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.
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.
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. Update¶
When a newer version of a plugin becomes available in the officialrepository, update the plugin jail by navigating to theJails page and clicking (Options) andUpdate.
An update is a fix for issues in the current release of the plugin.Plugins can be updated by running iocageupdatePLUGIN
on thecommand line.
An upgrade replaces the old release with a new release. Plugins can beupgraded by running iocageupgradePLUGIN
on the command line.
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.
Directory/File | Description |
---|---|
post_install.sh | This 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:
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:
Command to run when restarting the plugin service afterchanging settings.
Command used to get values for plugin configuration.Provided by the plugin creator. The command acceptstwo arguments for key or value pair.
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
Full tutorials and documentation for GitHub and gitcommands are available onGitHub Guides.
On the local copy of iocage-ix-plugins
, create a new file forthe plugin to be added to FreeNAS®. The naming convention ispluginname.json
. For example, the Transmissionplugin has a .json file named transmission.json
.
Add fields to this .json file.table 13.4.2 lists anddescribes each required entry.
Data Field | Description |
---|---|
'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 dependent pkgs for the plugin to work. |
'packagesite': | Content Delivery Network (CDN) the plugin jail uses. Default forthe TrueOS CDN is http://pkg.cdn.trueos.org/iocage . |
'fingerprints': |
Default is
The pkg fingerprint for the artifact repository. Default is |
'official': | Define whether this is an official iXsystems-supported plugin.Enter true or false . |
Xigmanas Plex
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:
'MANIFEST':
Add the name of the newly createdplugin.json
file here.'name':
Use the same name used within the.json
file.'icon':
Most plugins will have a specific icon. Search theweb and save the icon to theicons/
directory as a.png
. The naming convention ispluginname.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. Enterfalse
.
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 theicons/
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¶
XigmaNAS keeps going where many commercial box solutions stop. Your customized XigmaNAS solution will likely be cheaper, more powerful, and more custom fit to your needs than many commercial NAS boxes. The XigmaNAS project also sees regular development, always with the focus on stability and simplicity. This means XigmaNAS receives regular updates, some of which include new features, bug fixes, and version upgrades of included components. These updates help keeping your NAS up-to-date with the latest standards and the best working versions for many, many years.
Learn laravel. Try XigmaNAS,
We think you'll like it.
Warning
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.
Xigmanas Plex San Antonio
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.
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.
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. Update¶
When a newer version of a plugin becomes available in the officialrepository, update the plugin jail by navigating to theJails page and clicking (Options) andUpdate.
An update is a fix for issues in the current release of the plugin.Plugins can be updated by running iocageupdatePLUGIN
on thecommand line.
An upgrade replaces the old release with a new release. Plugins can beupgraded by running iocageupgradePLUGIN
on the command line.
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.
Directory/File | Description |
---|---|
post_install.sh | This 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:
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:
Command to run when restarting the plugin service afterchanging settings.
Command used to get values for plugin configuration.Provided by the plugin creator. The command acceptstwo arguments for key or value pair.
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
Full tutorials and documentation for GitHub and gitcommands are available onGitHub Guides.
On the local copy of iocage-ix-plugins
, create a new file forthe plugin to be added to FreeNAS®. The naming convention ispluginname.json
. For example, the Transmissionplugin has a .json file named transmission.json
.
Add fields to this .json file.table 13.4.2 lists anddescribes each required entry.
Data Field | Description |
---|---|
'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 dependent pkgs for the plugin to work. |
'packagesite': | Content Delivery Network (CDN) the plugin jail uses. Default forthe TrueOS CDN is http://pkg.cdn.trueos.org/iocage . |
'fingerprints': |
Default is
The pkg fingerprint for the artifact repository. Default is |
'official': | Define whether this is an official iXsystems-supported plugin.Enter true or false . |
Xigmanas Plex
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:
'MANIFEST':
Add the name of the newly createdplugin.json
file here.'name':
Use the same name used within the.json
file.'icon':
Most plugins will have a specific icon. Search theweb and save the icon to theicons/
directory as a.png
. The naming convention ispluginname.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. Enterfalse
.
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 theicons/
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
Nas4free
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.
Name | Description |
---|---|
BackupPC | BackupPC is a high-performance, enterprise-grade system for backing upLinux, WinXX and MacOSX PCs and laptops to a server disk. |
Bacula | Bacula is an open-source, enterprise-level computer backup system forheterogeneous networks. |
BRU Server | BRU Server™ Backup and Recovery Software by TOLIS Group, Inc. |
ClamAV | ClamAV is an open source antivirus engine for detecting trojans,viruses, malware & other malicious threats. |
CouchPotato | CouchPotato is an automatic NZB and torrent downloader. |
Deluge | Bittorrent client using Python, and libtorrent-rasterbar. |
Emby | Home media server built using mono and other open source technologies. |
GitLab | GitLab is a fully integrated software development platform. |
irssi | Irssi is an IRC client. |
Jenkins | Jenkins 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. |
Madsonic | Open-source web-based media streamer and jukebox. |
MineOS | Self-contained Minecraft server. |
Nextcloud | Access, share and protect files, calendars, contacts, communicationand more at home and in the enterprise environment. |
PlexMediaServer | The Plex media server system. |
Plex Media Server (PlexPass) | Premium service for Plex media server system. |
qBittorrent | qBittorrent is a cross-platform client for the BitTorrent protocolthat is released under the GNU GPL, version 2. |
Quasselcore | Quassel Core is a daemon/headless IRC client, part of Quassel, thatsupports 24/7 connectivity. Quassel Client can also be attached to it. |
radarr | A fork of Sonarr to work with movies in the style of Couchpotato. |
Redmine | Flexible project management web application. |
Resilio Sync | Formerly known as BitTorrent Sync. Resilient, fast and scalable filesync software for enterprises and individuals. |
Sonarr | PVR for Usenet and BitTorrent users. |
Subsonic | Open-source web-based media streamer and jukebox. |
Syncthing | Personal cloud sync. |
Tarsnap | Online encrypted backup service (client). |
Transmission | Fast and lightweight daemon BitTorrent client. |
WeeChat | WeeChat is a free and open-source Internet Relay Chat client, which isdesigned to be light and fast. |
XMRig | XMRig is a high performance Monero (XMR) CPU miner |
ZoneMinder | A 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.