{"id":482510,"date":"2026-06-05T10:12:35","date_gmt":"2026-06-05T10:12:35","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=482510"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=482510","title":{"rendered":"Mini Bucket 3.6.2: From Beta to Release. Full Installation with Screenshots and Comments"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>Why Debian 9, PHP 7.0, and no frameworks. And how to set up HTTPS in 5 minutes.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f6e\/5f2\/45c\/f6e5f245caaf01d3dcca2446d833e505.png\" width=\"1774\" height=\"887\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/f6e\/5f2\/45c\/f6e5f245caaf01d3dcca2446d833e505.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f6e\/5f2\/45c\/f6e5f245caaf01d3dcca2446d833e505.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h4>Foreword for those who haven&#8217;t read the first article<\/h4>\n<p>Last time, I told the <a href=\"https:\/\/habr.com\/ru\/articles\/1039652\/\" rel=\"noopener noreferrer nofollow\">story<\/a> of how I wanted to make a couple of pages for SAMBA and NFS, but ended up with a NAS control panel of 20+ pages. I named the project Mini Bucket.<\/p>\n<p>Important: That version was a beta. Raw, with rough edges, but alive. Its goal was to demonstrate the concept. And people got interested. So, it needs to be polished.<\/p>\n<p>Now \u2013 version 3.6.2. A ton of problems have been fixed, security has been added, a separate domain, forum, and wiki have appeared. Today, I&#8217;ll walk you through the installation step-by-step with screenshots.<\/p>\n<p>But first \u2013 a quick summary of what has changed. Then \u2013 pure practice.<\/p>\n<h4>What\u2019s Fixed in 3.6.2 (The Main Points)<\/h4>\n<h3>Security: Critical Holes Closed<\/h3>\n<p>In the beta, worker files, cron scripts, temporary files, and logs were located in the web server zone. Technically, you could send a request to an executable file without authorization \u2013 no API key, no login\/password.<\/p>\n<p>Fixed: All critical files have been moved to\u00a0<code>\/var\/www\/minib\/<\/code>, outside the website&#8217;s folder. The Apache configuration has been revised. Temporary files and logs are now inaccessible from the outside.<\/p>\n<h3>Logic and Bugs<\/h3>\n<ul>\n<li>\n<p>The Host Manager (key rotation) no longer overwrites the host SN when making changes \u2013 rotation works correctly.<\/p>\n<\/li>\n<li>\n<p>Disk partition creation has been fixed.<\/p>\n<\/li>\n<li>\n<p>Cron jobs can now be viewed on any servers in the cluster. Added the ability to create your own scripts and run them on a schedule.<\/p>\n<\/li>\n<\/ul>\n<h3>Databases<\/h3>\n<p>Previously, everything was stored in a single SQLite database. Under load, &#171;database is locked&#187; errors would appear.<\/p>\n<p>Solution: Split the databases into different files + added a query queue. No more conflicts.<\/p>\n<h4>Project Organization: No Longer Just a Script, but an Ecosystem<\/h4>\n<p>Initially, the project lived on the subdomain\u00a0<a href=\"http:\/\/mini-b.itp-corp.ru\" rel=\"noopener noreferrer nofollow\"><code>mini-b.itp-corp.ru<\/code><\/a>. But as things progressed \u2013 I allocated a separate domain.<\/p>\n<p>And three important sections:<\/p>\n<ol>\n<li>\n<p><a href=\"https:\/\/mini-bucket.ru\/community\/\" rel=\"noopener noreferrer nofollow\"><strong>Community \/ Forum<\/strong><\/a>\u00a0\u2013 Discuss bugs, features, share experiences.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/mini-bucket.ru\/wiki\" rel=\"noopener noreferrer nofollow\"><strong>Wiki<\/strong><\/a>\u00a0\u2013 Because my vision for the panel might not be obvious to others. Populating it gradually.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/mini-bucket.ru\/donation\/\" rel=\"noopener noreferrer nofollow\"><strong>Donations<\/strong><\/a>\u00a0\u2013 If the project is useful and you want to say &#171;thank you&#187; with a deed.<\/p>\n<\/li>\n<\/ol>\n<p>For those who already have the beta installed: update via the Update section inside mini-b.<\/p>\n<p>New installation \u2013 read on.<\/p>\n<h4>Installing Mini Bucket 3.6.2 (Step-by-Step with Screenshots)<\/h4>\n<h3>I&#8217;ll answer the questions you&#8217;re about to ask right away<\/h3>\n<p><strong>Why Debian 9?<\/strong><br \/>Because I managed to install it on my Netgear Stora MS2000 with difficulty. And it&#8217;s not as resource-hungry as vanilla Ubuntu. The panel is optimized for old hardware \u2013 why would it need a modern distribution?<\/p>\n<p><strong>Why PHP 7.0?<\/strong><br \/>That&#8217;s just how it turned out. Debian 9 uses it by default. And it works.<\/p>\n<p><strong>Why no framework? Why not Colplit with a bunch of stuff?<\/strong><br \/>Because then it wouldn&#8217;t be Mini Bucket, but another heavy build. Frameworks are heavy. Our stack of PHP + JS + HTML is quite enough to accomplish all tasks.<\/p>\n<p><strong>Why is everything in English?<\/strong><br \/>Not everything) Some Russian still appears in places. But honestly \u2013 the English-speaking market is larger. It&#8217;s the standard. Initially, the project was entirely in Russian \u2013 it was an eyesore.<br \/>Multilingual support with language packs is planned. But with this scope, the priority is clearly not that.<\/p>\n<h4>Now \u2013 the installation. Without further ado.<\/h4>\n<p>I won&#8217;t show how to install Debian. I assume that&#8217;s a basic thing for my audience.<\/p>\n<p>I&#8217;ll be installing on a VM. You might have bare metal \u2013 the process is the same.<\/p>\n<h3>1. System Preparation and Running the Script<\/h3>\n<p>After installing the system, log into the console. Work as root.<\/p>\n<p>bash<\/p>\n<pre><code>su -<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:87px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>Enter the root password.<\/p>\n<p>Install\u00a0<code>wget<\/code>\u00a0(though it&#8217;s usually there by default, just in case):<\/p>\n<p>bash<\/p>\n<pre><code>apt install -y wget<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>Download the pre-installation script:<\/p>\n<p>bash<\/p>\n<pre><code>wget --no-check-certificate -O minib-install.sh \"https:\/\/update.mini-bucket.ru\/minib\/downloads\/install\/minib-install.sh\"<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><strong>Why\u00a0<\/strong><code><strong>--no-check-certificate<\/strong><\/code><strong>?<\/strong><br \/>Wget complains about the Let\u2019s Encrypt certificate. Skipping the check is normal for installation.<\/p>\n<p>Make the script executable:<\/p>\n<p>bash<\/p>\n<pre><code>chmod +x minib-install.sh<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>Run it:<\/p>\n<p>bash<\/p>\n<pre><code>bash minib-install.sh<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/fad\/12f\/cc2\/fad12fcc22f8068c577de3cccfadd227.png\" width=\"834\" height=\"656\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/fad\/12f\/cc2\/fad12fcc22f8068c577de3cccfadd227.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/fad\/12f\/cc2\/fad12fcc22f8068c577de3cccfadd227.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<hr\/>\n<h3>2. What the Installation Script Does (While Waiting)<\/h3>\n<p>I&#8217;ll briefly explain:<\/p>\n<ul>\n<li>\n<p>Installs all necessary packages for Mini Bucket to work: NFS, SMB, rsync, vsftpd, UFW, Apache, PHP 7.0, etc.<\/p>\n<\/li>\n<li>\n<p>Creates the required directories and configs for the services.<\/p>\n<\/li>\n<li>\n<p>Assigns permissions to some configs.<\/p>\n<\/li>\n<li>\n<p>Makes changes to\u00a0<code>sudoers<\/code>:<\/p>\n<ul>\n<li>\n<p>Allows\u00a0<code>www-data<\/code>\u00a0to run\u00a0<code>sudo<\/code><\/p>\n<\/li>\n<li>\n<p>Disables sudo notifications so parsing doesn&#8217;t break.<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>Copies files to\u00a0<code>\/var\/www<\/code>, configures Apache, restarts services.<\/p>\n<\/li>\n<li>\n<p>Creates cron jobs.<\/p>\n<\/li>\n<\/ul>\n<p>You can download the full script from our website and examine its contents.<\/p>\n<h3>3. After Installation \u2013 First Login<\/h3>\n<p>The script will output the URL, login, and password.<\/p>\n<p>Paste the URL into your browser. You&#8217;ll reach the login page.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/3aa\/f7b\/b7a\/3aaf7bb7a18519b0fec4ecebf0af3ade.png\" width=\"2559\" height=\"1409\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/3aa\/f7b\/b7a\/3aaf7bb7a18519b0fec4ecebf0af3ade.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/3aa\/f7b\/b7a\/3aaf7bb7a18519b0fec4ecebf0af3ade.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p><strong>Login:<\/strong>\u00a0<code>admin<\/code><br \/><strong>Password:<\/strong>\u00a0<code>1234<\/code><\/p>\n<p>Yes, the password is super cryptographically strong. We&#8217;ll change it later.<\/p>\n<p>Click &#171;Login&#187; \u2013 you&#8217;ll land on the installation check page.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/207\/4cc\/b80\/2074ccb8044ea8ae4beb6dc51ced859e.png\" width=\"2559\" height=\"1410\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/207\/4cc\/b80\/2074ccb8044ea8ae4beb6dc51ced859e.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/207\/4cc\/b80\/2074ccb8044ea8ae4beb6dc51ced859e.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p><strong>Important:<\/strong>\u00a0Errors may appear in the &#171;System Services&#187; section (Rsync and Firewall-UFW), as well as in the &#171;Files and Configuration&#187; section (Administrator configuration). These errors are not critical \u2013 they can be safely ignored.<\/p>\n<p>The main thing is that all packages are installed. Scroll down, click Next.<\/p>\n<h3>4. Setup Wizard<\/h3>\n<p>The wizard starts. Accept the standard agreements.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f9f\/753\/097\/f9f753097e2b9992c5063572e8dc4bc9.png\" width=\"2559\" height=\"1289\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/f9f\/753\/097\/f9f753097e2b9992c5063572e8dc4bc9.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f9f\/753\/097\/f9f753097e2b9992c5063572e8dc4bc9.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>If at least one person in their life reads them \u2013 I&#8217;ll be happy. That means my efforts weren&#8217;t in vain.<\/p>\n<p>Next \u2013 checking read\/write permissions for configs and databases.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f3b\/fd9\/261\/f3bfd9261276c5f33dc347695e8907e8.png\" width=\"2559\" height=\"1408\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/f3b\/fd9\/261\/f3bfd9261276c5f33dc347695e8907e8.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f3b\/fd9\/261\/f3bfd9261276c5f33dc347695e8907e8.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>Everything is fine \u2013 click Next.<\/p>\n<h3>5. Hostname (Important Point)<\/h3>\n<p>I will be using SSL. Therefore, the hostname is critical. You can set it via\u00a0<code>\/etc\/hosts<\/code>, but it&#8217;s easier to set it right away.<\/p>\n<p>I enter the FQDN hostname:\u00a0<code>minib.local<\/code><\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d31\/493\/fa0\/d31493fa0ae74864b33bb4ec3939faf5.png\" width=\"2558\" height=\"1289\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/d31\/493\/fa0\/d31493fa0ae74864b33bb4ec3939faf5.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d31\/493\/fa0\/d31493fa0ae74864b33bb4ec3939faf5.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>This works.<\/p>\n<h3>6. Key Generation<\/h3>\n<p>The following will be created:<\/p>\n<ul>\n<li>\n<p><strong>SN (Serial Number \/ Host ID)<\/strong>\u00a0\u2013 used for one &#171;bucket&#187; to recognize another.<\/p>\n<\/li>\n<li>\n<p><strong>API Key<\/strong>\u00a0\u2013 needed for frontend and backend interaction (both locally and with remote servers).<\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b82\/54c\/7f8\/b8254c7f8041ba31d0470898fb388dbf.png\" width=\"2559\" height=\"1410\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/b82\/54c\/7f8\/b8254c7f8041ba31d0470898fb388dbf.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b82\/54c\/7f8\/b8254c7f8041ba31d0470898fb388dbf.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>Click &#171;Generate Security Credentials&#187;.<\/p>\n<h3>7. Administrator Account<\/h3>\n<p>I leave the login as\u00a0<code>admin<\/code>. I don&#8217;t provide an email. I enter my own password.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/78c\/3a1\/a03\/78c3a1a03021ca6d7a883df8f12b6fd7.png\" width=\"2559\" height=\"1410\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/78c\/3a1\/a03\/78c3a1a03021ca6d7a883df8f12b6fd7.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/78c\/3a1\/a03\/78c3a1a03021ca6d7a883df8f12b6fd7.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>Click &#171;Create account&#187;.<\/p>\n<p>We see the coveted &#171;Launch MiniB&#187; button.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f87\/66a\/494\/f8766a494dea3cecb05ed47207e2c444.png\" width=\"2559\" height=\"1407\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/f87\/66a\/494\/f8766a494dea3cecb05ed47207e2c444.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f87\/66a\/494\/f8766a494dea3cecb05ed47207e2c444.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>Click on it.<\/p>\n<p>The test runs again. Click\u00a0<code>Next<\/code>\u00a0\u2013 we enter the control panel.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/177\/27f\/9d9\/17727f9d99dcb63692353a8dd0cc24a8.png\" width=\"2559\" height=\"1411\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/177\/27f\/9d9\/17727f9d99dcb63692353a8dd0cc24a8.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/177\/27f\/9d9\/17727f9d99dcb63692353a8dd0cc24a8.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p><strong>Possible glitch:<\/strong>\u00a0Due to cache, metrics might not load. If the panel doesn&#8217;t respond for 5 seconds \u2013 just reload the page. We&#8217;ll fix this.<\/p>\n<h4>Initial Setup: Enabling HTTPS<\/h4>\n<p><strong>Why is SSL mandatory?<\/strong><br \/>Keys are transmitted in request headers. They don&#8217;t appear in the URL, but any Wireshark capturing packets will see your API key. So HTTPS is a necessity.<\/p>\n<h3>8. Configure the Host Manager<\/h3>\n<p>Go to &#171;Host manager&#187;.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/334\/932\/4e6\/3349324e66877b8a2db84e7fd57da186.png\" width=\"2547\" height=\"1287\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/334\/932\/4e6\/3349324e66877b8a2db84e7fd57da186.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/334\/932\/4e6\/3349324e66877b8a2db84e7fd57da186.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>On our host, find the three dots (\u22ee) \u2192 select &#171;Edit&#187;.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/db2\/a18\/7b4\/db2a187b4887887252c09ef870b234ab.png\" width=\"766\" height=\"398\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/db2\/a18\/7b4\/db2a187b4887887252c09ef870b234ab.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/db2\/a18\/7b4\/db2a187b4887887252c09ef870b234ab.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>In the settings window, change the IP address to our FQDN name (<code>minib.local<\/code>).<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/12b\/003\/b96\/12b003b969a4f12fb36043124046f5d7.png\" width=\"592\" height=\"372\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/12b\/003\/b96\/12b003b969a4f12fb36043124046f5d7.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/12b\/003\/b96\/12b003b969a4f12fb36043124046f5d7.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>This is necessary for the API to work correctly.<\/p>\n<p>Leave the protocol as HTTP for now (we&#8217;ll return after issuing the certificate).<\/p>\n<p>Click &#171;Save&#187;.<\/p>\n<h3>9. Create a Self-Signed Certificate<\/h3>\n<p>Go to &#171;Security&#187; \u2192 &#171;SSL Manager&#187;.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ebc\/24e\/304\/ebc24e30405e1e06f91dcb3388f56261.png\" width=\"2544\" height=\"1289\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/ebc\/24e\/304\/ebc24e30405e1e06f91dcb3388f56261.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ebc\/24e\/304\/ebc24e30405e1e06f91dcb3388f56261.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>In the top right corner, click &#171;Create&#187; \u2192 &#171;Self-Signed Certificate&#187;.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/8f3\/3d5\/fdd\/8f33d5fdd009f570574bc374e3b1b803.png\" width=\"2546\" height=\"1287\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/8f3\/3d5\/fdd\/8f33d5fdd009f570574bc374e3b1b803.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/8f3\/3d5\/fdd\/8f33d5fdd009f570574bc374e3b1b803.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>A certificate creation window will open.<\/p>\n<p>If you have a purchased certificate or one from Let&#8217;s Encrypt \u2013 you can import it there as well.<\/p>\n<p>Fill in:<\/p>\n<ul>\n<li>\n<p><strong>Certificate Name<\/strong>\u00a0\u2013\u00a0<code>MiniB_web<\/code><\/p>\n<\/li>\n<li>\n<p><strong>Domain\/CN<\/strong>\u00a0\u2013\u00a0<code>minib.local<\/code>\u00a0(your FQDN)<\/p>\n<\/li>\n<li>\n<p><strong>Valid Days<\/strong>\u00a0\u2013\u00a0<code>365<\/code><\/p>\n<\/li>\n<li>\n<p><strong>Key Size<\/strong>\u00a0\u2013\u00a0<code>2048 bits<\/code>\u00a0(larger makes no sense)<\/p>\n<\/li>\n<li>\n<p><strong>Signature Algorithm<\/strong>\u00a0\u2013 leave as default<\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/2f8\/588\/e82\/2f8588e82bc06380d5d9298d456e91e1.png\" width=\"715\" height=\"901\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/2f8\/588\/e82\/2f8588e82bc06380d5d9298d456e91e1.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/2f8\/588\/e82\/2f8588e82bc06380d5d9298d456e91e1.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>Click &#171;Create&#187;.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/214\/857\/536\/2148575369c147d33b984893f659c30e.png\" width=\"2546\" height=\"1284\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/214\/857\/536\/2148575369c147d33b984893f659c30e.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/214\/857\/536\/2148575369c147d33b984893f659c30e.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h3>10. Enable HTTPS<\/h3>\n<p>Go to &#171;System&#187; \u2192 &#171;Mini-B Settings&#187;.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/35d\/6ad\/0f7\/35d6ad0f7a4903700ec300faa1ddf47f.png\" width=\"2544\" height=\"1287\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/35d\/6ad\/0f7\/35d6ad0f7a4903700ec300faa1ddf47f.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/35d\/6ad\/0f7\/35d6ad0f7a4903700ec300faa1ddf47f.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>We are interested in the &#171;Enable HTTPS&#187; toggle in the &#171;HTTPS \/ SSL Configuration&#187; block.<\/p>\n<p>Turn it on.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/303\/7f4\/4e5\/3037f44e5f7ff6f9a8d9ab680c1f074e.png\" width=\"2544\" height=\"1287\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/303\/7f4\/4e5\/3037f44e5f7ff6f9a8d9ab680c1f074e.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/303\/7f4\/4e5\/3037f44e5f7ff6f9a8d9ab680c1f074e.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>New fields appear. Click &#171;Select&#187; to choose the certificate.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c87\/f88\/8aa\/c87f888aa78d6f2d2779e7e29218e066.png\" width=\"1066\" height=\"574\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/c87\/f88\/8aa\/c87f888aa78d6f2d2779e7e29218e066.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c87\/f88\/8aa\/c87f888aa78d6f2d2779e7e29218e066.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>In the window that opens, select the created\u00a0<code>MiniB_web<\/code>.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/4da\/c8d\/a09\/4dac8da09f78b5064b61cb280834f432.png\" width=\"2557\" height=\"1288\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/4da\/c8d\/a09\/4dac8da09f78b5064b61cb280834f432.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/4da\/c8d\/a09\/4dac8da09f78b5064b61cb280834f432.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>After filling, click &#171;Apply &amp; test config&#187;.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/8a2\/c5a\/66a\/8a2c5a66a5131b4599133f203e47300b.png\" width=\"2544\" height=\"1287\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/8a2\/c5a\/66a\/8a2c5a66a5131b4599133f203e47300b.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/8a2\/c5a\/66a\/8a2c5a66a5131b4599133f203e47300b.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>The settings are applied. You will see an error \u2013 this is normal.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/327\/3cd\/f44\/3273cdf44279d1bebe2cd4ae196d82ac.png\" width=\"2544\" height=\"1284\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/327\/3cd\/f44\/3273cdf44279d1bebe2cd4ae196d82ac.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/327\/3cd\/f44\/3273cdf44279d1bebe2cd4ae196d82ac.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>The error means the interface is now working over HTTPS. That&#8217;s by design.<\/p>\n<h3>11. Final Step: DNS \/ hosts<\/h3>\n<p>Now, you need your FQDN name to point to the server&#8217;s IP address.<\/p>\n<p><strong>Options:<\/strong><\/p>\n<ul>\n<li>\n<p>Set it in your DNS server (if you have one)<\/p>\n<\/li>\n<li>\n<p>Set it in your router<\/p>\n<\/li>\n<li>\n<p>Or in the\u00a0<code>hosts<\/code>\u00a0file on the computer you are connecting from<\/p>\n<\/li>\n<\/ul>\n<p><strong>For Windows:<\/strong>\u00a0<code>C:\\Windows\\System32\\drivers\\etc\\hosts<\/code><br \/><strong>For Linux\/Mac:<\/strong>\u00a0<code>\/etc\/hosts<\/code><\/p>\n<p>Add the line:<\/p>\n<p>text<\/p>\n<pre><code>192.168.x.x   minib.local<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>Now, in your browser, enter:<\/p>\n<p>text<\/p>\n<pre><code>https:\/\/your-name:port<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>The browser will show a warning about an untrusted certificate \u2013 accept it.<\/p>\n<p>Log in. Go back to &#171;Host manager&#187; \u2192 &#171;Edit&#187; our host \u2192 switch the protocol to HTTPS.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f84\/781\/12f\/f8478112f948f1c5c9edc377af6f017f.png\" width=\"691\" height=\"408\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/f84\/781\/12f\/f8478112f948f1c5c9edc377af6f017f.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f84\/781\/12f\/f8478112f948f1c5c9edc377af6f017f.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>Click &#171;Save&#187;.<\/p>\n<h3>12. Final Touch (Recommendation)<\/h3>\n<p>It&#8217;s better to go into SSL Manager, download the created certificate, and install it into your system (into the root certificate authorities). Then the browser will stop complaining.<\/p>\n<h4>Done. What&#8217;s Next?<\/h4>\n<p>Mini Bucket 3.6.2 is installed, working over HTTPS. Now you can:<\/p>\n<ul>\n<li>\n<p>Configure disks and RAID<\/p>\n<\/li>\n<li>\n<p>Create SMB\/NFS shares<\/p>\n<\/li>\n<li>\n<p>Connect other servers via key rotation<\/p>\n<\/li>\n<li>\n<p>Use the file manager, cron, firewall<\/p>\n<\/li>\n<\/ul>\n<p>In future articles, I&#8217;ll show the step-by-step configuration of each module \u2013 with my own comments: why I do it this way and not another, what pitfalls to expect, how to avoid them.<\/p>\n<hr\/>\n<h4>P.S. Feedback<\/h4>\n<p>The project lives and grows thanks to your ideas and bug reports.<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/mini-bucket.ru\/community\/\" rel=\"noopener noreferrer nofollow\"><strong>Forum \/ Community<\/strong><\/a>\u00a0\u2013 for ideas and questions.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/mini-bucket.ru\/wiki\" rel=\"noopener noreferrer nofollow\"><strong>Wiki<\/strong><\/a>\u00a0\u2013 helps if my vision doesn&#8217;t match yours.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/mini-bucket.ru\/donation\/\" rel=\"noopener noreferrer nofollow\"><strong>Donations<\/strong><\/a>\u00a0\u2013 support development.<\/p>\n<\/li>\n<\/ul>\n<p>And remember: Mini Bucket is not another framework-based build. It&#8217;s a lightweight panel for old hardware, using pure PHP, JS, and HTML. And it works.<\/p>\n<p><strong>Links:<\/strong><\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/mini-bucket.ru\/\" rel=\"noopener noreferrer nofollow\">Project Website<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/mini-bucket.ru\/community\/\" rel=\"noopener noreferrer nofollow\">Forum \/ Community<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/mini-bucket.ru\/wiki\" rel=\"noopener noreferrer nofollow\">Wiki<\/a><\/p>\n<\/li>\n<\/ul>\n<p><strong>P.S.<\/strong>\u00a0Screenshots might show different versions or names, but I tried to align everything. Otherwise, I already have a whole Instagram of screenshots on my computer.<\/p>\n<\/div>\n<p>\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/1044022\/\">https:\/\/habr.com\/ru\/articles\/1044022\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Why Debian 9, PHP 7.0, and no frameworks. And how to set up HTTPS in 5 minutes.Foreword for those who haven&#8217;t read the first articleLast time, I told the story of how I wanted to make a couple of pages for SAMBA and NFS, but ended up with a NAS control panel of 20+ pages. I named the project Mini Bucket.Important: That version was a beta. Raw, with rough edges, but alive. Its goal was to demonstrate the concept. And people got interested. So, it needs to be polished.Now \u2013 version 3.6.2. A ton of problems have been fixed, security has been added, a separate domain, forum, and wiki have appeared. Today, I&#8217;ll walk you through the installation step-by-step with screenshots.But first \u2013 a quick summary of what has changed. Then \u2013 pure practice.What\u2019s Fixed in 3.6.2 (The Main Points)Security: Critical Holes ClosedIn the beta, worker files, cron scripts, temporary files, and logs were located in the web server zone. Technically, you could send a request to an executable file without authorization \u2013 no API key, no login\/password.Fixed: All critical files have been moved to\u00a0\/var\/www\/minib\/, outside the website&#8217;s folder. The Apache configuration has been revised. Temporary files and logs are now inaccessible from the outside.Logic and BugsThe Host Manager (key rotation) no longer overwrites the host SN when making changes \u2013 rotation works correctly.Disk partition creation has been fixed.Cron jobs can now be viewed on any servers in the cluster. Added the ability to create your own scripts and run them on a schedule.DatabasesPreviously, everything was stored in a single SQLite database. Under load, &#171;database is locked&#187; errors would appear.Solution: Split the databases into different files + added a query queue. No more conflicts.Project Organization: No Longer Just a Script, but an EcosystemInitially, the project lived on the subdomain\u00a0mini-b.itp-corp.ru. But as things progressed \u2013 I allocated a separate domain.And three important sections:Community \/ Forum\u00a0\u2013 Discuss bugs, features, share experiences.Wiki\u00a0\u2013 Because my vision for the panel might not be obvious to others. Populating it gradually.Donations\u00a0\u2013 If the project is useful and you want to say &#171;thank you&#187; with a deed.For those who already have the beta installed: update via the Update section inside mini-b.New installation \u2013 read on.Installing Mini Bucket 3.6.2 (Step-by-Step with Screenshots)I&#8217;ll answer the questions you&#8217;re about to ask right awayWhy Debian 9?Because I managed to install it on my Netgear Stora MS2000 with difficulty. And it&#8217;s not as resource-hungry as vanilla Ubuntu. The panel is optimized for old hardware \u2013 why would it need a modern distribution?Why PHP 7.0?That&#8217;s just how it turned out. Debian 9 uses it by default. And it works.Why no framework? Why not Colplit with a bunch of stuff?Because then it wouldn&#8217;t be Mini Bucket, but another heavy build. Frameworks are heavy. Our stack of PHP + JS + HTML is quite enough to accomplish all tasks.Why is everything in English?Not everything) Some Russian still appears in places. But honestly \u2013 the English-speaking market is larger. It&#8217;s the standard. Initially, the project was entirely in Russian \u2013 it was an eyesore.Multilingual support with language packs is planned. But with this scope, the priority is clearly not that.Now \u2013 the installation. Without further ado.I won&#8217;t show how to install Debian. I assume that&#8217;s a basic thing for my audience.I&#8217;ll be installing on a VM. You might have bare metal \u2013 the process is the same.1. System Preparation and Running the ScriptAfter installing the system, log into the console. Work as root.bashsu -Enter the root password.Install\u00a0wget\u00a0(though it&#8217;s usually there by default, just in case):bashapt install -y wgetDownload the pre-installation script:bashwget &#8212;no-check-certificate -O minib-install.sh &#171;https:\/\/update.mini-bucket.ru\/minib\/downloads\/install\/minib-install.sh&#187;Why\u00a0&#8212;no-check-certificate?Wget complains about the Let\u2019s Encrypt certificate. Skipping the check is normal for installation.Make the script executable:bashchmod +x minib-install.shRun it:bashbash minib-install.sh2. What the Installation Script Does (While Waiting)I&#8217;ll briefly explain:Installs all necessary packages for Mini Bucket to work: NFS, SMB, rsync, vsftpd, UFW, Apache, PHP 7.0, etc.Creates the required directories and configs for the services.Assigns permissions to some configs.Makes changes to\u00a0sudoers:Allows\u00a0www-data\u00a0to run\u00a0sudoDisables sudo notifications so parsing doesn&#8217;t break.Copies files to\u00a0\/var\/www, configures Apache, restarts services.Creates cron jobs.You can download the full script from our website and examine its contents.3. After Installation \u2013 First LoginThe script will output the URL, login, and password.Paste the URL into your browser. You&#8217;ll reach the login page.Login:\u00a0adminPassword:\u00a01234Yes, the password is super cryptographically strong. We&#8217;ll change it later.Click &#171;Login&#187; \u2013 you&#8217;ll land on the installation check page.Important:\u00a0Errors may appear in the &#171;System Services&#187; section (Rsync and Firewall-UFW), as well as in the &#171;Files and Configuration&#187; section (Administrator configuration). These errors are not critical \u2013 they can be safely ignored.The main thing is that all packages are installed. Scroll down, click Next.4. Setup WizardThe wizard starts. Accept the standard agreements.If at least one person in their life reads them \u2013 I&#8217;ll be happy. That means my efforts weren&#8217;t in vain.Next \u2013 checking read\/write permissions for configs and databases.Everything is fine \u2013 click Next.5. Hostname (Important Point)I will be using SSL. Therefore, the hostname is critical. You can set it via\u00a0\/etc\/hosts, but it&#8217;s easier to set it right away.I enter the FQDN hostname:\u00a0minib.localThis works.6. Key GenerationThe following will be created:SN (Serial Number \/ Host ID)\u00a0\u2013 used for one &#171;bucket&#187; to recognize another.API Key\u00a0\u2013 needed for frontend and backend interaction (both locally and with remote servers).Click &#171;Generate Security Credentials&#187;.7. Administrator AccountI leave the login as\u00a0admin. I don&#8217;t provide an email. I enter my own password.Click &#171;Create account&#187;.We see the coveted &#171;Launch MiniB&#187; button.Click on it.The test runs again. Click\u00a0Next\u00a0\u2013 we enter the control panel.Possible glitch:\u00a0Due to cache, metrics might not load. If the panel doesn&#8217;t respond for 5 seconds \u2013 just reload the page. We&#8217;ll fix this.Initial Setup: Enabling HTTPSWhy is SSL mandatory?Keys are transmitted in request headers. They don&#8217;t appear in the URL, but any Wireshark capturing packets will see your API key. So HTTPS is a necessity.8. Configure the Host ManagerGo to &#171;Host manager&#187;.On our host, find the three dots (\u22ee) \u2192 select &#171;Edit&#187;.In the settings window, change the IP address to our FQDN name (minib.local).This is necessary for the API to work correctly.Leave the protocol as HTTP for now (we&#8217;ll return after issuing the certificate).Click &#171;Save&#187;.9. Create a Self-Signed CertificateGo to &#171;Security&#187; \u2192 &#171;SSL Manager&#187;.In the top right corner, click &#171;Create&#187; \u2192 &#171;Self-Signed Certificate&#187;.A certificate creation window will open.If you have a purchased certificate or one from Let&#8217;s Encrypt \u2013 you can import it there as well.Fill in:Certificate Name\u00a0\u2013\u00a0MiniB_webDomain\/CN\u00a0\u2013\u00a0minib.local\u00a0(your FQDN)Valid Days\u00a0\u2013\u00a0365Key Size\u00a0\u2013\u00a02048 bits\u00a0(larger makes no sense)Signature Algorithm\u00a0\u2013 leave as defaultClick &#171;Create&#187;.10. Enable HTTPSGo to &#171;System&#187; \u2192 &#171;Mini-B Settings&#187;.We are interested in the &#171;Enable HTTPS&#187; toggle in the &#171;HTTPS \/ SSL Configuration&#187; block.Turn it on.New fields appear. Click &#171;Select&#187; to choose the certificate.In the window that opens, select the created\u00a0MiniB_web.After filling, click &#171;Apply &amp; test config&#187;.The settings are applied. You will see an error \u2013 this is normal.The error means the interface is now working over HTTPS. That&#8217;s by design.11. Final Step: DNS \/ hostsNow, you need your FQDN name to point to the server&#8217;s IP address.Options:Set it in your DNS server (if you have one)Set it in your routerOr in the\u00a0hosts\u00a0file on the computer you are connecting fromFor Windows:\u00a0C:\\Windows\\System32\\drivers\\etc\\hostsFor Linux\/Mac:\u00a0\/etc\/hostsAdd the line:text192.168.x.x   minib.localNow, in your browser, enter:texthttps:\/\/your-name:portThe browser will show a warning about an untrusted certificate \u2013 accept it.Log in. Go back to &#171;Host manager&#187; \u2192 &#171;Edit&#187; our host \u2192 switch the protocol to HTTPS.Click &#171;Save&#187;.12. Final Touch (Recommendation)It&#8217;s better to go into SSL Manager, download the created certificate, and install it into your system (into the root certificate authorities). Then the browser will stop complaining.Done. What&#8217;s Next?Mini Bucket 3.6.2 is installed, working over HTTPS. Now you can:Configure disks and RAIDCreate SMB\/NFS sharesConnect other servers via key rotationUse the file manager, cron, firewallIn future articles, I&#8217;ll show the step-by-step configuration of each module \u2013 with my own comments: why I do it this way and not another, what pitfalls to expect, how to avoid them.P.S. FeedbackThe project lives and grows thanks to your ideas and bug reports.Forum \/ Community\u00a0\u2013 for ideas and questions.Wiki\u00a0\u2013 helps if my vision doesn&#8217;t match yours.Donations\u00a0\u2013 support development.And remember: Mini Bucket is not another framework-based build. It&#8217;s a lightweight panel for old hardware, using pure PHP, JS, and HTML. And it works.Links:Project WebsiteForum \/ CommunityWikiP.S.\u00a0Screenshots might show different versions or names, but I tried to align everything. Otherwise, I already have a whole Instagram of screenshots on my computer.\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 https:\/\/habr.com\/ru\/articles\/1044022\/<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-482510","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/482510","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=482510"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/482510\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=482510"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=482510"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=482510"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}