TrueNAS AppsTrueNAS Apps: Tutorials
Application maintenance is independent from TrueNAS version release cycles.
App versions, features, options, and installation behavior at time of access might vary from documented tutorials and UI reference.

Setting Up MinIO Clustering

We welcome community contributions to keep this documentation current! Click Edit Page in the top right corner to propose changes to this article. See Updating Content for more information.

This article applies to the public release of the S3 MinIO charts application in the TRUENAS catalog.

TrueNAS 23.10 and later allows users to create a MinIO S3 distributed instance to scale out TrueNAS to handle individual node failures. A node is a single TrueNAS storage system in a cluster.

The stable train version of MinIO supports distributed mode. Distributed mode, allows pooling multiple drives, even on different systems, into a single object storage server. For information on configuring a distributed mode cluster in TrueNAS using MinIO, see Setting Up MinIO Clustering.

The enterprise train version of MinIO provides two options for clustering, Single Node Multi Disk (SNMD) and Multi Node Multi Disk (MNMD) configurations. See MinIO Enterprise for more information.

The examples below use four TrueNAS systems to create a distributed cluster. For more information on MinIO distributed setups, refer to the MinIO documentation.

Before You Begin

  • Go to Datasets and select the pool or dataset where you want to place the MinIO dataset. For example, /tank/apps/minio or /tank/minio. You can use either an existing pool or create a new one.

    Create the data dataset(s) before beginning the app installation process. You can organize the dataset(s) under a parent dataset for MinIO to keep the storage datasets separated from the dataset for other potential applications. For example, create the minio dataset and nest data under it.

    After creating the dataset, create the directory where MinIO stores information the application uses.

    To create a directory, open the Linux CLI and enter mkdir path="/path/to/directory" or if you have a share created on your system with access to the dataset use it to create a directory.

    MinIO uses both the default /export and the /data mount points during storage configuration. The MinIO enterprise app creates the /export mount point for you but you must add this in the stable MinIO app. Create the /data mount point in both the enterprise and stable versions of the MinIO app.

If you want to also mount other storage volumes inside the container pod using the host path option, create the dataset(s) before using the app installation wizard.

For a distributed configuration, repeat the above on all system nodes in advance. Take note of the system (node) IP addresses or host names and have them ready for configuration. Also, have your S3 user name and password ready for later.

If your system has sharing (SMB, NFS, iSCSI) configured, disable the share service before adding and configuring a new MinIO deployment. After completing the installation and starting MinIO, enable the share service.

For more information on app installation wizard settings see Understanding MinIO Wizard Settings

Configuring MinIO

Begin on the first node (system) in your cluster.

Go to Apps, click on Discover Apps, locate the app widget by either scrolling down to it or begin typing the name into the search field. For example, to locate the MinIO app widget, begin typing minIO into the search field to show app widgets matching the search input.

Click on the widget to open the app information screen.

Click Install to open the app installation wizard.

Application configuration settings are grouped into several sections, each explained below in Understanding App Wizard Settings. To find specific fields begin typing in the Search Input Fields search field to show the section or field, scroll down to a particular section, or click on the section heading in the list of section on the upper-right of the wizard screen.

MinIO Install Wizard Screen
Figure 3: MinIO Install Wizard Screen

Accept the default value or enter a name in Application Name field. In most cases use the default name, but if adding a second deployment of the application you must change this name.

Accept the default version number in Version. When a new version becomes available, the application shows an update badge and the Application Info widget on the Installed applications screen shows the Update button.

Next, enter the MinIO Configuration settings.

For a distributed cluster, ensure the values are identical between server nodes and have the same credentials.

MinIO Distributed Mode Settings
Figure 4: MinIO Distributed Mode Settings

MinIO uses two datasets and mount paths. Set the first to /export with the host path set to the export dataset. The other mount point is /data with the host path set to the data dataset.

Configure the storage volumes. Accept the default value in Mount Path under MinIO Export Storage (Data), and leave Type set to ixVolume (Dataset created automatically by the system). This sets the first mount point to /export.

Click Add to the right of Additional Storage. Next set the Mount Path for the data dataset. Enter /data in Mount Path and enter or browse to select the host path to the data dataset.

Select Enable ACL to show the ACL and ACE Entries options.

Enter or browse to select the dataset path.

Next click Add to the right of ACL Entries to show the permissions settings. Set ID Type to Entry is for a USER. Enter the UID as one of the following:

  • The default apps user which is either 473 for apps in the stable train or 568 for apps in the enterprise or community train.
  • The new user ID for the TrueNAS user created to serve as the app administrator.

If setting up postgres storage volumes, the default user id for these volumes is 999.

If there is run-as option defined in the wizard, enter this run-as UID when adding the user ACE entry. If not show in the UI, to find the run-as user ID, refer to the questions.yaml file in the GitHub repository for the application.

Select the permissions level from the Access dropdown list. Enter the UID for the app administration user, and set the level to FULL CONTROL.

Select Force to apply the ACL even if the path has existing data.

Select Enable ACL for the /export storage volume, enter 473 as the user and give it full permissions. Repeat for the /data storage volume.

Export and Data Host Path ACL and ACE Settings
Figure 5: Export and Data Host Path ACL and ACE Settings

Accept the default values in Resources Configuration.

Click Install.

The Installed applications screen opens showing the application in the Deploying state before it changes to Running when the application is ready to use.

Click Web Portal to open the MinIO sign-in screen.

Now that the first node is complete, configure any remaining nodes (including datasets and directories).

After installing MinIO on all systems (nodes) in the cluster, start the MinIO applications.