{"id":1009,"date":"2017-09-21T06:28:59","date_gmt":"2017-09-21T03:28:59","guid":{"rendered":"https:\/\/community.virtono.com\/?p=1009"},"modified":"2023-06-21T10:47:13","modified_gmt":"2023-06-21T07:47:13","slug":"how-to-set-up-an-object-storage-server-using-minio-on-ubuntu-16-04","status":"publish","type":"post","link":"https:\/\/www.virtono.com\/community\/tutorial-how-to\/how-to-set-up-an-object-storage-server-using-minio-on-ubuntu-16-04\/","title":{"rendered":"How to Set Up an Object Storage Server Using Minio on Ubuntu 16.04"},"content":{"rendered":"<p>If you are looking for a brief introduction of Object Storage and Why would need it, check out this <a href=\"https:\/\/virtono.com\/community\/knowledgebase\/what-is-object-storage-and-why-do-you-need-it\/\" target=\"_blank\" rel=\"noopener\">article<\/a>.<\/p>\n<p>And for those of you already familiar with the What and Why of\u00a0Object Storage, in this article we shall cover up the How.<\/p>\n<p>Since you&#8217;ve read the title you might be wondering what does\u00a0Minio means, well&#8230;<\/p>\n<blockquote><p>&#8220;Minio is an open source object storage server with Amazon S3 compatible API.\u00a0<br class=\"visible-lg visible-md\" \/>Build cloud-native applications portable across all major public and private clouds.&#8221;<\/p><\/blockquote>\n<p>According to its official website and if you want more information, I suggest reading their <a href=\"https:\/\/www.minio.io\/features.html\" target=\"_blank\" rel=\"noopener\">official features page.<\/a><\/p>\n<p>Minio\u00a0comes with command line client and is written in Go. It is able to support simple queuing services.<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_73 counter-hierarchy ez-toc-counter ez-toc-light-blue ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.virtono.com\/community\/tutorial-how-to\/how-to-set-up-an-object-storage-server-using-minio-on-ubuntu-16-04\/#Let_us_get_started_with_Installing_and_Configuring_our_Minio_Server\" title=\"Let us get started with Installing and Configuring our Minio\u00a0Server.\">Let us get started with Installing and Configuring our Minio\u00a0Server.<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.virtono.com\/community\/tutorial-how-to\/how-to-set-up-an-object-storage-server-using-minio-on-ubuntu-16-04\/#Step_2_%E2%80%94_Installing_the_Minio_Systemd_Startup_Script\" title=\"Step 2 \u2014 Installing the Minio Systemd Startup Script\">Step 2 \u2014 Installing the Minio Systemd Startup Script<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.virtono.com\/community\/tutorial-how-to\/how-to-set-up-an-object-storage-server-using-minio-on-ubuntu-16-04\/#Step_3_%E2%80%94_Starting_The_Minio_Server\" title=\"Step 3 \u2014 Starting The Minio Server\">Step 3 \u2014 Starting The Minio Server<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.virtono.com\/community\/tutorial-how-to\/how-to-set-up-an-object-storage-server-using-minio-on-ubuntu-16-04\/#Step_4_%E2%80%94_Securing_Access_to_Minio_Server_With_a_Lets_Encrypt_SSLTLS_Certificate\" title=\"Step 4 \u2014 Securing Access to Minio Server With a Let&#8217;s Encrypt SSL\/TLS Certificate\">Step 4 \u2014 Securing Access to Minio Server With a Let&#8217;s Encrypt SSL\/TLS Certificate<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.virtono.com\/community\/tutorial-how-to\/how-to-set-up-an-object-storage-server-using-minio-on-ubuntu-16-04\/#Step_5_%E2%80%94_Securely_Connecting_to_Minios_Web_Interface_Using_HTTPS\" title=\"Step 5 \u2014 Securely Connecting to Minio&#8217;s Web Interface Using HTTPS\">Step 5 \u2014 Securely Connecting to Minio&#8217;s Web Interface Using HTTPS<\/a><\/li><\/ul><\/nav><\/div>\n<h3><span class=\"ez-toc-section\" id=\"Let_us_get_started_with_Installing_and_Configuring_our_Minio_Server\"><\/span><strong>Let us get started with Installing and Configuring our <\/strong>Minio<strong>\u00a0Server.<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<div id=\"kgvid_kgvid_0_wrapper\" class=\"kgvid_wrapper\">\n\t\t\t<div id=\"video_kgvid_0_div\" class=\"fitvidsignore kgvid_videodiv\" data-id=\"kgvid_0\" data-kgvid_video_vars=\"{&quot;id&quot;:&quot;kgvid_0&quot;,&quot;attachment_id&quot;:0,&quot;player_type&quot;:&quot;Video.js v8&quot;,&quot;width&quot;:&quot;640&quot;,&quot;height&quot;:&quot;360&quot;,&quot;fullwidth&quot;:&quot;true&quot;,&quot;fixed_aspect&quot;:&quot;false&quot;,&quot;countable&quot;:false,&quot;count_views&quot;:&quot;quarters&quot;,&quot;start&quot;:&quot;&quot;,&quot;autoplay&quot;:&quot;false&quot;,&quot;pauseothervideos&quot;:&quot;true&quot;,&quot;set_volume&quot;:&quot;1&quot;,&quot;muted&quot;:&quot;false&quot;,&quot;meta&quot;:false,&quot;endofvideooverlay&quot;:&quot;&quot;,&quot;resize&quot;:&quot;true&quot;,&quot;auto_res&quot;:&quot;automatic&quot;,&quot;pixel_ratio&quot;:&quot;true&quot;,&quot;right_click&quot;:&quot;on&quot;,&quot;playback_rate&quot;:&quot;false&quot;,&quot;title&quot;:&quot;minio1.mp4&quot;,&quot;skip_buttons&quot;:[],&quot;nativecontrolsfortouch&quot;:&quot;false&quot;,&quot;locale&quot;:&quot;en&quot;,&quot;enable_resolutions_plugin&quot;:false}\" itemprop=\"video\" itemscope itemtype=\"https:\/\/schema.org\/VideoObject\"><meta itemprop=\"embedUrl\" content=\"https:\/\/community.virtono.com\/wp-content\/uploads\/2017\/09\/minio1.mp4\"><meta itemprop=\"contentUrl\" content=\"https:\/\/community.virtono.com\/wp-content\/uploads\/2017\/09\/minio1.mp4\"><meta itemprop=\"name\" content=\"minio1.mp4\"><meta itemprop=\"description\" content=\"Video\"><meta itemprop=\"uploadDate\" content=\"2017-09-21T06:28:59+03:00\">\n\t\t\t\t<video id=\"video_kgvid_0\" playsinline controls preload=\"metadata\" width=\"640\" height=\"360\" class=\"fitvidsignore video-js kg-video-js-skin\">\n\t\t\t\t\t<source src=\"https:\/\/community.virtono.com\/wp-content\/uploads\/2017\/09\/minio1.mp4?id=0\" type=\"video\/mp4\" data-res=\"Full\">\n\t\t\t\t<\/video>\n\t\t\t<\/div>\n\t\t<\/div>\n<p>Update\u00a0the package database, like right now, Do it&#8230;.do it&#8230;.<\/p>\n<ul class=\"prefixed\">\n<li class=\"line\">sudo apt-get update<\/li>\n<\/ul>\n<p>Now step, getting the Minio server&#8217;s binary file, download it:<\/p>\n<pre class=\"code-pre command\"><code><\/code><\/pre>\n<ul class=\"prefixed\">\n<li class=\"line\">curl -O https:\/\/dl.minio.io\/server\/minio\/release\/linux-amd64\/minio<\/li>\n<\/ul>\n<pre class=\"code-pre command\"><code><\/code><\/pre>\n<p>After the download, let us make that file executable, file name: minio<\/p>\n<ul class=\"prefixed\">\n<li class=\"line\">sudo chmod +x minio<\/li>\n<\/ul>\n<pre class=\"code-pre command\"><code><\/code><\/pre>\n<p>Now, move the file into the\u00a0<code>\/usr\/local\/bin<\/code>\u00a0directory where Minio&#8217;s systemd startup script expects to find it:<\/p>\n<pre class=\"code-pre command\"><code><\/code><\/pre>\n<ul class=\"prefixed\">\n<li class=\"line\">sudo mv minio \/usr\/local\/bin<\/li>\n<\/ul>\n<p>The next step is a logical one, because security should always be the main concern, we&#8217;ll not\u00a0run the Minio server as\u00a0root. We will need to create a user account becuase of systemd\u00a0script wich will look for a user account and group called\u00a0minio-user, let&#8217;s go.<\/p>\n<ul class=\"prefixed\">\n<li class=\"line\">sudo useradd -r minio-user -s \/sbin\/nologin<\/li>\n<\/ul>\n<pre class=\"code-pre command\"><code><\/code><\/pre>\n<p>Change ownership of the binary to\u00a0<strong>minio-user<\/strong>:<\/p>\n<pre class=\"code-pre command\"><code><\/code><\/pre>\n<ul class=\"prefixed\">\n<li class=\"line\">sudo chown minio-user:minio-user \/usr\/local\/bin\/minioC<\/li>\n<\/ul>\n<pre class=\"code-pre command\"><code><\/code><\/pre>\n<p>Setting up a working directory for Minio to work in.<\/p>\n<ul class=\"prefixed\">\n<li class=\"line\">sudo mkdir \/usr\/local\/share\/<span class=\"highlight\">minio<\/span><\/li>\n<\/ul>\n<p>Give ownership of that directory to\u00a0<strong>minio-user<\/strong>:<\/p>\n<pre class=\"code-pre command\"><code><\/code><\/pre>\n<ul class=\"prefixed\">\n<li class=\"line\">sudo chown minio-user:minio-user \/usr\/local\/share\/<span class=\"highlight\">minio<\/span><\/li>\n<\/ul>\n<pre class=\"code-pre command\"><code><\/code><\/pre>\n<p>The\u00a0<code>\/etc<\/code>\u00a0directory is the most common location for server configuration files, so we&#8217;ll create a place for Minio there.<\/p>\n<pre class=\"code-pre command\"><code><\/code><\/pre>\n<ul class=\"prefixed\">\n<li class=\"line\">sudo mkdir \/etc\/<span class=\"highlight\">minio<\/span><\/li>\n<\/ul>\n<pre class=\"code-pre command\"><code><\/code><\/pre>\n<p>Give ownership of that directory to\u00a0<strong>minio-user<\/strong>, too:<\/p>\n<pre class=\"code-pre command\"><code><\/code><\/pre>\n<ul class=\"prefixed\">\n<li class=\"line\">sudo chown minio-user:minio-user \/etc\/minio<\/li>\n<\/ul>\n<pre class=\"code-pre command\"><code><\/code><\/pre>\n<p>Use nano or your favorite text editor to create the environment file needed to modify the default configuration:<\/p>\n<pre class=\"code-pre command\"><code><\/code><\/pre>\n<ul class=\"prefixed\">\n<li class=\"line\">sudo nano \/etc\/default\/<span class=\"highlight\">minio<\/span><\/li>\n<\/ul>\n<pre class=\"code-pre command\"><code><\/code><\/pre>\n<p>And, add the following variables:<\/p>\n<div class=\"code-label \" title=\"\/etc\/default\/minio\">\/etc\/default\/minio<\/div>\n<pre class=\"code-pre \"><code>MINIO_VOLUMES=\"<span class=\"highlight\">\/usr\/local\/share\/minio\/<\/span>\"\nMINIO_OPTS=\"-C <span class=\"highlight\">\/etc\/minio<\/span> --address <span class=\"highlight\">your-server-ip<\/span>:<span class=\"highlight\">9000<\/span>\"\n<\/code><\/pre>\n<ul>\n<li><strong>MINIO_VOLUMES<\/strong>: Points to the storage directory that you created earlier.<\/li>\n<li><strong>MINIO_OPTS<\/strong>: For server behavior. We need to tell Minio the configuration directory it should use and the IP address and port to bind with.<\/li>\n<\/ul>\n<p>Finally, save and close the environment file when you&#8217;re finished making changes.<\/p>\n<p>Minio is now installed, so, next, we&#8217;ll configure the server to run as a system service.<\/p>\n<h2 id=\"step-2-mdash-installing-the-minio-systemd-startup-script\"><span class=\"ez-toc-section\" id=\"Step_2_%E2%80%94_Installing_the_Minio_Systemd_Startup_Script\"><\/span>Step 2 \u2014 Installing the Minio Systemd Startup Script<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<div id=\"kgvid_kgvid_1_wrapper\" class=\"kgvid_wrapper\">\n\t\t\t<div id=\"video_kgvid_1_div\" class=\"fitvidsignore kgvid_videodiv\" data-id=\"kgvid_1\" data-kgvid_video_vars=\"{&quot;id&quot;:&quot;kgvid_1&quot;,&quot;attachment_id&quot;:0,&quot;player_type&quot;:&quot;Video.js v8&quot;,&quot;width&quot;:&quot;640&quot;,&quot;height&quot;:&quot;360&quot;,&quot;fullwidth&quot;:&quot;true&quot;,&quot;fixed_aspect&quot;:&quot;false&quot;,&quot;countable&quot;:false,&quot;count_views&quot;:&quot;quarters&quot;,&quot;start&quot;:&quot;&quot;,&quot;autoplay&quot;:&quot;false&quot;,&quot;pauseothervideos&quot;:&quot;true&quot;,&quot;set_volume&quot;:&quot;1&quot;,&quot;muted&quot;:&quot;false&quot;,&quot;meta&quot;:false,&quot;endofvideooverlay&quot;:&quot;&quot;,&quot;resize&quot;:&quot;true&quot;,&quot;auto_res&quot;:&quot;automatic&quot;,&quot;pixel_ratio&quot;:&quot;true&quot;,&quot;right_click&quot;:&quot;on&quot;,&quot;playback_rate&quot;:&quot;false&quot;,&quot;title&quot;:&quot;capture-2.mp4&quot;,&quot;skip_buttons&quot;:[],&quot;nativecontrolsfortouch&quot;:&quot;false&quot;,&quot;locale&quot;:&quot;en&quot;,&quot;enable_resolutions_plugin&quot;:false}\" itemprop=\"video\" itemscope itemtype=\"https:\/\/schema.org\/VideoObject\"><meta itemprop=\"embedUrl\" content=\"https:\/\/community.virtono.com\/wp-content\/uploads\/2017\/09\/capture-2.mp4\"><meta itemprop=\"contentUrl\" content=\"https:\/\/community.virtono.com\/wp-content\/uploads\/2017\/09\/capture-2.mp4\"><meta itemprop=\"name\" content=\"capture-2.mp4\"><meta itemprop=\"description\" content=\"Video\"><meta itemprop=\"uploadDate\" content=\"2017-09-21T06:28:59+03:00\">\n\t\t\t\t<video id=\"video_kgvid_1\" playsinline controls preload=\"metadata\" width=\"640\" height=\"360\" class=\"fitvidsignore video-js kg-video-js-skin\">\n\t\t\t\t\t<source src=\"https:\/\/community.virtono.com\/wp-content\/uploads\/2017\/09\/capture-2.mp4?id=1\" type=\"video\/mp4\" data-res=\"Full\">\n\t\t\t\t<\/video>\n\t\t\t<\/div>\n\t\t<\/div>\n<p>Minio server is managed as a systemd service, we&#8217;ll have to configure it that way.<\/p>\n<p>First, download the Minio service descriptor file using the following command:<\/p>\n<pre class=\"code-pre command\"><code><\/code><\/pre>\n<ul class=\"prefixed\">\n<li class=\"line\">curl -O https:\/\/raw.githubusercontent.com\/minio\/minio-service\/master\/linux-systemd\/minio.service<\/li>\n<\/ul>\n<pre class=\"code-pre command\"><code><\/code><\/pre>\n<p>After the download has finished, a file named\u00a0<code>minio.service<\/code>\u00a0should be in your working directory.<\/p>\n<p>To audit the contents of\u00a0<code>minio.service<\/code>\u00a0before applying it, open it in a text editor to view its contents:<\/p>\n<pre class=\"code-pre command\"><code><\/code><\/pre>\n<ul class=\"prefixed\">\n<li class=\"line\">nano minio.service<\/li>\n<\/ul>\n<pre class=\"code-pre command\"><code><\/code><\/pre>\n<p>Once you&#8217;re comfortable with the script&#8217;s contents, close your text editor.<\/p>\n<p>Systemd requires that unit files be stored in the systemd configuration directory, so move\u00a0<code>minio.service<\/code>there:<\/p>\n<pre class=\"code-pre command\"><code><\/code><\/pre>\n<ul class=\"prefixed\">\n<li class=\"line\">sudo mv minio.service \/etc\/systemd\/system<\/li>\n<\/ul>\n<pre class=\"code-pre command\"><code><\/code><\/pre>\n<p>Then, run the following command to reload all systemd units:<\/p>\n<pre class=\"code-pre command\"><code><\/code><\/pre>\n<ul class=\"prefixed\">\n<li class=\"line\">sudo systemctl daemon-reload<\/li>\n<\/ul>\n<pre class=\"code-pre command\"><code><\/code><\/pre>\n<p>Finally, enable Minio to start on boot:<\/p>\n<pre class=\"code-pre command\"><code><\/code><\/pre>\n<ul class=\"prefixed\">\n<li class=\"line\">sudo systemctl enable minio<\/li>\n<\/ul>\n<pre class=\"code-pre command\"><code><\/code><\/pre>\n<p>Now that the systemd script is installed and configured, let&#8217;s start the server.<\/p>\n<div><\/div>\n<h2 id=\"step-3-mdash-starting-the-minio-server\"><span class=\"ez-toc-section\" id=\"Step_3_%E2%80%94_Starting_The_Minio_Server\"><\/span>Step 3 \u2014 Starting The Minio Server<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>In this step, you&#8217;ll start the server and modify the firewall to allow access through the browser interface.<\/p>\n<p>First, start the Minio server:<\/p>\n<pre class=\"code-pre command\"><code><\/code><\/pre>\n<ul class=\"prefixed\">\n<li class=\"line\">sudo systemctl start minio<\/li>\n<\/ul>\n<pre class=\"code-pre command\"><code><\/code><\/pre>\n<p>You can verify Minio&#8217;s status, the IP address it&#8217;s bound to, its memory usage, and more with the command:<\/p>\n<pre class=\"code-pre command\"><code><\/code><\/pre>\n<ul class=\"prefixed\">\n<li class=\"line\">sudo systemctl status minio<\/li>\n<\/ul>\n<pre class=\"code-pre command\"><code><\/code><\/pre>\n<p>You should get output like the following:<\/p>\n<pre class=\"code-pre \"><code><\/code><\/pre>\n<div class=\"secondary-code-label \" title=\"Output\">Output<\/div>\n<pre class=\"code-pre \"><code>minio.service - Minio\n   Loaded: loaded (\/etc\/systemd\/system\/minio.service; enabled; vendor preset: enabled)\n   Active: active (running) since Fri 2017-04-07 00:26:10 UTC; 11min ago\n     Docs: https:\/\/docs.minio.io\n  Process: 25069 ExecStartPre=\/bin\/bash -c [ -n \"${MINIO_VOLUMES}\" ] || echo \"Variable MINIO_VOLUMES not set in \/etc\/default\/minio\" (code=exit\n Main PID: 25073 (minio)\n    Tasks: 6\n   Memory: 20.7M\n      CPU: 544ms\n   CGroup: \/system.slice\/minio.service\n           \u2514\u250025073 \/usr\/local\/bin\/minio server -C \/etc\/minio --address :<span class=\"highlight\">9000 \/usr\/local\/share\/minio\/<\/span>\n\nApr 07 00:26:11 <span class=\"highlight\">ashtonandgray<\/span> minio[25073]: Browser Access:\nApr 07 00:26:11 <span class=\"highlight\">ashtonandgray<\/span> minio[25073]:    http:\/\/<span class=\"highlight\">174.138.67.91<\/span>:<span class=\"highlight\">9000<\/span>\n<\/code><\/pre>\n<p>Next, you need to enable access through the firewall to the Minio server on the configured port. In this tutorial, that&#8217;s port\u00a0<code><span class=\"highlight\">9000<\/span><\/code>.<\/p>\n<p>So, first add the rule:<\/p>\n<pre class=\"code-pre command\"><code><\/code><\/pre>\n<ul class=\"prefixed\">\n<li class=\"line\">sudo ufw allow <span class=\"highlight\">9000<\/span><\/li>\n<\/ul>\n<pre class=\"code-pre command\"><code><\/code><\/pre>\n<p>Then, restart the firewall:<\/p>\n<pre class=\"code-pre command\"><code><\/code><\/pre>\n<ul class=\"prefixed\">\n<li class=\"line\">sudo systemctl restart ufw<\/li>\n<\/ul>\n<pre class=\"code-pre command\"><code><\/code><\/pre>\n<p>Minio is now ready to accept traffic.<\/p>\n<h2 id=\"step-4-mdash-securing-access-to-minio-server-with-a-let-39-s-encrypt-ssl-tls-certificate\"><span class=\"ez-toc-section\" id=\"Step_4_%E2%80%94_Securing_Access_to_Minio_Server_With_a_Lets_Encrypt_SSLTLS_Certificate\"><\/span>Step 4 \u2014 Securing Access to Minio Server With a Let&#8217;s Encrypt SSL\/TLS Certificate<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>In this step, we&#8217;ll use the console-based certificate generation client,\u00a0<a href=\"https:\/\/docs.minio.io\/docs\/concert\" target=\"_blank\" rel=\"noopener\">Concert<\/a>, to create an SSL\/TLS certificate using the open source\u00a0<a href=\"https:\/\/letsencrypt.org\/\" target=\"_blank\" rel=\"noopener\">Let&#8217;s Encrypt<\/a>\u00a0certificate authority. While there are other ways to generate Let&#8217;s Encrypt certificates, Concert is both written by Minio&#8217;s developers and part of the official\u00a0<a href=\"https:\/\/docs.minio.io\/docs\/generate-let-s-encypt-certificate-using-concert-for-minio\" target=\"_blank\" rel=\"noopener\">installation instructions<\/a>.<\/p>\n<p>First, download Concert with the command:<\/p>\n<pre class=\"code-pre command\"><code><\/code><\/pre>\n<ul class=\"prefixed\">\n<li class=\"line\">go get -u github.com\/minio\/concert<\/li>\n<\/ul>\n<pre class=\"code-pre command\"><code><\/code><\/pre>\n<p>Once complete, a file named\u00a0<code>concert<\/code>\u00a0should be in the\u00a0<code>bin<\/code>\u00a0directory of your\u00a0<em>GOPATH<\/em>.<\/p>\n<p>Next, we&#8217;ll generate the certificate.<\/p>\n<p><span class=\"note\"><strong>Note:<\/strong>\u00a0To generate the certificate,\u00a0<code>concert<\/code>\u00a0requires that traffic through port 443 be allowed through the firewall.<br \/>\n<\/span><\/p>\n<p>Run the following command using the\u00a0<code>--dirs<\/code>\u00a0flag to tell Concert the output directory, email address, and domain name you&#8217;d like to use:<\/p>\n<pre class=\"code-pre command\"><code><\/code><\/pre>\n<ul class=\"prefixed\">\n<li class=\"line\">sudo <span class=\"highlight\">GOPATH<\/span>\/bin\/concert gen &#8211;dir <span class=\"highlight\">minio-certs sammy@example.com example.com<\/span><\/li>\n<\/ul>\n<pre class=\"code-pre command\"><code><\/code><\/pre>\n<p>The output will look like:<\/p>\n<pre class=\"code-pre \"><code><\/code><\/pre>\n<div class=\"secondary-code-label \" title=\"Output\">Output<\/div>\n<pre class=\"code-pre \"><code>2017\/04\/09 01:21:08 Generated certificates for <span class=\"highlight\">example.com<\/span> under <span class=\"highlight\">minio-certs<\/span> will expire in 89 days.\n<\/code><\/pre>\n<p>And, Concert will have generated a\u00a0<code>private.key<\/code>\u00a0and a\u00a0<code>public.crt<\/code>\u00a0file, which you can verify by running\u00a0<code>ls<\/code>\u00a0on the directory you specified.<\/p>\n<p>Next, we&#8217;ll copy these two files into the\u00a0<code>certs<\/code>\u00a0directory under Minio&#8217;s server configuration folder, which is\u00a0<code>\/etc\/minio<\/code>\u00a0for this tutorial.<\/p>\n<pre class=\"code-pre command\"><code><\/code><\/pre>\n<ul class=\"prefixed\">\n<li class=\"line\">sudo cp <span class=\"highlight\">minio-certs<\/span>\/private.key <span class=\"highlight\">\/etc\/minio<\/span>\/certs\/<\/li>\n<li class=\"line\">sudo cp <span class=\"highlight\">minio-certs<\/span>\/public.crt <span class=\"highlight\">\/etc\/minio<\/span>\/certs\/<\/li>\n<\/ul>\n<pre class=\"code-pre command\"><code><\/code><\/pre>\n<p>Now, change the ownership of the files to\u00a0<strong>minio-user<\/strong>:<\/p>\n<pre class=\"code-pre command\"><code><\/code><\/pre>\n<ul class=\"prefixed\">\n<li class=\"line\">sudo chown minio-user:minio-user <span class=\"highlight\">\/etc\/minio<\/span>\/certs\/private.key<\/li>\n<li class=\"line\">sudo chown minio-user:minio-user <span class=\"highlight\">\/etc\/minio<\/span>\/certs\/public.crt<\/li>\n<\/ul>\n<pre class=\"code-pre command\"><code><\/code><\/pre>\n<p>Restart the Minio server, so that it becomes aware of the certificate and starts using HTTPS:<\/p>\n<pre class=\"code-pre command\"><code><\/code><\/pre>\n<ul class=\"prefixed\">\n<li class=\"line\">sudo systemctl restart minio<\/li>\n<\/ul>\n<pre class=\"code-pre command\"><code><\/code><\/pre>\n<p>Since the Let&#8217;s Encrypt certificate generated is valid for just 90 days and repeatedly renewing it manually would be inefficient, start Concert in server mode to set up a system to auto-renew the certificate:<\/p>\n<pre class=\"code-pre command\"><code><\/code><\/pre>\n<ul class=\"prefixed\">\n<li class=\"line\">sudo concert server &#8211;dir <span class=\"highlight\">minio-certs<\/span> <span class=\"highlight\">sammy<\/span>@<span class=\"highlight\">example.com example.com<\/span><\/li>\n<\/ul>\n<pre class=\"code-pre command\"><code><\/code><\/pre>\n<p>With that, Minio&#8217;s connection is now secure, and the SSL\/TLS certificate will automatically renew for you. In the next step, you&#8217;ll connect to Minio through the browser to use and administrate the server.<\/p>\n<div><\/div>\n<h2 id=\"step-5-mdash-securely-connecting-to-minio-39-s-web-interface-using-https\"><span class=\"ez-toc-section\" id=\"Step_5_%E2%80%94_Securely_Connecting_to_Minios_Web_Interface_Using_HTTPS\"><\/span>Step 5 \u2014 Securely Connecting to Minio&#8217;s Web Interface Using HTTPS<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>In this step, you&#8217;ll securely connect to the Minio web interface via HTTPS, and then you&#8217;ll create buckets and upload objects into them.<\/p>\n<p>Access the web interface by pointing your browser to\u00a0<code>https:\/\/<span class=\"highlight\">example.com<\/span>:<span class=\"highlight\">9000<\/span><\/code>.<\/p>\n<p>Next, you&#8217;ll need to find your login credentials. Minio wrote its configuration file to the\u00a0<code>\/etc\/minio<\/code>directory when you started the server in Step 3. That configuration file,\u00a0<code>config.json<\/code>, contains the\u00a0<strong>accessKey<\/strong>\u00a0and\u00a0<strong>secretKey<\/strong>\u00a0values you&#8217;ll need to access the server now. Be sure to copy and keep both keys in an easy-to-reach and secure place for the future.<\/p>\n<div class=\"code-label \" title=\"\/etc\/minio\/config.json\">\/etc\/minio\/config.json<\/div>\n<pre class=\"code-pre \"><code>{\n    \"version\": \"19\",\n    \"credential\": {\n        \"accessKey\": \"<span class=\"highlight\">8ngv6i97QZV959Y87Y007FP<\/span>\",\n        \"secretKey\": \"<span class=\"highlight\">C6hK8ytyBe3Q952bght65434JiZN08itG49jG5RX<\/span>\"\n    },\n    \"region\": \"us-east-1\",\n    ...\n}\n<\/code><\/pre>\n<p>Now, log into the main interface by entering your credentials and clicking the round button with the arrow directly below the input fields.<\/p>\n<p>From there, click the light-red\u00a0<strong>+<\/strong>\u00a0button on the bottom right of the main interface to bring up two additional yellow buttons.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>If you are looking for a brief introduction of Object Storage and Why would need it, check out this article. And for those of you already familiar with the What and Why of\u00a0Object Storage, in this article we shall cover up the How. Since you&#8217;ve read the title you might<\/p>\n","protected":false},"author":3,"featured_media":1013,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[3],"tags":[],"class_list":["post-1009","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorial-how-to"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2017\/09\/Minio-Logo.jpg?fit=612%2C518&ssl=1","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p7ISfL-gh","jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":3767,"url":"https:\/\/www.virtono.com\/community\/tutorial-how-to\/how-to-deploy-minio-on-kubernetes\/","url_meta":{"origin":1009,"position":0},"title":"How to Deploy MinIO on Kubernetes","author":"George B.","date":"August 23, 2023","format":false,"excerpt":"We will examine how to deploy MinIO on Kubernetes in this article. We're assuming that K3S and Helm are already set up on your VM. Let's get going! In the digital world, data is the new oil. Having effective and scalable storage solutions is essential as data volume increases exponentially.\u2026","rel":"","context":"In &quot;Tutorials&quot;","block_context":{"text":"Tutorials","link":"https:\/\/www.virtono.com\/community\/category\/tutorial-how-to\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2023\/08\/How-to-Deploy-MinIO-on-Kubernetes.png?fit=360%2C240&ssl=1&resize=350%2C200","width":350,"height":200},"classes":[]},{"id":1006,"url":"https:\/\/www.virtono.com\/community\/knowledgebase\/what-is-object-storage-and-why-do-you-need-it\/","url_meta":{"origin":1009,"position":1},"title":"What is Object Storage and Why do you need it","author":"Daniel Draga","date":"September 20, 2017","format":false,"excerpt":"By this time we are familiar with the tremendous amount of data that is being produced\u00a0at a massive scale every single day by every single \"smart\" device around us. Before going any further let us differentiate between structured and unstructured data and why structured data storage techniques are now obsolete.\u2026","rel":"","context":"In &quot;Knowledgebase&quot;","block_context":{"text":"Knowledgebase","link":"https:\/\/www.virtono.com\/community\/category\/knowledgebase\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2017\/09\/i_ObjectStorage_1.png?fit=400%2C250&ssl=1&resize=350%2C200","width":350,"height":200},"classes":[]},{"id":267,"url":"https:\/\/www.virtono.com\/community\/knowledgebase\/types-of-servers\/","url_meta":{"origin":1009,"position":2},"title":"Types Of Servers","author":"Daniel Draga","date":"July 30, 2016","format":false,"excerpt":"File Servers A file server may be dedicated or non-dedicated. \u00a0A dedicated server is designed specifically for use as a file server\u00a0 not for other database purposes. File servers may also be categorized by the method of access: Internet file servers are frequently accessed by File Transfer Protocol (FTP) or\u2026","rel":"","context":"In &quot;Knowledgebase&quot;","block_context":{"text":"Knowledgebase","link":"https:\/\/www.virtono.com\/community\/category\/knowledgebase\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2016\/07\/ic-3.jpg?fit=940%2C500&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2016\/07\/ic-3.jpg?fit=940%2C500&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2016\/07\/ic-3.jpg?fit=940%2C500&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2016\/07\/ic-3.jpg?fit=940%2C500&ssl=1&resize=700%2C400 2x"},"classes":[]},{"id":1406,"url":"https:\/\/www.virtono.com\/community\/news-announcements\/why-choose-dedicated-server-instances-instead-of-bare-metal-servers\/","url_meta":{"origin":1009,"position":3},"title":"Why choose Dedicated Server Instances instead of Bare-Metal Servers?","author":"Virtono","date":"May 16, 2018","format":false,"excerpt":"Why choose Dedicated Server Instances instead of Bare-Metal Servers? Lets first define a dedicated instance: A dedicated instance it is a dedicated server deployed in cloud and have the same specifications like a bare-metal:\u00a0dedicated CPU,\u00a0SSD storage and\u00a0RAM memory. It appears to the end-user and behaves exactly like a bare but\u2026","rel":"","context":"In &quot;Announcements&quot;","block_context":{"text":"Announcements","link":"https:\/\/www.virtono.com\/community\/category\/news-announcements\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2018\/05\/dedicated-instances-1.png?fit=1200%2C582&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2018\/05\/dedicated-instances-1.png?fit=1200%2C582&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2018\/05\/dedicated-instances-1.png?fit=1200%2C582&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2018\/05\/dedicated-instances-1.png?fit=1200%2C582&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2018\/05\/dedicated-instances-1.png?fit=1200%2C582&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":1127,"url":"https:\/\/www.virtono.com\/community\/tutorial-how-to\/mongodb\/","url_meta":{"origin":1009,"position":4},"title":"MongoDB","author":"Shreyash Sharma","date":"October 17, 2017","format":false,"excerpt":"Series:\u00a0Introduction to the MEAN Stack Part 1: Definition of the MEAN stack Part 2:\u00a0Setup of the MEAN stack Part 3:\u00a0Node.js Part 4:\u00a0npm Part 5:\u00a0Connect Part 6:\u00a0Express Part 7:\u00a0MongoDB Part 8:\u00a0Mongoose Part 9:\u00a0REST Part 10:\u00a0Baucis Part 11:\u00a0Bower Part 12:\u00a0AngularJS Part 13:\u00a0Restangular So far our server has only returned static data: files\u2026","rel":"","context":"In &quot;Knowledgebase&quot;","block_context":{"text":"Knowledgebase","link":"https:\/\/www.virtono.com\/community\/category\/knowledgebase\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2017\/10\/mongodb-1.jpeg?fit=1040%2C560&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2017\/10\/mongodb-1.jpeg?fit=1040%2C560&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2017\/10\/mongodb-1.jpeg?fit=1040%2C560&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2017\/10\/mongodb-1.jpeg?fit=1040%2C560&ssl=1&resize=700%2C400 2x"},"classes":[]},{"id":832,"url":"https:\/\/www.virtono.com\/community\/internet-and-technology-news\/reinventing-the-server\/","url_meta":{"origin":1009,"position":5},"title":"Reinventing The Server","author":"Daniel Draga","date":"January 3, 2017","format":false,"excerpt":"At the recently concluded South Asia Dell Enterprise Forum (DEFSA), Dell unveiled a series of 13th Generation PowerEdge servers, designed to help customers worldwide address and optimise the evolving spectrum of application and workload requirements. These new generation of servers feature customer-inspired engineering built to optimise price-performance for the widest\u2026","rel":"","context":"In &quot;IT News&quot;","block_context":{"text":"IT News","link":"https:\/\/www.virtono.com\/community\/category\/internet-and-technology-news\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2017\/01\/PH002.jpg?fit=560%2C332&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2017\/01\/PH002.jpg?fit=560%2C332&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.virtono.com\/community\/wp-content\/uploads\/2017\/01\/PH002.jpg?fit=560%2C332&ssl=1&resize=525%2C300 1.5x"},"classes":[]}],"_links":{"self":[{"href":"https:\/\/www.virtono.com\/community\/wp-json\/wp\/v2\/posts\/1009","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.virtono.com\/community\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.virtono.com\/community\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.virtono.com\/community\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.virtono.com\/community\/wp-json\/wp\/v2\/comments?post=1009"}],"version-history":[{"count":4,"href":"https:\/\/www.virtono.com\/community\/wp-json\/wp\/v2\/posts\/1009\/revisions"}],"predecessor-version":[{"id":3588,"href":"https:\/\/www.virtono.com\/community\/wp-json\/wp\/v2\/posts\/1009\/revisions\/3588"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.virtono.com\/community\/wp-json\/wp\/v2\/media\/1013"}],"wp:attachment":[{"href":"https:\/\/www.virtono.com\/community\/wp-json\/wp\/v2\/media?parent=1009"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.virtono.com\/community\/wp-json\/wp\/v2\/categories?post=1009"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.virtono.com\/community\/wp-json\/wp\/v2\/tags?post=1009"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}