Greetings friends, in previous posts on FreeNAS 11.x I have shown you how to deploy it over vSphere, and how to deploy an SSL certificate using Let’s Encrypt, both posts have been very well received by those who are using Homelabs, or if you have small businesses where your hosts have a lot of local storage it is a good idea to put that storage to new use.
Today I bring you the step by step to configure Object Storage in FreeNAS 11.x, which makes use of MinIO as a platform to serve the S3 APIs.
What is MinIO?
MinIO is an open source object storage server released under the Apache v2 license. It is compatible with Amazon S3’s cloud storage service. MinIO follows a minimalist design philosophy.
MinIO is light enough to be packaged with the application stack. It is located on the side of NodeJS, Redis, MySQL and the like. Unlike databases, MinIO stores objects such as photos, videos, log files, backups, container/VM images, etc. MinIO is best suited for storing information notes ranging from KBs to TBs each. In a simplistic sense, it is like an FTP server with a simple get/put API over HTTP.
Why is it so interesting to deploy Object Storage S3 over FreeNAS 11.x?
MinIO scales up to many PBs, simply and without great complexity.
MinIO can be configured in distributed mode to configure a high-availability storage system with a single object storage deployment. With distributed MinIO, we’ll make optimal use of storage devices, regardless of their location on the network.
To be able to launch a solution like MinIO, which is simple and used in millions of places in the Planet, besides having the most recent APIs of S3, makes this software a very good option so that we can take advantage even more of the storage that we have in vSphere, or in some Host that we do not use, or simply to put it in production, and to make use of the advantages of S3, but in a local way, that can be extrapolated quickly to Public Cloud using Object Storage clear.
Enabling Object Storage Service (based on MinIO) in FreeNAS 11.x
To enable the Object Storage service (based on MinIO) we will go to Services – S3 and edit the service:In the service we will select by IP that we want to present the Object Storage S3 APIs, in addition, we will be able to create a user and a password, mount where we want that the objects are stored, in my case it is a folder inside my volume, we will enable the option of the web browser, at the same time as selecting the Let’s Encrypt SSL certificate that we created in the previous entry: Finally we will start the service, besides marking it as automatic: If we access by IP, or FQDN, to https://TUSERVERFREENAS.TUDOMINIO.COM:9000 we will be able to see the interface of MinIO, we will introduce our user and password: And we will be able to accede of sure way and via web to our repository of local S3 in our FreeNAS, based on MinIO, from here we will create a bucket, and we could already upload files, from here or of course making use of the API: That is all friends, I hope it serves you, and in future entrances we will see how to give a good use to this new Object Storage S3 local, based on MinIO.
I leave you the whole menu with the entries on FreeNAS:
- FreeNAS: Initial installation and configuration of FreeNAS 11.x as VM within vSphere
- FreeNAS: Enable and configure Object Storage in FreeNAS 11.x compatible with S3 APIs – Based on MinIO
- FreeNAS: How to Deploy a Let’s Encrypt SSL Certificate in FreeNAS 11.x and HTTPS Configuration
- FreeNAS: Configure Veeam Backup Repository Object Storage connected to FreeNAS (MinIO) and launch Capacity Tier
Axemann says
For anyone attempting to get this to work on FreeNAS 11.3-U1, there is an issue with the service not starting in SSL/HTTPS mode due to a missing line in one of the configuration files. This will likely be fixed in 11.3-U2, but as a work-around, you can do the following:
Edit /usr/local/lib/python3.7/site-packages/middlewared/etc_files/rc.conf.py and change the following:
yield f’minio_address=”{s3[“bindip”]}:{s3[“bindport”]}”‘
browser = ‘MINIO_BROWSER=off \\\n’ if not s3[‘browser’] else ”
to:
yield f’minio_address=”{s3[“bindip”]}:{s3[“bindport”]}”‘
yield ‘minio_certs=”/usr/local/etc/minio/certs”‘
browser = ‘MINIO_BROWSER=off \\\n’ if not s3[‘browser’] else ”
The “yield f’minio_address…” is on line 296 in rc.conf.py.
Once complete, you may need to restart the S3 service a couple of times to get it to finally start up in SSL mode.