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.

MinIO

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.

MinIO High Performance Object Storage, released under the Apache Licenses v2.0 is an open source Amazon S3 cloud storage compatible object storage solution. The TrueNAS MinIO applications allow users to build high performance infrastructure for machine learning, analytics, and application data workloads.

TrueNAS has two version of the MinIO application, a stable and enterprise train version. The tutorials in this section cover installing the TrueNAS stable train version of the MinIO.

The smaller MinIO enterprise train version of the application is tested and polished for a safe and supportable experience for TrueNAS Enterprise customers. Community members can install either version of this application.

Adding the MinIO (Enterprise) App

To add the Enterprise MinIO application to the list of available applications:

Go to Apps, click on Configuration at the top of the Installed applications screen, and select Settings to open the train Settings screen.

You can also access the Installed scren from the Discover screen by clicking on Manage Installed Apps at the top of the screen.

Select enterprise to add it to the list of trains, and then click Save.

After changing train settings, return to the Discover screen and click Refresh Catalog.

Both the stable and enterprise train versions of the MinIO app widget display on the Discover application screen.

DiscoverScreenMinIOAppWidgets

Installing MinIO (S3) App

This procedure covers the basic requirements and instruction on installing and configuring the MinIO application in the stable train. For instructions on installing the Enterprise version of the MinIO application see Configuring Enterprise MinIO.

Before You Begin

Before you install the stable version of the MinIO app:

  • Set a pool for applications to use if not already assigned.

    Go to Apps. If the pool for apps is not already set, do it when prompted.

TrueNAS creates the ix-apps (hidden) dataset in the pool set as the application pool. This dataset is internally managed, so you cannot use this as the parent when you create required application datasets.

After setting the pool, the Installed Applications screen displays Apps Service Running on the top screen banner.

  • (Optional) Create a new TrueNAS user to serve as the administrator for the app. You can use the default user or add a new user. When you create a new user select Create New Primary Group, and select the appropriate group in the Auxiliary Group for the type of user you want to create. Make note of the UID for the new user to add in the installation wizard.

  • Create the required dataset(s).

  • 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.

    You can configure dataset ACL permissions when prompted as you add datasets or by clicking by Edit on the Permissions widget to open the Edit ACL screen. Alternatively, you can configure ACL permissions while using the app installation wizard by selecting the Enable ACL option as you configure each app storage volume. See information provided in the sections below for details on which user ID and permissions settings to configure.

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.

If your system has active sharing configurations (SMB, NFS, iSCSI), disable them in System > Services before adding and configuring the MinIO application. Start any sharing services after MinIO completes the installation and starts.

Configuring MinIO (S3) Community App

This basic procedure covers the required MinIO stable app settings. For optional settings, see Understanding MinIO Wizard Settings.

Go to Apps, click on Discover Apps, and 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.

If this is the first application installed, TrueNAS displays a dialog about configuring apps.

Configuring Apps Dialog

Click Confirm then Agree to close the dialog and open the application details screen.

If not the first time installing apps the dialog does not show, 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 Installation 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 sections on the upper-right of the wizard screen.

MinIO Install Wizard Screen
Figure 6: 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.

You can have multiple deployments of the same app (for example, two or more from the stable or enterprise trains, or a combination of the stable and enterprise trains).

Naming Multiple App Deployments

Each deployment of the same app requires a unique name. App names can include numbers, dashes, or underscores (for example, syncthing2, syncthing-test, syncthing_1, minio2, etc.).

Use a consistent file-naming convention to avoid conflict situations where data does not or cannot synchronize because of file name conflicts. Path and file names in apps are case-sensitive. For example, a file named MyData.txt is not the same as the mydata.txt file in Syncthing.

Next, enter the MinIO Configuration settings.

The MinIO wizard defaults include all the arguments you need to deploy a container for the application.

Enter a name in Root User to use as the MinIO access key. Enter a name of five to 20 characters in length, for example admin or admin1. Next enter the Root Password to use as the MinIO secret key. Enter eight to 40 random characters, for example MySecr3tPa$$w0d4Min10.

Refer to MinIO User Management for more information.

Keep all passwords and credentials secured and backed up.

MinIO containers use server port 9000. The MinIO Console communicates using port 9001.

You can configure the API and UI access node ports and the MinIO domain name if you have TLS configured for MinIO.

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.

Configuring ACE Entries

Enter or browse to select the dataset and populate Host Path.

Next, click Add to the right of ACL Entries to show the permissions settings. Set ID Type to Entry is for a USER or Entry is for a GROUP. If you configured a group in TrueNAS that you want to give access to instead of a single user, set the ID to the group option and enter the GID for that group.

Enter the UID as one of the following:

  • The default apps user, which is 473 for MinIO app in the stable train, 568 for apps in all trains if the app can run as any non-root user, 999 for postgres storage volumes, or 0 if running as root.
  • The run-as-user UID set as a default for the app.
  • The new user UID for a TrueNAS user created to serve as the app administrator.

If the app shows User and Group Configuration settings, the default UID shows on the screen. If not, choose the run-as UID.

The run-as user shows on the details screen in the Run As Content widget, and also on the Installed application screen after the app is deployed. You can also refer to the tutorial for the app, or look in the questions.yaml file in the GitHub repository for the application to find this UID/GID.

All postgres storage volumes use the default user ID 999, not as the run-as user.

If you create a new user to serve as the app administration user, enter the UID for this user in addition to the run-as user ID. Always add the run-as user with full control permissions except for postgres storage volumes.

Select the ID type from the dropdown list, enter the UID (or GID if you select the group ID type) for the app administration user, and then set the Access permissions level to FULL CONTROL.

Select Force to apply the ACL even if the path has existing data. This allows you to update the app when an update is available.

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 9: 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.

Understanding MinIO Wizard Settings

The following section provide more detailed explanations of the settings found in each section of the Install MinIO configuration screen.

Application Name

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.

MinIO Configuration

MinIO credentials establish the login credentials for the MinIO web portal and the MinIO administration user, and to enter extra arguments, or environment variables to the deployment.

MinIO Configuration Settings
Figure 12: MinIO Configuration Settings

Enter existing MinIO credentials if you already have a MinIO account, or create new login credentials for the first time you log into MinIO.

Enter a username for the root user (MinIO access key) in MinIO Root User that is limited to five to 20 characters long. For example admin or admin1.

Enter the root user password (MinIO secret key) in MinIO Root Password that is limited to eight to 40 random characters. For example, MySecr3tPa$$w0d4Min10.

Select Enable Distributed Mode when setting up a cluster of SCALE systems in a distributed cluster.

MinIO in distributed mode allows you to pool multiple drives or TrueNAS SCALE systems (even if they are different machines) into a single object storage server for better data protection in the event of single or multiple node failures because MinIO distributes the drives across several nodes. For more information, see the Distributed MinIO Quickstart Guide.

To create a distributed cluster, click Add to show the Distributed MinIO Instance URI(s) fields for each TrueNAS system (node) IP addresses/host names to include in the cluster. Use the same order across all the nodes.

The app is preconfigured with the arguments needed to deploy a container. Do not enter the server and URL argument earlier versions of the app required.

Refer to MinIO User Management for more information.

Keep all passwords and credentials secured and backed up.

The Extra Arguments and Extra Environment Variables settings are not required to deploy the application as the app is preconfigured with the arguments needed to deploy a container. Do not enter the server and URL argument required in earlier versions of the app.

Network Configuration

Network configuration settings set the port number to access the MinIO API and console port.

Accept the default port settings in Network Configuration. Before changing ports, refer to Default Ports.

Network Configuration Settings
Figure 14: Network Configuration Settings

The Certificates setting is not required for a basic configuration but is required when setting up multi-mode configurations with the Enterprise version of the MinIO app and when using MinIO as an immutable target for Veeam Backup and Replication.

Adding an App Certificate
  1. Go to Credentials > Certificates to add a self-signed certificate authority (CA) and certificate for the application to use.

  2. Click Add on the Certificate Authorities (CA) widget to open the Add Certificate Authority screen.

    a. Enter a name for the CA. For example, minio, syncthing, etc. Accept the defaults for Type and Profile, then click Next.

    b. Accept the defaults on Certificate Options unless you want to set an expiration on the certificate. Enter a new value in Lifetime to impose an expiration time period, then click Next.

    c. Enter location and organization values for your installation in the Certificate Subject fields. Enter the email address you want to receive system notifications.

    d. Enter your system IP address in Subject Alternate Names, then click Next. When configuring a cluster, enter the system IP addresses for each system in the cluster.

    e. Accept the default values on Extra Constraints, then click Next.

    f. Review the CA configuration then click Save.

  3. Click Add on the Certificates widget to open the Add Certificate screen.

    a. Enter a name for the certificate. For example, minio, syncthing, etc. Select Internal Certificate as Type and HTTPS RSA Certificate in Profiles, then click Next.

    b. Select the newly-created CA in Signing Certificate Authority. Accept the rest of the defaults unless you want to set an expiration on the certificate. Enter a new value in Lifetime to impose an expiration time period, then click Next.

    c. Enter location and organization values for your installation in the Certificate Subject fields. Enter the email address you want to receive system notifications.

    d. Enter your system IP address in Subject Alternate Names, then click Next. When configuring a cluster, enter the system IP addresses for each system in the cluster.

    e. Accept the default values on Extra Constraints, then click Next.

    f. Review the CA configuration then click Save.

  4. Download the certificate and install it.

    a. Click the download icon on the Certificates widget to start the download. When complete, click the browser download icon to open in a File Explorer window.

    b. Right click on the certificate.crt file, then click Install Certificate. Click Open on the Open File window.

    CertificateOpenCertificateWindow

    c. Click Install Certificate, then select Local Machine on the Welcome to the Certificate Import Wizard window. Click Next.

    CertificateImportWizardSelectLocalMachine

    d. Select Place all certificates in the following store, then select Trusted Root Certificate Authorities and click OK.

    SelelectCertificateStore

    c. Click Next then Finish.

To add advanced DNS settings click Add to the right of DNS Options.

ACL Configuration Settings
Figure 15: ACL Configuration Settings

Storage Configuration

MinIO storage settings include the option to add mount paths and storage volumes to use inside the container (pod). Storage configuration uses both the default /export and /data mount paths. See First Steps above for more information.

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.

Configuring ACE Entries

Enter or browse to select the dataset and populate Host Path.

Next, click Add to the right of ACL Entries to show the permissions settings. Set ID Type to Entry is for a USER or Entry is for a GROUP. If you configured a group in TrueNAS that you want to give access to instead of a single user, set the ID to the group option and enter the GID for that group.

Enter the UID as one of the following:

  • The default apps user, which is 473 for MinIO app in the stable train, 568 for apps in all trains if the app can run as any non-root user, 999 for postgres storage volumes, or 0 if running as root.
  • The run-as-user UID set as a default for the app.
  • The new user UID for a TrueNAS user created to serve as the app administrator.

If the app shows User and Group Configuration settings, the default UID shows on the screen. If not, choose the run-as UID.

The run-as user shows on the details screen in the Run As Content widget, and also on the Installed application screen after the app is deployed. You can also refer to the tutorial for the app, or look in the questions.yaml file in the GitHub repository for the application to find this UID/GID.

All postgres storage volumes use the default user ID 999, not as the run-as user.

If you create a new user to serve as the app administration user, enter the UID for this user in addition to the run-as user ID. Always add the run-as user with full control permissions except for postgres storage volumes.

Select the ID type from the dropdown list, enter the UID (or GID if you select the group ID type) for the app administration user, and then set the Access permissions level to FULL CONTROL.

Select Force to apply the ACL even if the path has existing data. This allows you to update the app when an update is available.

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

Mounting an SMB Share

The TrueNAS MinIO app includes the option to mount an SMB share inside the container pod.

Resource Configuration

MinIO Resource Limits
Figure 18: MinIO Resource Limits

Accept the default values in Resources Configuration or enter new CPU and memory values. By default, this application is limited to use no more than 2 CPU cores and 4096 Megabytes available memory. The application might use considerably less system resources.

To customize the CPU and memory allocated to the container (pod) the app uses, enter new CPU values as a plain integer value (letter suffix is not required). The default is 4096.

Accept the default value 8 (Gb) allocated memory or enter a new limit in bytes. Enter a plain integer without the measurement suffix, for example, 129 not 129M or 123MiB.

Contents

  • Updating MinIO from 1.6.58: Provides information on updating MinIO from 1.6.58 to newer versions.

    • Setting Up MinIO Clustering: Provides configuration instructions using the MinIO Offical Charts application widget. It includes instructions on setting up a distributed cluster configuration.