{"id":287857,"date":"2018-08-16T14:18:02","date_gmt":"2018-08-16T10:18:02","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=287857"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=287857","title":{"rendered":"\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0437\u0430\u0449\u0438\u0449\u0451\u043d\u043d\u043e\u0433\u043e NAS"},"content":{"rendered":"\n<div data-io-article-url=\"https:\/\/habr.com\/post\/415779\/\" class=\"post__text post__text-html js-mediator-article\">\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/b93\/ed1\/af9\/b93ed1af987a1fda471d1080d6b804e5.jpg\"><\/p>\n<p>  <\/p>\n<p>\u0412 <a href=\"https:\/\/habr.com\/post\/359344\/\">\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435<\/a> \u0431\u044b\u043b\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b NAS.<br \/>  \u041d\u0430\u0441\u0442\u0430\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u0435\u0451 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c.<\/p>\n<p><a name=\"habracut\"><\/a>  <\/p>\n<h2 id=\"proverka\">\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430<\/h2>\n<p>  <\/p>\n<p>\u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c, \u043a\u0430\u043a \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u043f\u0443\u043b\u0430:<\/p>\n<p>  <\/p>\n<pre><code>zpool status -v<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u0443\u043b \u0438 \u0432\u0441\u0435 \u0434\u0438\u0441\u043a\u0438 \u0432 \u043d\u0451\u043c \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c ONLINE.<\/p>\n<p>  <\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u044f \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u044e, \u0447\u0442\u043e \u043d\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u044d\u0442\u0430\u043f\u0435 \u0432\u0441\u0451 \u0431\u044b\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u043f\u043e <a href=\"https:\/\/habr.com\/post\/351932\/\">\u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438<\/a>, \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043b\u0438\u0431\u043e \u0432\u044b \u0441\u0430\u043c\u0438 \u0445\u043e\u0440\u043e\u0448\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442\u0435, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0435.<\/p>\n<p>  <\/p>\n<h2 id=\"udobstva\">\u0423\u0434\u043e\u0431\u0441\u0442\u0432\u0430<\/h2>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0436\u0434\u0435 \u0432\u0441\u0435\u0433\u043e, \u0441\u0442\u043e\u0438\u0442 \u043f\u043e\u0437\u0430\u0431\u043e\u0442\u0438\u0442\u044c\u0441\u044f \u043e\u0431 \u0443\u0434\u043e\u0431\u043d\u043e\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438, \u0435\u0441\u043b\u0438 \u0432\u044b \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u0441 \u0441\u0430\u043c\u043e\u0433\u043e \u043d\u0430\u0447\u0430\u043b\u0430.<br \/>  \u041f\u043e\u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f:<\/p>\n<p>  <\/p>\n<ul>\n<li>SSH-\u0441\u0435\u0440\u0432\u0435\u0440: <code>apt-get install openssh-server<\/code>. \u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u0437\u043d\u0430\u0435\u0442\u0435, \u043a\u0430\u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c SSH, <del>\u0434\u0435\u043b\u0430\u0442\u044c NAS \u043d\u0430 Linux \u043f\u043e\u043a\u0430 \u0440\u0430\u043d\u043e<\/del> \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 <a href=\"https:\/\/habr.com\/company\/lodoss\/blog\/358800\/\">\u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435<\/a>, \u0437\u0430\u0442\u0435\u043c \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f <a href=\"https:\/\/wiki.debian.org\/SSH\">\u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u043c\u0430\u043d\u0443\u0430\u043b\u043e\u0432<\/a>.<\/li>\n<li><a href=\"https:\/\/wiki.archlinux.org\/index.php\/Tmux_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)\">tmux<\/a> \u0438\u043b\u0438 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/GNU_Screen\">screen<\/a>: <code>apt-get install tmux<\/code>. \u0427\u0442\u043e\u0431\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0441\u0435\u0441\u0441\u0438\u044e \u043f\u0440\u0438 \u0432\u0445\u043e\u0434\u0430\u0445 \u043f\u043e SSH \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u043a\u043e\u043d.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 SSH \u043d\u0430\u0434\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0437\u0430\u0445\u043e\u0434\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 SSH \u043f\u043e\u0434 root (\u0432\u0445\u043e\u0434 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d \u0438 \u043d\u0435 \u043d\u0430\u0434\u043e \u0435\u0433\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c):<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">zfs create rpool\/home\/user adduser user cp -a \/etc\/skel\/.[!.]* \/home\/user chown -R user:user \/home\/user<\/code><\/pre>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e\u0433\u043e \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u044d\u0442\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u044b\u0439 \u043c\u0438\u043d\u0438\u043c\u0443\u043c.<\/p>\n<p>  <\/p>\n<p>\u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u043f\u043e\u043a\u0430 \u043d\u0443\u0436\u043d\u043e \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u043c\u0438 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0443 \u0438 \u043c\u043e\u043d\u0438\u0442\u043e\u0440, \u0442.\u043a. \u0435\u0449\u0451 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u044f\u0434\u0440\u0430 \u0438 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0432\u0441\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438.<\/p>\n<p>  <\/p>\n<p>\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Virtual KVM, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/Intel_Management_Engine\">IME<\/a>. \u0422\u0430\u043c \u0435\u0441\u0442\u044c \u043a\u043e\u043d\u0441\u043e\u043b\u044c, \u043f\u0440\u0430\u0432\u0434\u0430 \u0432 \u043c\u043e\u0451\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u043d\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u0432 \u0432\u0438\u0434\u0435 Java \u0430\u043f\u043f\u043b\u0435\u0442\u0430, \u0447\u0442\u043e \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u043e.<\/p>\n<p>  <\/p>\n<h2 id=\"nastroyka\">\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430<\/h2>\n<p>  <\/p>\n<h3 id=\"podgotovka-kesha\">\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u043a\u044d\u0448\u0430<\/h3>\n<p>  <\/p>\n<p>\u041d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u044b \u043f\u043e\u043c\u043d\u0438\u0442\u0435, \u0432 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0439 \u043c\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0435\u0441\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 SSD \u043f\u043e\u0434 L2ARC, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043a\u0430 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f, \u043d\u043e \u0432\u0437\u044f\u0442 &#171;\u043d\u0430 \u0432\u044b\u0440\u043e\u0441\u0442&#187;.<\/p>\n<p>  <\/p>\n<p>\u041d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043d\u043e \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u044d\u0442\u043e\u0442 SSD \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 (\u0432 \u0441\u043b\u0443\u0447\u0430\u0435 Samsung EVO \u0432\u0441\u0451-\u0440\u0430\u0432\u043d\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u0441\u044f \u043d\u0443\u043b\u044f\u043c\u0438 \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f blkdiscard, \u043d\u043e \u043d\u0435 \u043d\u0430 \u0432\u0441\u0435\u0445 SSD \u0442\u0430\u043a):<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">dd if=\/dev\/urandom of=\/dev\/disk\/by-id\/ata-Samsung_SSD_850_EVO bs=4M &amp;&amp; blkdiscard \/dev\/disk\/by-id\/ata-Samsung_SSD_850_EVO<\/code><\/pre>\n<p>  <\/p>\n<h3 id=\"otklyuchenie-szhatiya-logov\">\u041e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0441\u0436\u0430\u0442\u0438\u044f \u043b\u043e\u0433\u043e\u0432<\/h3>\n<p>  <\/p>\n<p>\u041d\u0430 ZFS \u0438 \u0442\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u0436\u0430\u0442\u0438\u0435, \u043f\u043e\u0442\u043e\u043c\u0443 \u0441\u0436\u0430\u0442\u0438\u0435 \u043b\u043e\u0433\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 gzip \u0431\u0443\u0434\u0435\u0442 \u044f\u0432\u043d\u043e \u043b\u0438\u0448\u043d\u0438\u043c.<br \/>  \u0412\u044b\u043a\u043b\u044e\u0447\u0430\u044e:<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">for file in \/etc\/logrotate.d\/* ; do   if grep -Eq \"(^|[^#y])compress\" \"$file\" ; then     sed -i -r \"s\/(^|[^#y])(compress)\/\\1#\\2\/\" \"$file\"   fi done<\/code><\/pre>\n<p>  <\/p>\n<h3 id=\"obnovlenie-sistemy\">\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b<\/h3>\n<p>  <\/p>\n<p>\u0422\u0443\u0442 \u0432\u0441\u0451 \u043f\u0440\u043e\u0441\u0442\u043e:<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">apt-get dist-upgrade --yes reboot<\/code><\/pre>\n<p>  <\/p>\n<h3 id=\"sozdanie-snepshota-dlya-novogo-sostoyaniya\">\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u043d\u044d\u043f\u0448\u043e\u0442\u0430 \u0434\u043b\u044f \u043d\u043e\u0432\u043e\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f<\/h3>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u043e\u0435 \u0440\u0430\u0431\u043e\u0447\u0435\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435, \u043d\u0430\u0434\u043e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0435\u0440\u0432\u044b\u0439 \u0441\u043d\u044d\u043f\u0448\u043e\u0442:<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">zfs destroy rpool\/ROOT\/debian@install zfs snapshot rpool\/ROOT\/debian@install<\/code><\/pre>\n<p>  <\/p>\n<h2>\u041e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c<\/h2>\n<p>  <\/p>\n<h3 id=\"podgotovka-razdelov-dlya-slog\">\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0440\u0430\u0437\u0434\u0435\u043b\u043e\u0432 \u0434\u043b\u044f SLOG<\/h3>\n<p>  <\/p>\n<p>\u041f\u0435\u0440\u0432\u043e\u0435, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441 \u0446\u0435\u043b\u044c\u044e \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u044f \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 ZFS \u2014 \u044d\u0442\u043e \u0432\u044b\u043d\u0435\u0441\u0442\u0438 SLOG \u043d\u0430 SSD.<br \/>  \u041d\u0430\u043f\u043e\u043c\u043d\u044e, \u0447\u0442\u043e SLOG \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0434\u0443\u0431\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u0430 \u0434\u0432\u0443\u0445 SSD: \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u044b \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0430 LUKS-XTS \u043f\u043e\u0432\u0435\u0440\u0445 4-\u0433\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 SSD:<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">dd if=\/dev\/urandom of=\/etc\/keys\/slog.key bs=1 count=4096  cryptsetup --verbose --cipher \"aes-xts-plain64:sha512\" --key-size 512 --key-file \/etc\/keys\/slog.key luksFormat \/dev\/disk\/by-id\/ata-Samsung_SSD_850_PRO-part4  cryptsetup --verbose --cipher \"aes-xts-plain64:sha512\" --key-size 512 --key-file \/etc\/keys\/slog.key luksFormat \/dev\/disk\/by-id\/ata-Micron_1100-part4  echo \"slog0_crypt1 \/dev\/disk\/by-id\/ata-Samsung_SSD_850_PRO-part4 \/etc\/keys\/slog.key luks,discard\" &gt;&gt; \/etc\/crypttab  echo \"slog0_crypt2 \/dev\/disk\/by-id\/ata-Micron_1100-part4 \/etc\/keys\/slog.key luks,discard\" &gt;&gt; \/etc\/crypttab<\/code><\/pre>\n<p>  <\/p>\n<h3 id=\"podgotovka-razdelov-dlya-l2arc-i-podkachki\">\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0440\u0430\u0437\u0434\u0435\u043b\u043e\u0432 \u0434\u043b\u044f L2ARC \u0438 \u043f\u043e\u0434\u043a\u0430\u0447\u043a\u0438<\/h3>\n<p>  <\/p>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430\u0434\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0440\u0430\u0437\u0434\u0435\u043b\u044b \u043f\u043e\u0434 swap \u0438 l2arc:<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">sgdisk -n1:0:48G -t1:8200 -c1:part_swap -n2::196G -t2:8200 -c2:part_l2arc \/dev\/disk\/by-id\/ata-Samsung_SSD_850_EVO<\/code><\/pre>\n<p>  <\/p>\n<p>\u0420\u0430\u0437\u0434\u0435\u043b \u043f\u043e\u0434\u043a\u0430\u0447\u043a\u0438 \u0438 L2ARC \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u044b \u043d\u0430 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u043c \u043a\u043b\u044e\u0447\u0435, \u0442.\u043a. \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043e\u043d\u0438 \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f \u0438 \u0438\u0445 \u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0437\u0430\u043d\u043e\u0432\u043e.<br \/>  \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 crypttab \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0434\u043b\u044f \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044f\/\u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0430\u0437\u0434\u0435\u043b\u043e\u0432 \u0432 plain \u0440\u0435\u0436\u0438\u043c\u0435:<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">echo swap_crypt \/dev\/disk\/by-id\/ata-Samsung_SSD_850_EVO-part1 \/dev\/urandom swap,cipher=aes-xts-plain64:sha512,size=512 &gt;&gt; \/etc\/crypttab  echo l2arc_crypt \/dev\/disk\/by-id\/ata-Samsung_SSD_850_EVO-part2 \/dev\/urandom cipher=aes-xts-plain64:sha512,size=512 &gt;&gt; \/etc\/crypttab<\/code><\/pre>\n<p>  <\/p>\n<p>\u0417\u0430\u0442\u0435\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0434\u0435\u043c\u043e\u043d\u044b \u0438 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u043e\u0434\u043a\u0430\u0447\u043a\u0443:<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">echo 'vm.swappiness = 10' &gt;&gt; \/etc\/sysctl.conf sysctl vm.swappiness=10 systemctl daemon-reload systemctl start systemd-cryptsetup@swap_crypt.service echo \/dev\/mapper\/swap_crypt none swap sw,discard 0 0 &gt;&gt; \/etc\/fstab swapon -av<\/code><\/pre>\n<p>  <\/p>\n<p>\u0422.\u043a. \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u0434\u043a\u0430\u0447\u043a\u0438 \u043d\u0430 SSD \u043d\u0435 \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f, \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <code>swapiness<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e 60, \u043d\u0443\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0432 10.<\/p>\n<p>  <\/p>\n<p>L2ARC \u043d\u0430 \u0434\u0430\u043d\u043d\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u0435\u0449\u0451 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f, \u043d\u043e \u0440\u0430\u0437\u0434\u0435\u043b \u043f\u043e\u0434 \u043d\u0435\u0433\u043e \u0443\u0436\u0435 \u0433\u043e\u0442\u043e\u0432:<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">$ ls \/dev\/mapper\/ control  l2arc_crypt root_crypt1  root_crypt2  slog0_crypt1  slog0_crypt2  swap_crypt  tank0_crypt0  tank0_crypt1  tank0_crypt2  tank0_crypt3<\/code><\/pre>\n<p>  <\/p>\n<h3 id=\"puly-tankn\">\u041f\u0443\u043b\u044b tankN<\/h3>\n<p>  <\/p>\n<p>\u0411\u0443\u0434\u0435\u0442 \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0443\u043b\u0430 <code>tank0<\/code>, <code>tank1<\/code> \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u043f\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0438.<\/p>\n<p>  <\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u043d\u0435 \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c\u0441\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435\u043c \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0445 \u0440\u0430\u0437\u0434\u0435\u043b\u043e\u0432 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0438 \u043d\u0435 \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043e\u0448\u0438\u0431\u043e\u043a, \u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043b <a href=\"https:\/\/github.com\/artiomn\/NAS\/blob\/master\/scripts\/create_crypt_pool.sh\">\u0441\u043a\u0440\u0438\u043f\u0442<\/a> \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0440\u0430\u0437\u0434\u0435\u043b\u043e\u0432 \u043f\u043e\u0434 \u043f\u0443\u043b\u044b:<\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">create_crypt_pool.sh<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">#!\/bin\/bash  KEY_SIZE=512 POOL_NAME=\"$1\" KEY_FILE=\"\/etc\/keys\/${POOL_NAME}.key\" LUKS_PARAMS=\"--verbose --cipher aes-xts-plain64:sha${KEY_SIZE} --key-size $KEY_SIZE\"  [ -z \"$1\" ] &amp;&amp; { echo \"Error: pool name empty!\" ; exit 1; }  shift  [ -z \"$*\" ] &amp;&amp; { echo \"Error: devices list empty!\" ; exit 1; }  echo \"Devices: $*\" read -p \"Is it ok? \" a  [ \"$a\" != \"y\" ] &amp;&amp; { echo \"Bye\"; exit 1; }  dd if=\/dev\/urandom of=$KEY_FILE bs=1 count=4096  phrase=\"?\"  read -s -p \"Password: \" phrase echo read -s -p \"Repeat password: \" phrase1 echo  [ \"$phrase\" != \"$phrase1\" ] &amp;&amp; { echo \"Error: passwords is not equal!\" ; exit 1; }  echo \"### $POOL_NAME\" &gt;&gt; \/etc\/crypttab  index=0  for i in $*; do   echo \"$phrase\"|cryptsetup $LUKS_PARAMS luksFormat \"$i\" || exit 1   echo \"$phrase\"|cryptsetup luksAddKey \"$i\" $KEY_FILE || exit 1   dev_name=\"${POOL_NAME}_crypt${index}\"   echo \"${dev_name} $i $KEY_FILE luks\" &gt;&gt; \/etc\/crypttab   cryptsetup luksOpen --key-file $KEY_FILE \"$i\" \"$dev_name\" || exit 1   index=$((index + 1)) done  echo \"###\" &gt;&gt; \/etc\/crypttab  phrase=\"=====================================================\" phrase1=\"=================================================\" unset phrase unset phrase1<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0434\u0430\u043d\u043d\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442, \u043d\u0430\u0434\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0443\u043b \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445:<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">.\/create_crypt_pool.sh  zpool create -o ashift=12 -O atime=off -O compression=lz4 -O normalization=formD  tank0 raidz1 \/dev\/disk\/by-id\/dm-name-tank0_crypt*<\/code><\/pre>\n<p>  <\/p>\n<p>\u0417\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u044f \u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0435 <code>ashift=12<\/code> \u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u0432 \u043c\u043e\u0438\u0445 <a href=\"https:\/\/habr.com\/post\/358914\/\">\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445<\/a> <a href=\"https:\/\/habr.com\/post\/351932\/\">\u0441\u0442\u0430\u0442\u044c\u044f\u0445<\/a> \u0438 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445 \u043a \u043d\u0438\u043c.<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u0443\u043b\u0430, \u044f \u0432\u044b\u043d\u043e\u0448\u0443 \u0435\u0433\u043e \u0436\u0443\u0440\u043d\u0430\u043b \u043d\u0430 SSD:<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">zpool add tank0 log mirror \/dev\/disk\/by-id\/dm-name-slog0_crypt1 \/dev\/disk\/by-id\/dm-name-slog0_crypt2<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c, \u043f\u0440\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u043c \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u043c OMV, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u0443\u043b\u044b \u0447\u0435\u0440\u0435\u0437 GUI:<\/p>\n<p>  <\/p>\n<p><a href=\"https:\/\/habrastorage.org\/webt\/bu\/bc\/qj\/bubcqjn_frfc3plifb9ehgzxco0.png\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/bu\/bc\/qj\/bubcqjn_frfc3plifb9ehgzxco0.png\" alt=\"\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 ZFS \u043f\u0430\u043b \u0432 OMV WEB GUI\"><\/a><\/p>\n<p>  <\/p>\n<h3 id=\"vklyuchenie-importa-pulov-i-avtomontirovaniya-tomov-pri-zagruzke\">\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0438\u043c\u043f\u043e\u0440\u0442\u0430 \u043f\u0443\u043b\u043e\u0432 \u0438 \u0430\u0432\u0442\u043e\u043c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u043e\u043c\u043e\u0432 \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435<\/h3>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0443\u043b\u043e\u0432, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b:<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">rm \/etc\/zfs\/zpool.cache systemctl enable zfs-import-scan.service systemctl enable zfs-mount.service systemctl enable zfs-import-cache.service<\/code><\/pre>\n<p>  <\/p>\n<p>\u041d\u0430 \u0434\u0430\u043d\u043d\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u0437\u0430\u043a\u043e\u043d\u0447\u0435\u043d\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0434\u0438\u0441\u043a\u043e\u0432\u043e\u0439 \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u044b.<\/p>\n<p>  <\/p>\n<h2>\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430<\/h2>\n<p>  <\/p>\n<p>\u041f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c \u043d\u0430\u0434\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c OMV, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u043a\u043e\u043d\u0435\u0446 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a\u0430\u043a\u0443\u044e-\u0442\u043e \u043e\u0441\u043d\u043e\u0432\u0443 \u0434\u043b\u044f NAS.<\/p>\n<p>  <\/p>\n<h3 id=\"ustanovka-omv\">\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 OMV<\/h3>\n<p>  <\/p>\n<p>OMV \u0431\u0443\u0434\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0432 \u0432\u0438\u0434\u0435 deb-\u043f\u0430\u043a\u0435\u0442\u0430. \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f <a href=\"https:\/\/openmediavault.readthedocs.io\/en\/latest\/installation\/on_debian.html\">\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0435\u0439<\/a>.<\/p>\n<p>  <\/p>\n<p>\u0421\u043a\u0440\u0438\u043f\u0442 <code>add_repo.sh<\/code> \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 OMV Arrakis \u0432<code>\/etc\/apt\/ sources.list.d<\/code>, \u0447\u0442\u043e\u0431\u044b \u043f\u0430\u043a\u0435\u0442\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0443\u0432\u0438\u0434\u0435\u043b\u0430 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439.<\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">add_repo.sh<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">cat &lt;&lt;EOF &gt;&gt; \/etc\/apt\/sources.list.d\/openmediavault.list deb http:\/\/packages.openmediavault.org\/public arrakis main # deb http:\/\/downloads.sourceforge.net\/project\/openmediavault\/packages arrakis main ## Uncomment the following line to add software from the proposed repository. # deb http:\/\/packages.openmediavault.org\/public arrakis-proposed main # deb http:\/\/downloads.sourceforge.net\/project\/openmediavault\/packages arrakis-proposed main ## This software is not part of OpenMediaVault, but is offered by third-party ## developers as a service to OpenMediaVault users. deb http:\/\/packages.openmediavault.org\/public arrakis partner # deb http:\/\/downloads.sourceforge.net\/project\/openmediavault\/packages arrakis partner EOF<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u043e\u043c, \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 partner \u0432\u043a\u043b\u044e\u0447\u0435\u043d.<\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0438 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u0439 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430\u0434\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0435 \u043d\u0438\u0436\u0435.<\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u043e\u043c\u0430\u043d\u0434\u044b \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 OMV.<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">.\/add_repo.sh export LANG=C export DEBIAN_FRONTEND=noninteractive export APT_LISTCHANGES_FRONTEND=none apt-get update apt-get --allow-unauthenticated install openmediavault-keyring apt-get update apt-get --yes --auto-remove --show-upgraded \\     --allow-downgrades --allow-change-held-packages \\     --no-install-recommends \\     --option Dpkg::Options::=\"--force-confdef\" \\     --option DPkg::Options::=\"--force-confold\" \\     install postfix openmediavault # Initialize the system and database. omv-initsystem<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p>OMV \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d. \u041e\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0441\u0432\u043e\u0451 \u044f\u0434\u0440\u043e, \u0438 \u043f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430.<\/p>\n<p>  <\/p>\n<p>\u041f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0432\u0448\u0438\u0441\u044c, \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 OpenMediaVault, \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043d\u0430 \u043f\u043e\u0440\u0442\u0443 80 (\u0437\u0430\u0439\u0434\u0438\u0442\u0435 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u043d\u0430 NAS \u043f\u043e IP-\u0430\u0434\u0440\u0435\u0441\u0443):<\/p>\n<p>  <\/p>\n<p><a href=\"https:\/\/habrastorage.org\/webt\/eo\/sf\/ra\/eosfraeilpg2dn770ef5bvr-ple.png\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/eo\/sf\/ra\/eosfraeilpg2dn770ef5bvr-ple.png\"><\/a><\/p>\n<p>  <\/p>\n<p>\u041b\u043e\u0433\u0438\u043d\/\u043f\u0430\u0440\u043e\u043b\u044c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e: <code>admin\/openmediavault<\/code>.<\/p>\n<p>  <\/p>\n<h3 id=\"nastroyka-omv\">\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 OMV<\/h3>\n<p>  <\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 WEB-GUI.<\/p>\n<p>  <\/p>\n<h4 id=\"ustanovka-bezopasnogo-soedineniya\">\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0433\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f<\/h4>\n<p>  <\/p>\n<p>\u0421\u0435\u0439\u0447\u0430\u0441 \u043d\u0430\u0434\u043e \u0441\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u0430\u0440\u043e\u043b\u044c WEB-\u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u0438 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0434\u043b\u044f NAS, \u0447\u0442\u043e\u0431\u044b \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043f\u043e HTTPS.<\/p>\n<p>  <\/p>\n<p>\u0421\u043c\u0435\u043d\u0430 \u043f\u0430\u0440\u043e\u043b\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 \u0432\u043a\u043b\u0430\u0434\u043a\u0435 <em>&#171;\u0421\u0438\u0441\u0442\u0435\u043c\u0430-&gt;\u041e\u0431\u0449\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438-&gt;\u041f\u0430\u0440\u043e\u043b\u044c Web \u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430&#187;<\/em>.<br \/>  \u0414\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430 \u043d\u0430 \u0432\u043a\u043b\u0430\u0434\u043a\u0435 <em>&#171;\u0421\u0438\u0441\u0442\u0435\u043c\u0430-&gt;\u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b-&gt;SSL&#187;<\/em> \u043d\u0430\u0434\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c <em>&#171;\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c-&gt;\u0421\u043e\u0437\u0434\u0430\u0442\u044c&#187;<\/em>.<\/p>\n<p>  <\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0431\u0443\u0434\u0435\u0442 \u0432\u0438\u0434\u0435\u043d \u043d\u0430 \u0442\u043e\u0439 \u0436\u0435 \u0432\u043a\u043b\u0430\u0434\u043a\u0435:<\/p>\n<p>  <\/p>\n<p><a href=\"https:\/\/habrastorage.org\/webt\/ld\/6j\/_m\/ld6j_mgp4tx6auirzlkfnwium2c.png\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ld\/6j\/_m\/ld6j_mgp4tx6auirzlkfnwium2c.png\" alt=\"\u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\"><\/a><\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430, \u043d\u0430 \u0432\u043a\u043b\u0430\u0434\u043a\u0435 <em>&#171;\u0421\u0438\u0441\u0442\u0435\u043c\u0430-&gt;\u041e\u0431\u0449\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438&#187;<\/em> \u043d\u0430\u0434\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0444\u043b\u0430\u0436\u043e\u043a <em>&#171;\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c SSL\/TLS&#187;<\/em>.<\/p>\n<p>  <\/p>\n<p>\u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438. \u0412 \u043e\u043a\u043e\u043d\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0435 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a OMV \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442.<\/p>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0434\u043e \u043f\u0435\u0440\u0435\u043b\u043e\u0433\u0438\u043d\u0438\u0442\u044c\u0441\u044f \u0432 OMV, \u043d\u0430 \u043f\u043e\u0440\u0442 443 \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u0438\u043f\u0438\u0441\u0430\u0432 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u043f\u0440\u0435\u0444\u0438\u043a\u0441 <code>https:\/\/<\/code> \u043f\u0435\u0440\u0435\u0434 IP.<\/p>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432\u043e\u0439\u0442\u0438 \u0443\u0434\u0430\u043b\u043e\u0441\u044c, \u043d\u0430 \u0432\u043a\u043b\u0430\u0434\u043a\u0435 <em>&#171;\u0421\u0438\u0441\u0442\u0435\u043c\u0430-&gt;\u041e\u0431\u0449\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438&#187;<\/em> \u043d\u0430\u0434\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0444\u043b\u0430\u0436\u043e\u043a &#171;\u041f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e SSL\/TLS&#187;.<\/p>\n<p>  <\/p>\n<p><strong>\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u0435 \u043f\u043e\u0440\u0442\u044b 80 \u0438 443 \u043d\u0430 10080 \u0438 10443<\/strong>.<br \/>  \u0418 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0432\u043e\u0439\u0442\u0438 \u043f\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443 \u0430\u0434\u0440\u0435\u0441\u0443: <code>https:\/\/IP_NAS:10443<\/code>.<br \/>  \u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u043e\u0440\u0442\u043e\u0432 \u0432\u0430\u0436\u043d\u043e, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043f\u043e\u0440\u0442\u044b 80 \u0438 443 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c docker \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0441 nginx-reverse-proxy.<\/p>\n<p>  <\/p>\n<h3 id=\"pervichnye-nastroyki\">\u041f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438<\/h3>\n<p>  <\/p>\n<p>\u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043d\u0430\u0434\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u041d\u0430 \u0432\u043a\u043b\u0430\u0434\u043a\u0435 <em>&#171;\u0421\u0438\u0441\u0442\u0435\u043c\u0430-&gt;\u0414\u0430\u0442\u0430 \u0438 \u0412\u0440\u0435\u043c\u044f&#187;<\/em> \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0447\u0430\u0441\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u044f\u0441\u0430 \u0438 \u0437\u0430\u0434\u0430\u0439\u0442\u0435 \u0441\u0435\u0440\u0432\u0435\u0440 NTP.<\/li>\n<li>\u041d\u0430 \u0432\u043a\u043b\u0430\u0434\u043a\u0435 <em>&#171;\u0421\u0438\u0441\u0442\u0435\u043c\u0430-&gt;\u041c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433&#187;<\/em> \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u0441\u0431\u043e\u0440 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438.<\/li>\n<li>\u041d\u0430 \u0432\u043a\u043b\u0430\u0434\u043a\u0435 <em>&#171;\u0421\u0438\u0441\u0442\u0435\u043c\u0430-&gt;\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u044d\u043d\u0435\u0440\u0433\u043e\u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435\u043c&#187;<\/em> \u0432\u0438\u0434\u0438\u043c\u043e \u0441\u0442\u043e\u0438\u0442 \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c &#171;\u041c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433&#187;, \u0447\u0442\u043e\u0431\u044b OMV \u043d\u0435 \u043f\u044b\u0442\u0430\u043b\u0441\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0432\u0435\u043d\u0442\u0438\u043b\u044f\u0442\u043e\u0440\u0430\u043c\u0438.<\/li>\n<\/ul>\n<p>  <\/p>\n<h3 id=\"set\">\u0421\u0435\u0442\u044c<\/h3>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432\u0442\u043e\u0440\u043e\u0439 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 NAS \u0435\u0449\u0451 \u043d\u0435 \u0431\u044b\u043b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u0435\u0433\u043e \u043a \u0440\u043e\u0443\u0442\u0435\u0440\u0443.<\/p>\n<p>  <\/p>\n<p>\u0417\u0430\u0442\u0435\u043c:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u041d\u0430 \u0432\u043a\u043b\u0430\u0434\u043a\u0435 <em>&#171;\u0421\u0438\u0441\u0442\u0435\u043c\u0430-&gt;\u0421\u0435\u0442\u044c&#187;<\/em> \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0438\u043c\u044f \u0445\u043e\u0441\u0442\u0430 \u0432 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 &#171;nas&#187; (\u0438\u043b\u0438 \u0442\u043e, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0430\u043c \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f).<\/li>\n<li>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u0442\u0435 \u0431\u043e\u043d\u0434\u0438\u043d\u0433 \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432, \u043a\u0430\u043a \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u043d\u0430 \u0440\u0438\u0441\u0443\u043d\u043a\u0435 \u043d\u0438\u0436\u0435: <em>&#171;\u0421\u0438\u0441\u0442\u0435\u043c\u0430-&gt;\u0421\u0435\u0442\u044c-&gt;\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b-&gt;\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c-&gt;Bond&#187;<\/em>.<\/li>\n<li>\u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u043d\u0443\u0436\u043d\u044b\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0444\u0430\u0439\u0440\u0432\u043e\u043b\u043b\u0430 \u043d\u0430 \u0432\u043a\u043b\u0430\u0434\u043a\u0435 <em>&#171;\u0421\u0438\u0441\u0442\u0435\u043c\u0430-&gt;\u0421\u0435\u0442\u044c-&gt;\u0411\u0440\u0430\u043d\u0434\u043c\u0430\u0443\u044d\u0440&#187;<\/em>. \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043d\u0430 \u043f\u043e\u0440\u0442\u044b 10443, 10080, 443, 80, 22 \u0434\u043b\u044f SSH \u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f\/\u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 ICMP.<\/li>\n<\/ul>\n<p>  <\/p>\n<p><a href=\"https:\/\/habrastorage.org\/webt\/rb\/fi\/ab\/rbfiabiimceoohildwosfu_egju.png\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/rb\/fi\/ab\/rbfiabiimceoohildwosfu_egju.png\" alt=\"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0431\u043e\u043d\u0434\u0438\u043d\u0433\u0430\"><\/a><\/p>\n<p>  <\/p>\n<p>\u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435, \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u043e\u044f\u0432\u0438\u0442\u044c\u0441\u044f \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b \u0432 \u0431\u043e\u043d\u0434\u0438\u043d\u0433\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u043e\u0443\u0442\u0435\u0440 \u0431\u0443\u0434\u0435\u0442 \u0432\u0438\u0434\u0435\u0442\u044c, \u043a\u0430\u043a \u043e\u0434\u0438\u043d \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0438 \u043f\u0440\u0438\u0441\u0432\u043e\u0438\u0442 \u0435\u043c\u0443 \u043e\u0434\u0438\u043d IP \u0430\u0434\u0440\u0435\u0441:<\/p>\n<p>  <\/p>\n<p><a href=\"https:\/\/habrastorage.org\/webt\/ag\/wr\/y8\/agwry8ynozq7dhgov16pzzwmrs0.png\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ag\/wr\/y8\/agwry8ynozq7dhgov16pzzwmrs0.png\" alt=\"\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b \u0432 \u0431\u043e\u043d\u0434\u0438\u043d\u0433\u0435\"><\/a><\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0438 \u0436\u0435\u043b\u0430\u043d\u0438\u0438, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c SSH \u0438\u0437 WEB GUI:<\/p>\n<p>  <\/p>\n<p><a href=\"https:\/\/habrastorage.org\/webt\/yk\/oa\/i4\/ykoai4l9risd46whpuutbnyi1um.png\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/yk\/oa\/i4\/ykoai4l9risd46whpuutbnyi1um.png\" alt=\"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 SSH\"><\/a><\/p>\n<p>  <\/p>\n<h3 id=\"repozitorii-i-moduli\">\u0420\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u0438 \u043c\u043e\u0434\u0443\u043b\u0438<\/h3>\n<p>  <\/p>\n<p>\u041d\u0430 \u0432\u043a\u043b\u0430\u0434\u043a\u0435 <em>&#171;\u0421\u0438\u0441\u0442\u0435\u043c\u0430-&gt;\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f\u043c\u0438-&gt;\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438&#187;<\/em> \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435 <em>&#171;\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e\u043c&#187;<\/em>.<\/p>\n<p>  <\/p>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c <a href=\"http:\/\/omv-extras.org\/\">\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 OMV extras<\/a>.<br \/>  \u042d\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0432 \u043f\u043b\u0430\u0433\u0438\u043d, \u043b\u0438\u0431\u043e \u043f\u0430\u043a\u0435\u0442, \u043a\u0430\u043a \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u043d\u0430 <a href=\"https:\/\/forum.openmediavault.org\/index.php\/Thread\/5549-OMV-Extras-org-Plugin\/\">\u0444\u043e\u0440\u0443\u043c\u0435<\/a>.<\/p>\n<p>  <\/p>\n<p>\u041d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 <em>&#171;\u0421\u0438\u0441\u0442\u0435\u043c\u0430-&gt;\u041f\u043b\u0430\u0433\u0438\u043d\u044b&#187;<\/em> \u043d\u0430\u0434\u043e \u043d\u0430\u0439\u0442\u0438 \u043f\u043b\u0430\u0433\u0438\u043d &#171;openmediavault-omvextrasorg&#187; \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0435\u0433\u043e.<\/p>\n<p>  <\/p>\n<p>\u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435, \u0432 \u043c\u0435\u043d\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u043e\u043a &#171;OMV-Extras&#187; (\u0435\u0433\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0432\u0438\u0434\u0435\u0442\u044c \u043d\u0430 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0430\u0445).<\/p>\n<p>  <\/p>\n<p>\u0417\u0430\u0439\u0434\u0438\u0442\u0435 \u0442\u0443\u0434\u0430 \u0438 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438:<\/p>\n<p>  <\/p>\n<ul>\n<li>OMV-Extras.org. \u0421\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u043c\u043d\u043e\u0433\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432.<\/li>\n<li>OMV-Extras.org Testing. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0432 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u043c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438.<\/li>\n<li>Docker CE. \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, Docker.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041d\u0430 \u0432\u043a\u043b\u0430\u0434\u043a\u0435 <em>&#171;\u0421\u0438\u0441\u0442\u0435\u043c\u0430-&gt;OMV Extras-&gt;\u042f\u0434\u0440\u043e&#187;<\/em> \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u043e\u0435 \u0432\u0430\u043c \u044f\u0434\u0440\u043e, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u044f\u0434\u0440\u043e \u043e\u0442 Proxmox (\u0441\u0430\u043c \u044f \u0435\u0433\u043e \u043d\u0435 \u0441\u0442\u0430\u0432\u0438\u043b, \u0442.\u043a. \u043c\u043d\u0435 \u043f\u043e\u043a\u0430 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e, \u043f\u043e\u0442\u043e\u043c\u0443 \u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e):<\/p>\n<p>  <\/p>\n<p><a href=\"https:\/\/habrastorage.org\/webt\/dq\/se\/jq\/dqsejqlsyn0x6wdbyfeb2kvlwmc.png\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/dq\/se\/jq\/dqsejqlsyn0x6wdbyfeb2kvlwmc.png\"><\/a><\/p>\n<p>  <\/p>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b (<strong>\u0436\u0438\u0440\u043d\u044b\u043c<\/strong> \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u044b \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435, <em>\u043a\u0443\u0440\u0441\u0438\u0432\u043e\u043c<\/em> \u2014 \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u043b):<\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0421\u043f\u0438\u0441\u043e\u043a \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432.<\/b><\/p>\n<div class=\"spoiler_text\">\n<ul>\n<li>openmediavault-apttool. \u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 GUI \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043f\u0430\u043a\u0435\u0442\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 <em>&#171;\u0421\u0435\u0440\u0432\u0438\u0441\u044b-&gt;Apttool&#187;<\/em>.<\/li>\n<li>openmediavault-anacron. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b \u0438\u0437 GUI \u0441 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u043c \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u043e\u043c. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 <em>&#171;\u0421\u0438\u0441\u0442\u0435\u043c\u0430-&gt;Anacron&#187;<\/em>.<\/li>\n<li>openmediavault-backup. \u041e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0435 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0432 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 <em>&#171;\u0421\u0438\u0441\u0442\u0435\u043c\u0430-&gt;\u0420\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0435 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435&#187;<\/em>.<\/li>\n<li>openmediavault-diskstats. \u041d\u0443\u0436\u0435\u043d \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u0430 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438 \u043f\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0434\u0438\u0441\u043a\u043e\u0432.<\/li>\n<li><em>openmediavault-dnsmasq<\/em>. \u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u0434\u043d\u044f\u0442\u044c \u043d\u0430 NAS \u0441\u0435\u0440\u0432\u0435\u0440 DNS \u0438 DHCP. \u0422.\u043a., \u044f \u0434\u0435\u043b\u0430\u044e \u044d\u0442\u043e \u043d\u0430 \u0440\u043e\u0443\u0442\u0435\u0440\u0435, \u043c\u043d\u0435 \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f.<\/li>\n<li><strong>openmediavault-docker-gui<\/strong>. \u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f Docker \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 <em>&#171;\u0421\u0435\u0440\u0432\u0438\u0441\u044b-&gt;Docker&#187;<\/em>.<\/li>\n<li><strong>openmediavault-ldap<\/strong>. \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0447\u0435\u0440\u0435\u0437 LDAP. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 <em>&#171;\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430-&gt;\u0421\u043b\u0443\u0436\u0431\u0430 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432&#187;<\/em>.<\/li>\n<li><em>openmediavault-letsencrypt<\/em>. \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 Let&#8217;s Encrypt \u0438\u0437 GUI. \u041d\u0435 \u043d\u0443\u0436\u043d\u0430, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043d\u0438\u0435 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 nginx-reverse-proxy.<\/li>\n<li><strong>openmediavault-luksencryption<\/strong>. \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044f LUKS. \u041d\u0443\u0436\u0435\u043d, \u0447\u0442\u043e\u0431\u044b \u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435 OMV \u0431\u044b\u043b\u0438 \u0432\u0438\u0434\u043d\u044b \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0434\u0438\u0441\u043a\u0438. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 <em>&#171;\u0425\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435-&gt;\u0428\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u0435&#187;<\/em>.<\/li>\n<li><strong>openmediavault-nut<\/strong>. \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0418\u0411\u041f. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 <em>&#171;\u0421\u0435\u0440\u0432\u0438\u0441\u044b-&gt;\u0418\u0411\u041f&#187;<\/em>.<\/li>\n<li><strong>openmediavault-omvextrasorg<\/strong>. OMV Extras \u0443\u0436\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d.<\/li>\n<li>openmediavault-resetperms. \u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0435\u0440\u0435\u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u043f\u0440\u0430\u0432\u0430 \u0438 \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0442\u044c \u0441\u043f\u0438\u0441\u043a\u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043d\u0430 \u043e\u0431\u0449\u0438\u0445 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430\u0445. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 <em>&#171;\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430-&gt;\u041e\u0431\u0449\u0438\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438-&gt;Reset Permissions&#187;<\/em>.<\/li>\n<li>openmediavault-route. \u041f\u043e\u043b\u0435\u0437\u043d\u044b\u0439 \u043f\u043b\u0430\u0433\u0438\u043d \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0435\u0439. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 <em>&#171;\u0421\u0438\u0441\u0442\u0435\u043c\u0430-&gt;\u0421\u0435\u0442\u044c-&gt;\u0421\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442&#187;<\/em>.<\/li>\n<li>openmediavault-symlinks. \u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u0441\u044b\u043b\u043a\u0438. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 <em>&#171;\u0421\u0435\u0440\u0432\u0438\u0441\u044b-&gt;Symlinks&#187;<\/em>.<\/li>\n<li>openmediavault-unionfilesystems. \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 UnionFS. \u041c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c, \u0445\u043e\u0442\u044f \u0434\u043e\u043a\u0435\u0440 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 ZFS \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0431\u044d\u043a\u044d\u043d\u0434\u0430. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 <em>&#171;\u0425\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435-&gt;Union Filesystems&#187;<\/em>.<\/li>\n<li><em>openmediavault-virtualbox<\/em>. \u041c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d \u0434\u043b\u044f \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043d\u0438\u044f \u0432 GUI \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043c\u0430\u0448\u0438\u043d\u0430\u043c\u0438.<\/li>\n<li><strong>openmediavault-zfs<\/strong>. \u041f\u043b\u0430\u0433\u0438\u043d \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 ZFS \u0432 OpenMediaVault. \u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 <em>&#171;\u0425\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435-&gt;ZFS&#187;<\/em>.<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<p>  <\/p>\n<h3 id=\"diski\">\u0414\u0438\u0441\u043a\u0438<\/h3>\n<p>  <\/p>\n<p>\u0412\u0441\u0435 \u0434\u0438\u0441\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0435\u0441\u0442\u044c \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435, \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0432\u0438\u0434\u043d\u044b OMV. \u0423\u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u044c\u0442\u0435\u0441\u044c \u0432 \u044d\u0442\u043e\u043c, \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0432 \u043d\u0430 \u0432\u043a\u043b\u0430\u0434\u043a\u0435 <em>&#171;\u0425\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435-&gt;\u0414\u0438\u0441\u043a\u0438&#187;<\/em>. \u0415\u0441\u043b\u0438 \u043d\u0435 \u0432\u0441\u0435 \u0434\u0438\u0441\u043a\u0438 \u0432\u0438\u0434\u043d\u044b, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435.<\/p>\n<p>  <\/p>\n<p><a href=\"https:\/\/habrastorage.org\/webt\/ju\/i3\/rs\/jui3rsmgmatghluwuk0rknsqfrq.png\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ju\/i3\/rs\/jui3rsmgmatghluwuk0rknsqfrq.png\" alt=\"\u0414\u0438\u0441\u043a\u0438 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435\"><\/a><\/p>\n<p>  <\/p>\n<p>\u0422\u0430\u043c \u0436\u0435, \u043d\u0430 \u0432\u0441\u0435\u0445 HDD \u043d\u0430\u0434\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 (\u043a\u043b\u0438\u043a\u043d\u0443\u0432 \u043d\u0430 \u0434\u0438\u0441\u043a\u0435 \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430 \u0438 \u043d\u0430\u0436\u0430\u0432 \u043a\u043d\u043e\u043f\u043a\u0443 &#171;\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c&#187;).<\/p>\n<p>  <\/p>\n<p>\u0423\u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u044c\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0432\u0438\u0434\u043d\u044b \u0432\u0441\u0435 \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u044b \u043d\u0430 \u0432\u043a\u043b\u0430\u0434\u043a\u0435 <em>&#171;\u0425\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435-&gt;\u0428\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u0435&#187;<\/em>:<\/p>\n<p>  <\/p>\n<p><a href=\"https:\/\/habrastorage.org\/webt\/dy\/nw\/kv\/dynwkvuhbnglzeqe3sin_vqda7i.png\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/dy\/nw\/kv\/dynwkvuhbnglzeqe3sin_vqda7i.png\" alt=\"\u0428\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u044b\"><\/a><\/p>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0440\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c S.M.A.R.T., \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439, \u043a\u0430\u043a \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u044f \u043d\u0430\u0434\u0451\u0436\u043d\u043e\u0441\u0442\u0438:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u041f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u043d\u0430 \u0432\u043a\u043b\u0430\u0434\u043a\u0443 <em>&#171;\u0425\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435-&gt;S.M.A.R.T-&gt;\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438&#187;<\/em>. \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u0435 SMART.<\/li>\n<li>\u0422\u0430\u043c \u0436\u0435 \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u043d\u044b\u0445 \u0443\u0440\u043e\u0432\u043d\u0435\u0439 \u0434\u0438\u0441\u043a\u043e\u0432 (\u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439, \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e 60 C, \u0430 <a href=\"https:\/\/www.backblaze.com\/blog\/hard-drive-temperature-does-it-matter\/\">\u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c \u0434\u0438\u0441\u043a\u0430<\/a> 15-45 C).<\/li>\n<li>\u041f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u043d\u0430 \u0432\u043a\u043b\u0430\u0434\u043a\u0443 <em>&#171;\u0425\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435-&gt;S.M.A.R.T-&gt;\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430&#187;<\/em>. \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0434\u0438\u0441\u043a\u0430.<br \/>  <a href=\"https:\/\/habrastorage.org\/webt\/83\/r-\/dc\/83r-dcwtrhth5icaketuw1zlis8.png\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/83\/r-\/dc\/83r-dcwtrhth5icaketuw1zlis8.png\"><\/a><\/li>\n<li>\u041f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u043d\u0430 \u0432\u043a\u043b\u0430\u0434\u043a\u0443 <em>&#171;\u0425\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435-&gt;S.M.A.R.T-&gt;\u0417\u0430\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0442\u0435\u0441\u0442\u044b&#187;<\/em>. \u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0434\u0438\u0441\u043a\u0430 \u043a\u043e\u0440\u043e\u0442\u043a\u0443\u044e \u0441\u0430\u043c\u043e\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0440\u0430\u0437 \u0432 \u0441\u0443\u0442\u043a\u0438 \u0438 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0441\u0430\u043c\u043e\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0440\u0430\u0437 \u0432 \u043c\u0435\u0441\u044f\u0446. \u041f\u0440\u0438\u0447\u0451\u043c \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0438\u043e\u0434\u044b \u0441\u0430\u043c\u043e\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043d\u0435 \u043f\u0435\u0440\u0435\u0441\u0435\u043a\u0430\u043b\u0438\u0441\u044c.<br \/>  <a href=\"https:\/\/habrastorage.org\/webt\/lh\/u8\/qf\/lhu8qffcenb8utgcekfoy_j0oee.png\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/lh\/u8\/qf\/lhu8qffcenb8utgcekfoy_j0oee.png\"><\/a><\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u0434\u0438\u0441\u043a\u043e\u0432 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043e\u043a\u043e\u043d\u0447\u0435\u043d\u043d\u043e\u0439.<\/p>\n<p>  <\/p>\n<h3 id=\"faylovye-sistemy-i-obschie-katalogi\">\u0424\u0430\u0439\u043b\u043e\u0432\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438 \u043e\u0431\u0449\u0438\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438<\/h3>\n<p>  <\/p>\n<p>\u041d\u0430\u0434\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432.<br \/>  \u0421\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0438\u0437 \u043a\u043e\u043d\u0441\u043e\u043b\u0438, \u043b\u0438\u0431\u043e \u0438\u0437 WEB-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 OMV (<em>\u0425\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435-&gt;ZFS-&gt;\u0412\u044b\u0431\u0440\u0430\u0442\u044c \u043f\u0443\u043b tank0-&gt;\u041a\u043d\u043e\u043f\u043a\u0430 &#171;\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c&#187;-&gt;Filesystem<\/em>).<\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u043e\u043c\u0430\u043d\u0434\u044b \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0424\u0421.<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>zfs create -o utf8only=on -o normalization=formD -p tank0\/user_data\/books zfs create -o utf8only=on -o normalization=formD -p tank0\/user_data\/music zfs create -o utf8only=on -o normalization=formD -p tank0\/user_data\/pictures zfs create -o utf8only=on -o normalization=formD -p tank0\/user_data\/downloads zfs create -o compression=off -o utf8only=on -o normalization=formD -p tank0\/user_data\/videos<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p>\u0412 \u0438\u0442\u043e\u0433\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432:<\/p>\n<p>  <\/p>\n<p><a href=\"https:\/\/habrastorage.org\/webt\/ua\/uy\/yk\/uauyykwki2nmmmpj6pe3-lqxrie.png\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ua\/uy\/yk\/uauyykwki2nmmmpj6pe3-lqxrie.png\"><\/a><\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e, \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0435 \u0424\u0421, \u043a\u0430\u043a \u043e\u0431\u0449\u0438\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 <em>&#171;\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430-&gt;\u041e\u0431\u0449\u0438\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438-&gt;\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c&#187;<\/em>.<br \/>  \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <em>&#171;\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e&#187;<\/em> \u0440\u0430\u0432\u0435\u043d \u043f\u0443\u0442\u0438 \u043a \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0439 \u0432 ZFS \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435, \u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <em>&#171;\u041f\u0443\u0442\u044c&#187;<\/em> \u0443 \u0432\u0441\u0435\u0445 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432 \u0440\u0430\u0432\u0435\u043d &#171;\/&#187;.<\/p>\n<p>  <\/p>\n<p><a href=\"https:\/\/habrastorage.org\/webt\/xc\/9v\/da\/xc9vdaubqewzyhqfm80k_751fo8.png\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/xc\/9v\/da\/xc9vdaubqewzyhqfm80k_751fo8.png\"><\/a><\/p>\n<p>  <\/p>\n<h3 id=\"rezervnoe-kopirovanie\">\u0420\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0435 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435<\/h3>\n<p>  <\/p>\n<p>\u0420\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0435 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0434\u0432\u0443\u043c\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438:<\/p>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/OpenMediaVault-Plugin-Developers\/openmediavault-backup\">OMV backup plugin<\/a>. \u041f\u043b\u0430\u0433\u0438\u043d OMV \u0434\u043b\u044f \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0433\u043e \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u044b.<\/li>\n<li><a href=\"https:\/\/github.com\/zfsonlinux\/zfs-auto-snapshot\">zfs-auto-snapshot<\/a>. \u0421\u043a\u0440\u0438\u043f\u0442 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u043d\u0438\u043c\u043a\u043e\u0432 ZFS \u043f\u043e \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u0441\u0442\u0430\u0440\u044b\u0445.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435\u0441\u044c \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u043e\u0448\u0438\u0431\u043a\u0443:<\/p>\n<p>  <\/p>\n<pre><code>lsblk: \/dev\/block\/0:22: not a block device<\/code><\/pre>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0435\u0451 \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c, <a href=\"https:\/\/github.com\/OpenMediaVault-Plugin-Developers\/openmediavault-backup\/issues\/16\">\u043f\u043e \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u044e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 OMV<\/a> \u0432 \u044d\u0442\u043e\u0439 &#171;\u043e\u0447\u0435\u043d\u044c \u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438&#187;, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u043e\u0442\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0438 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 ZFS \u0432 \u0432\u0438\u0434\u0435 <a href=\"https:\/\/docs.oracle.com\/cd\/E19253-01\/820-0836\/gbchx\/index.html\"><code>zfs send\/receive<\/code><\/a>.<br \/>  \u041b\u0438\u0431\u043e \u044f\u0432\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 &#171;Root device&#187; \u0432 \u0432\u0438\u0434\u0435 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430.<br \/>  \u041c\u043d\u0435 \u0443\u0434\u043e\u0431\u043d\u0435\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d \u0438 \u0434\u0435\u043b\u0430\u0442\u044c \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0435 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u041e\u0421 \u0438\u0437 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430, \u0432\u043c\u0435\u0441\u0442\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0433\u043e\u0440\u043e\u0434\u0438\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u0441\u0432\u043e\u0451 \u0441 zfs send, \u043f\u043e\u0442\u043e\u043c\u0443 \u044f \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u044e \u0432\u0442\u043e\u0440\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442.<\/p>\n<p>  <\/p>\n<p><a href=\"https:\/\/habrastorage.org\/webt\/q8\/hm\/k9\/q8hmk9guerk2it7d1xe4tuzvtak.png\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/q8\/hm\/k9\/q8hmk9guerk2it7d1xe4tuzvtak.png\" alt=\"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0433\u043e \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\"><\/a><\/p>\n<p>  <\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0435 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e, \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0447\u0435\u0440\u0435\u0437 ZFS \u0444\u0430\u0439\u043b\u043e\u0432\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 <code>tank0\/apps\/backup<\/code>, \u0437\u0430\u0442\u0435\u043c \u0432 \u043c\u0435\u043d\u044e <em>&#171;\u0421\u0438\u0441\u0442\u0435\u043c\u0430-&gt;\u0420\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435&#187;<\/em> \u043a\u043b\u0438\u043a\u043d\u0438\u0442\u0435 &#171;+&#187; \u0432 \u043f\u043e\u043b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 <em>&#171;\u041e\u0431\u0449\u0430\u044f \u043f\u0430\u043f\u043a\u0430&#187;<\/em> \u0438 \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e, \u043a\u0430\u043a \u0446\u0435\u043b\u0435\u0432\u043e\u0435, \u0430 \u043f\u043e\u043b\u0435 <em>&#171;\u041f\u0443\u0442\u044c&#187;<\/em> \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0432 &#171;\/&#187;.<\/p>\n<p>  <\/p>\n<p>\u0421 zfs-auto-snapshot \u0442\u043e\u0436\u0435 \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b. \u0415\u0441\u043b\u0438 \u0435\u0451 \u043d\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c, \u043e\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u0434\u0435\u043b\u0430\u0442\u044c \u0441\u043d\u0438\u043c\u043a\u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u0447\u0430\u0441, \u043a\u0430\u0436\u0434\u044b\u0439 \u0434\u0435\u043d\u044c, \u043a\u0430\u0436\u0434\u0443\u044e \u043d\u0435\u0434\u0435\u043b\u044e, \u043a\u0430\u0436\u0434\u044b\u0439 \u043c\u0435\u0441\u044f\u0446 \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 \u0433\u043e\u0434\u0430.<br \/>  \u0412 \u0438\u0442\u043e\u0433\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0442\u043e, \u0447\u0442\u043e \u043d\u0430 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0435:<\/p>\n<p>  <\/p>\n<p><a href=\"https:\/\/habrastorage.org\/webt\/af\/_j\/gw\/af_jgw_evodbuhm07iqwpjh-he8.png\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/af\/_j\/gw\/af_jgw_evodbuhm07iqwpjh-he8.png\" alt=\"\u041c\u043d\u043e\u0433\u043e \u0441\u043f\u0430\u043c\u0430 \u043e\u0442 zfs-auto-snapshot\"><\/a><\/p>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u0443\u0436\u0435 \u043d\u0430 \u044d\u0442\u043e \u043d\u0430\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438\u0441\u044c, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434 \u0434\u043b\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0441\u043d\u0438\u043c\u043a\u043e\u0432:<\/p>\n<p>  <\/p>\n<pre><code>zfs list -t snapshot -o name -S creation | grep \"@zfs-auto-snap\" | tail -n +1500 | xargs -n 1 zfs destroy -vr<\/code><\/pre>\n<p>  <\/p>\n<p>\u0417\u0430\u0442\u0435\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u0442\u0435 \u0437\u0430\u043f\u0443\u0441\u043a zfs-auto-snapshot \u0432 cron.<br \/>  \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430, \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u0434\u0430\u043b\u0438\u0442\u0435 <code>\/etc\/cron.hourly\/zfs-auto-snapshot<\/code>, \u0435\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u0435\u043b\u0430\u0442\u044c \u0441\u043d\u0438\u043c\u043a\u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u0447\u0430\u0441.<\/p>\n<p>  <\/p>\n<h3 id=\"e-mail-uvedomleniya\">E-mail \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f<\/h3>\n<p>  <\/p>\n<p>\u041d\u043e\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u043f\u043e e-mail \u0431\u044b\u043b\u0430 \u0443\u043a\u0430\u0437\u0430\u043d\u0430, \u043a\u0430\u043a \u043e\u0434\u043d\u043e \u0438\u0437 \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u044f \u043d\u0430\u0434\u0451\u0436\u043d\u043e\u0441\u0442\u0438.<br \/>  \u041f\u043e\u0442\u043e\u043c\u0443 \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0434\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c E-mail \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f.<br \/>  \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e, \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0439\u0442\u0435 \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0438\u0437 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u044f\u0449\u0438\u043a (\u043d\u0443 \u043b\u0438\u0431\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u0442\u0435 SMTP \u0441\u0435\u0440\u0432\u0435\u0440 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e, \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0435\u0441\u0442\u044c \u043f\u0440\u0438\u0447\u0438\u043d\u044b \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c).<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043d\u0430\u0434\u043e \u0437\u0430\u0439\u0442\u0438 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 <em>&#171;\u0421\u0438\u0441\u0442\u0435\u043c\u0430-&gt;\u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435&#187;<\/em> \u0438 \u0432\u043f\u0438\u0441\u0430\u0442\u044c:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u0410\u0434\u0440\u0435\u0441 SMTP \u0441\u0435\u0440\u0432\u0435\u0440\u0430.<\/li>\n<li>\u041f\u043e\u0440\u0442 SMTP \u0441\u0435\u0440\u0432\u0435\u0440\u0430.<\/li>\n<li>\u0418\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.<\/li>\n<li>\u0410\u0434\u0440\u0435\u0441 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u044f (\u043e\u0431\u044b\u0447\u043d\u043e \u043f\u0435\u0440\u0432\u0430\u044f \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u0430\u0434\u0440\u0435\u0441\u0430 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c).<\/li>\n<li>\u041f\u0430\u0440\u043e\u043b\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.<\/li>\n<li>\u0412 \u043f\u043e\u043b\u0435 &#171;\u041f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044c&#187; \u0432\u0430\u0448 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 NAS \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041a\u0440\u0430\u0439\u043d\u0435 \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c SSL\/TLS.<\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0434\u043b\u044f Yandex \u043f\u043e\u043a\u0430\u0437\u0430\u043d \u043d\u0430 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0435:<\/p>\n<p>  <\/p>\n<p><a href=\"https:\/\/habrastorage.org\/webt\/4j\/pb\/2m\/4jpb2mwgystnu_3yc9vf9l16soo.png\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/4j\/pb\/2m\/4jpb2mwgystnu_3yc9vf9l16soo.png\" alt=\"E-mail \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f\"><\/a><\/p>\n<p>  <\/p>\n<h2 id=\"nastroyka-seti-vne-nas\">\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0441\u0435\u0442\u0438 \u0432\u043d\u0435 NAS<\/h2>\n<p>  <\/p>\n<h3 id=\"ip-adres\">IP-\u0430\u0434\u0440\u0435\u0441<\/h3>\n<p>  <\/p>\n<p>\u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0431\u0435\u043b\u044b\u0439 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 IP-\u0430\u0434\u0440\u0435\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0442\u043e\u0438\u0442 \u043f\u043b\u044e\u0441\u043e\u043c 100 \u0440\u0443\u0431\u043b\u0435\u0439 \u0432 \u043c\u0435\u0441\u044f\u0446. \u0415\u0441\u043b\u0438 \u043d\u0435\u0442 \u0436\u0435\u043b\u0430\u043d\u0438\u044f \u043f\u043b\u0430\u0442\u0438\u0442\u044c \u0438 \u0432\u0430\u0448 \u0430\u0434\u0440\u0435\u0441 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439, \u043d\u043e \u043d\u0435 \u0437\u0430 NAT, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u0438\u0435 DNS \u0437\u0430\u043f\u0438\u0441\u0438 \u0447\u0435\u0440\u0435\u0437 API \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0430.<br \/>  \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u0441\u0442\u043e\u0438\u0442 \u0438\u043c\u0435\u0442\u044c \u0432\u0432\u0438\u0434\u0443, \u0447\u0442\u043e \u0430\u0434\u0440\u0435\u0441 \u043d\u0435 \u0437\u0430 NAT \u043c\u043e\u0436\u0435\u0442 \u0432\u043d\u0435\u0437\u0430\u043f\u043d\u043e \u0441\u0442\u0430\u0442\u044c \u0430\u0434\u0440\u0435\u0441\u043e\u043c \u0437\u0430 NAT: \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u044b \u043d\u0435 \u0434\u0430\u044e\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0439.<\/p>\n<p>  <\/p>\n<h3 id=\"router\">\u0420\u043e\u0443\u0442\u0435\u0440<\/h3>\n<p>  <\/p>\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u043e\u0443\u0442\u0435\u0440\u0430 \u0443 \u043c\u0435\u043d\u044f <a href=\"https:\/\/mikrotik.com\/product\/RB951Ui-2HnD\">Mikrotik RouterBoard<\/a>, \u043f\u043e\u0445\u043e\u0436\u0438\u0439 \u043d\u0430 \u0442\u043e\u0442, \u0447\u0442\u043e \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0435 \u043d\u0438\u0436\u0435.<\/p>\n<p>  <\/p>\n<p><a href=\"https:\/\/habrastorage.org\/webt\/ni\/mv\/a8\/nimva8ju1vg2doqcnwd7s0_xcmw.jpeg\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ni\/mv\/a8\/nimva8ju1vg2doqcnwd7s0_xcmw.jpeg\" alt=\"Mikrotik Routerboard\"><\/a><\/p>\n<p>  <\/p>\n<p>\u041d\u0430 \u0440\u043e\u0443\u0442\u0435\u0440\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0440\u0438 \u0432\u0435\u0449\u0438:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0430\u0434\u0440\u0435\u0441\u0430 \u0434\u043b\u044f NAS. \u0412 \u043c\u043e\u0451\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0430\u0434\u0440\u0435\u0441\u0430 \u0432\u044b\u0434\u0430\u044e\u0442\u0441\u044f \u043f\u043e DHCP, \u0438 \u043d\u0430\u0434\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430\u043c \u0441 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u043c MAC \u0430\u0434\u0440\u0435\u0441\u043e\u043c \u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u044b\u0434\u0430\u0432\u0430\u043b\u0441\u044f \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 IP \u0430\u0434\u0440\u0435\u0441. \u0412 RouterOS \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0432\u043a\u043b\u0430\u0434\u043a\u0435 <em>&#171;IP-&gt;DHCP Server&#187;<\/em> \u043a\u043d\u043e\u043f\u043a\u043e\u0439 <em>&#171;Make static&#187;<\/em>.<\/li>\n<li>\u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c DNS \u0441\u0435\u0440\u0432\u0435\u0440 \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u0434\u043b\u044f \u0438\u043c\u0435\u043d\u0438 &#171;nas&#187;, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0438\u043c\u0451\u043d, \u043e\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u044e\u0449\u0438\u0445\u0441\u044f \u043d\u0430 &#171;.nas&#187; \u0438 &#171;.NAS.cloudns.cc&#187; (\u0433\u0434\u0435 &#171;NAS&#187; \u2014 \u0437\u043e\u043d\u0430 \u043d\u0430 ClouDNS \u0438\u043b\u0438 \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u0435) \u043e\u0442\u0434\u0430\u0432\u0430\u043b IP \u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u0413\u0434\u0435 \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432 RouterOS, \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u043d\u0430 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0435 \u043d\u0438\u0436\u0435. \u0412 \u043c\u043e\u0451\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u044d\u0442\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043e \u043f\u0443\u0442\u0451\u043c \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u043c\u0435\u043d\u0438 \u0441 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u043c \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043c: &#171;<code>^.*\\.nas$|^nas$|^.*\\.NAS.cloudns.cc$<\/code>&#171;<\/li>\n<li>\u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u0440\u043e\u0431\u0440\u043e\u0441 \u043f\u043e\u0440\u0442\u043e\u0432. \u0412 RouterOS \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0432\u043a\u043b\u0430\u0434\u043a\u0435 <em>&#171;IP-&gt;Firewall&#187;<\/em>, \u0434\u0430\u043b\u0435\u0435 \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u044f \u043d\u0430 \u044d\u0442\u043e\u043c \u043d\u0435 \u0431\u0443\u0434\u0443.<\/li>\n<\/ul>\n<p>  <\/p>\n<p><a href=\"https:\/\/habrastorage.org\/webt\/wu\/2d\/3n\/wu2d3ng2xlqaleslb__9a72vtpo.png\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/wu\/2d\/3n\/wu2d3ng2xlqaleslb__9a72vtpo.png\" alt=\"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 DNS \u0432 RouterOS\"><\/a><\/p>\n<p>  <\/p>\n<h3 id=\"cloudns\">ClouDNS<\/h3>\n<p>  <\/p>\n<p>\u0421 CLouDNS \u0432\u0441\u0451 \u043f\u0440\u043e\u0441\u0442\u043e. \u0417\u0430\u0432\u043e\u0434\u0438\u0442\u0435 \u0430\u043a\u043a\u0430\u0443\u043d\u0442, \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0435\u0442\u0435. NS \u0437\u0430\u043f\u0438\u0441\u0438 \u0443\u0436\u0435 \u0443 \u0432\u0430\u0441 \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u044b. \u0414\u0430\u043b\u0435\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430.<\/p>\n<p>  <\/p>\n<p>\u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0437\u043e\u043d\u044b (\u0437\u043e\u043d\u0430 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c NAS, \u043f\u043e\u0434\u0447\u0451\u0440\u043a\u043d\u0443\u0442\u0430\u044f \u043d\u0430 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0435 \u043a\u0440\u0430\u0441\u043d\u044b\u043c \u2014 \u044d\u0442\u043e \u0442\u043e, \u0447\u0442\u043e \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c, \u0441 \u0434\u0440\u0443\u0433\u0438\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c, \u043a\u043e\u043d\u0435\u0447\u043d\u043e).<\/p>\n<p>  <\/p>\n<p><a href=\"https:\/\/habrastorage.org\/webt\/wj\/3k\/0u\/wj3k0ueaouj9tdslhubqtdz49os.png\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/wj\/3k\/0u\/wj3k0ueaouj9tdslhubqtdz49os.png\" alt=\"\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0437\u043e\u043d\u044b \u0432 ClouDNS\"><\/a><\/p>\n<p>  <\/p>\n<p>\u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u0432 \u044d\u0442\u043e\u0439 \u0437\u043e\u043d\u0435 \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 <a href=\"http:\/\/www.wikireality.ru\/wiki\/A-%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D1%8C\">A-\u0437\u0430\u043f\u0438\u0441\u0438<\/a>:<\/p>\n<p>  <\/p>\n<ul>\n<li><strong>nas<\/strong>, <strong>www<\/strong>, <strong>omv<\/strong>, <strong>control<\/strong> \u0438 <strong>\u043f\u0443\u0441\u0442\u043e\u0435 \u0438\u043c\u044f<\/strong>. \u0414\u043b\u044f \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0443 OMV.<\/li>\n<li><strong>ldap<\/strong>. \u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 PhpLdapAdmin.<\/li>\n<li><strong>ssp<\/strong>. \u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u0441\u043c\u0435\u043d\u044b \u043f\u0430\u0440\u043e\u043b\u0435\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.<\/li>\n<li><strong>test<\/strong>. \u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0434\u043e\u043c\u0435\u043d\u043d\u044b\u0435 \u0438\u043c\u0435\u043d\u0430 \u0431\u0443\u0434\u0443\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u043f\u043e \u043c\u0435\u0440\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u043b\u0443\u0436\u0431.<br \/>  \u041a\u043b\u0438\u043a\u0430\u0439\u0442\u0435 \u043d\u0430 \u0437\u043e\u043d\u0443, \u0434\u0430\u043b\u0435\u0435 <em>&#171;Add new record&#187;<\/em>, \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442\u0435 A-\u0442\u0438\u043f, \u0432\u0432\u043e\u0434\u0438\u0442\u0435 \u0438\u043c\u044f \u0437\u043e\u043d\u044b \u0438 IP \u0430\u0434\u0440\u0435\u0441 \u0440\u043e\u0443\u0442\u0435\u0440\u0430, \u0437\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0441\u0442\u043e\u0438\u0442 NAS.<\/p>\n<p>  <\/p>\n<p><a href=\"https:\/\/habrastorage.org\/webt\/ym\/9o\/s2\/ym9os2upazemboftovtmasp3h1u.png\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ym\/9o\/s2\/ym9os2upazemboftovtmasp3h1u.png\" alt=\"\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 A-\u0437\u0430\u043f\u0438\u0441\u0438\"><\/a><\/p>\n<p>  <\/p>\n<p>\u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a API. \u0412 ClouDNS \u043e\u043d \u043f\u043b\u0430\u0442\u043d\u044b\u0439, \u0442\u0430\u043a \u0447\u0442\u043e \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u0434\u043e \u0435\u0433\u043e \u043e\u043f\u043b\u0430\u0442\u0438\u0442\u044c. \u0412 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u0430\u0445 \u043e\u043d \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439. \u0415\u0441\u043b\u0438 \u0437\u043d\u0430\u0435\u0442\u0435, \u0447\u0442\u043e \u043b\u0443\u0447\u0448\u0435, \u0438 \u044d\u0442\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f <a href=\"https:\/\/github.com\/AnalogJ\/lexicon\">Lexicon<\/a>, \u043d\u0430\u043f\u0438\u0448\u0438\u0442\u0435 \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445.<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u0432 \u0434\u043e\u0441\u0442\u0443\u043f \u043a API, \u0442\u0443\u0434\u0430 \u043d\u0430\u0434\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f API.<\/p>\n<p>  <\/p>\n<p><a href=\"https:\/\/habrastorage.org\/webt\/ah\/tc\/rp\/ahtcrpidjt3gvlnuc-udwjj0no8.png\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ah\/tc\/rp\/ahtcrpidjt3gvlnuc-udwjj0no8.png\" alt=\"\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f API ClouDNS\"><\/a><\/p>\n<p>  <\/p>\n<p>\u0412 \u043f\u043e\u043b\u0435 <em>&#171;IP address&#187;<\/em> \u043d\u0430\u0434\u043e \u0432\u043f\u0438\u0441\u0430\u0442\u044c IP \u0440\u043e\u0443\u0442\u0435\u0440\u0430: \u044d\u0442\u043e \u0430\u0434\u0440\u0435\u0441, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d API. \u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d, \u0432\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c API, \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u0432\u0448\u0438\u0441\u044c \u043f\u043e <strong>auth-id<\/strong> \u0438 <strong>auth-password<\/strong>. \u0418\u0445 \u043d\u0430\u0434\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0432 Lexicon, \u043a\u0430\u043a \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b.<\/p>\n<p>  <\/p>\n<p><a href=\"https:\/\/habrastorage.org\/webt\/z_\/6k\/yv\/z_6kyvkyj9gqlbi_s-dudfoirzs.png\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/z_\/6k\/yv\/z_6kyvkyj9gqlbi_s-dudfoirzs.png\"><\/a><\/p>\n<p>  <\/p>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 ClouDNS \u0437\u0430\u043a\u043e\u043d\u0447\u0435\u043d\u0430.<\/p>\n<p>  <\/p>\n<h2>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u0438<\/h2>\n<p>  <\/p>\n<h3 id=\"nastroyka-docker\">\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 Docker<\/h3>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438 \u043f\u043b\u0430\u0433\u0438\u043d openmediavault-docker-gui, \u043f\u0430\u043a\u0435\u0442 docker-ce \u0443\u0436\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u043b \u043f\u043e\u0434\u0442\u044f\u043d\u0443\u0442\u044c\u0441\u044f \u043f\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u043c.<\/p>\n<p>  <\/p>\n<p>\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u043f\u0430\u043a\u0435\u0442 <a href=\"https:\/\/docs.docker.com\/compose\/overview\/\">docker-compose<\/a>, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438:<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">apt-get install docker-compose<\/code><\/pre>\n<p>  <\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0444\u0430\u0439\u043b\u043e\u0432\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043f\u043e\u0434 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432:<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">zfs create -p \/tank0\/docker\/services<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412\u0441\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438, \u043e\u0431\u0440\u0430\u0437\u044b \u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0434\u043e\u043a\u0435\u0440\u0430 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432 <code>\/var\/lib\/docker<\/code>. \u041e\u043d \u0442\u0443\u0434\u0430 \u0438\u043d\u0442\u0435\u043d\u0441\u0438\u0432\u043d\u043e \u043f\u0438\u0448\u0435\u0442 (\u043d\u0430\u0434\u043e \u043f\u043e\u043c\u043d\u0438\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u043e SSD), \u043d\u043e \u0433\u043b\u0430\u0432\u043d\u043e\u0435, \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u0441\u043d\u044d\u043f\u0448\u043e\u0442\u044b, \u043a\u043b\u043e\u043d\u044b \u0438 \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0441 \u0438\u043c\u0435\u043d\u0430\u043c\u0438 \u0432 \u0432\u0438\u0434\u0435 \u0445\u044d\u0448\u0435\u0439.<\/p>\n<p>  <\/p>\n<p>\u0422.\u043e., \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0442\u0430\u043c \u0441\u043a\u043e\u043f\u0438\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u043c\u0443\u0441\u043e\u0440\u0430 \u0438 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0443\u0434\u043e\u0431\u043d\u043e<br \/>  \u0441 \u043d\u0438\u043c \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f. \u041f\u0440\u0438\u043c\u0435\u0440 \u043d\u0430 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0435.<\/p>\n<p>  <\/p>\n<p><a href=\"https:\/\/habrastorage.org\/webt\/wn\/by\/ec\/wnbyecyxrlrsf0cssx78zqmoxdu.png\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/wn\/by\/ec\/wnbyecyxrlrsf0cssx78zqmoxdu.png\"><\/a><\/p>\n<p>  <\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u044d\u0442\u043e\u0433\u043e \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c, \u043d\u0430\u0434\u043e \u043b\u043e\u043a\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435.<br \/>  \u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u043f\u0443\u0442\u0438 \u0434\u043e\u043a\u0435\u0440\u0430 \u043d\u0435 \u0441\u043b\u043e\u0436\u043d\u043e, \u044d\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0434\u0430\u0436\u0435 \u0447\u0435\u0440\u0435\u0437 GUI \u043f\u043b\u0430\u0433\u0438\u043d\u0430, \u043d\u043e \u0442\u043e\u0433\u0434\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0435\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430: <a href=\"https:\/\/github.com\/OpenMediaVault-Plugin-Developers\/openmediavault-zfs\/issues\/42#issuecomment-378410324\">\u043f\u0443\u043b\u044b \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043d\u0443\u0442 \u043c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435<\/a>, \u0442.\u043a. \u0434\u043e\u043a\u0435\u0440 \u0441\u043e\u0437\u0434\u0430\u0441\u0442 \u0441\u0432\u043e\u0438 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438 \u0432 \u0442\u043e\u0447\u043a\u0435 \u043c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0438 \u043e\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435 \u043f\u0443\u0441\u0442\u0430.<\/p>\n<p>  <\/p>\n<p>\u0420\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u044d\u0442\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0437\u0430\u043c\u0435\u043d\u043e\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u0434\u043e\u043a\u0435\u0440\u0430 \u0432 <code>\/var\/lib<\/code> \u043d\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0441\u0441\u044b\u043b\u043a\u0443:<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">service docker stop zfs create -p \/tank0\/docker\/lib rm -rf \/var\/lib\/docker ln -s  \/tank0\/docker\/lib \/var\/lib\/docker service docker start<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435:<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">$ ls -l \/var\/lib\/docker lrwxrwxrwx 1 root root 17 Apr  7 12:35 \/var\/lib\/docker -&gt; \/tank0\/docker\/lib<\/code><\/pre>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0434\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043c\u0435\u0436\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043d\u0443\u044e \u0441\u0435\u0442\u044c:<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">docker network create docker0<\/code><\/pre>\n<p>  <\/p>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 Docker \u0437\u0430\u043a\u043e\u043d\u0447\u0435\u043d\u0430 \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0430\u0442\u044c \u043a \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432.<\/p>\n<p>  <\/p>\n<h3 id=\"nastroyka-konteynera-s-nginx-reverse-proxy\">\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u0441 nginx-reverse-proxy<\/h3>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e \u043a\u0430\u043a Docker \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0430.<\/p>\n<p>  <\/p>\n<p>\u041d\u0430\u0439\u0442\u0438 \u0432\u0441\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 <a href=\"https:\/\/github.com\/artiomn\/NAS\/tree\/master\/docker\/services\/nginx-proxy\">\u0437\u0434\u0435\u0441\u044c<\/a>, \u043b\u0438\u0431\u043e \u043f\u043e\u0434 \u0441\u043f\u043e\u0439\u043b\u0435\u0440\u0430\u043c\u0438.<\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u043d\u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u0432\u0430 \u043e\u0431\u0440\u0430\u0437\u0430: <a href=\"https:\/\/github.com\/jwilder\/nginx-proxy\">nginx-proxy<\/a> \u0438 <a href=\"https:\/\/github.com\/adferrand\/docker-letsencrypt-dns\">letsencrypt-dns<\/a>.<\/p>\n<p>  <\/p>\n<p>\u041d\u0430\u043f\u043e\u043c\u043d\u044e, \u0447\u0442\u043e \u043f\u043e\u0440\u0442\u044b \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 OMV \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430 10080 \u0438 10443, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430 \u043f\u043e\u0440\u0442\u0430\u0445 80 \u0438 443.<\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\/tank0\/docker\/services\/nginx-proxy\/docker-compose.yml<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>version: '2'  networks:   docker0:     external:       name: docker0  services:   nginx-proxy:     networks:       - docker0     restart: always     image: jwilder\/nginx-proxy     ports:       - \"80:80\"       - \"443:443\"     volumes:       - .\/certs:\/etc\/nginx\/certs:ro       - .\/vhost.d:\/etc\/nginx\/vhost.d       - .\/html:\/usr\/share\/nginx\/html       - \/var\/run\/docker.sock:\/tmp\/docker.sock:ro       - .\/local-config:\/etc\/nginx\/conf.d       - .\/nginx.tmpl:\/app\/nginx.tmpl     labels:       - \"com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy=true\"    letsencrypt-dns:     image: adferrand\/letsencrypt-dns     volumes:       - .\/certs\/letsencrypt:\/etc\/letsencrypt     environment:       - \"LETSENCRYPT_USER_MAIL=MAIL@MAIL.COM\"       - \"LEXICON_PROVIDER=cloudns\"       - \"LEXICON_PROVIDER_OPTIONS=--auth-id=CLOUDNS_ID --auth-password=CLOUDNS_PASSWORD --delegated=NAS.cloudns.cc\"<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p>\u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0435 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0434\u0432\u0430 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430:<\/p>\n<p>  <\/p>\n<ul>\n<li>nginx-reverse-proxy \u2014 c\u0430\u043c \u043e\u0431\u0440\u0430\u0442\u043d\u044b\u0439 \u043f\u0440\u043e\u043a\u0441\u0438.<\/li>\n<li>letsencrypt-dns \u2014 <a href=\"https:\/\/letsencrypt.org\/docs\/client-options\/\">ACME \u043a\u043b\u0438\u0435\u043d\u0442<\/a> Let&#8217;s Encrypt.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u0441 nginx-reverse-proxy \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u0431\u0440\u0430\u0437 <a href=\"https:\/\/hub.docker.com\/r\/jwilder\/nginx-proxy\/\">jwilder\/nginx-proxy<\/a>.<\/p>\n<p>  <\/p>\n<p><code>docker0<\/code> \u2014 \u043c\u0435\u0436\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043d\u0430\u044f \u0441\u0435\u0442\u044c, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u044b\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u0440\u0430\u043d\u0435\u0435, \u0435\u0439 \u043d\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 docker-compose.<br \/>  <code>nginx-proxy<\/code> \u2014 \u0441\u0435\u0440\u0432\u0438\u0441 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u043a\u0441\u0438, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u043f\u0435\u0440\u0441\u043e\u043d\u043e\u0439. \u041e\u043d \u0441\u043c\u043e\u0442\u0440\u0438\u0442 \u0432 \u0441\u0435\u0442\u044c docker0. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c, \u043f\u043e\u0440\u0442\u044b 80 \u0438 443 \u0432 \u0441\u0435\u043a\u0446\u0438\u0438 ports \u043f\u0440\u043e\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0435 \u043f\u043e\u0440\u0442\u044b \u0445\u043e\u0441\u0442\u0430 (\u0437\u043d\u0430\u0447\u0438\u0442, \u043d\u0430 \u0445\u043e\u0441\u0442\u0435 \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043a\u0440\u044b\u0442\u044b \u0442\u0430\u043a\u0438\u0435 \u0436\u0435 \u043f\u043e\u0440\u0442\u044b, \u0430 \u0434\u0430\u043d\u043d\u044b\u0435 \u0441 \u043d\u0438\u0445 \u0431\u0443\u0434\u0443\u0442 \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u043d\u0430 \u043f\u043e\u0440\u0442\u044b \u0432 \u0441\u0435\u0442\u0438 docker0, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043b\u0443\u0448\u0430\u0435\u0442 \u043f\u0440\u043e\u043a\u0441\u0438).<br \/>  \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <a href=\"https:\/\/docs.docker.com\/compose\/compose-file\/#restart\"><code>restart: always<\/code><\/a> \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0441\u0435\u0440\u0432\u0438\u0441 \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435.<\/p>\n<p>  <\/p>\n<p>\u0422\u043e\u043c\u0430:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u0412\u043d\u0435\u0448\u043d\u0438\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 <strong><code>certs<\/code><\/strong> \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u0432 <strong><code>\/etc\/nginx\/certs<\/code><\/strong> \u2014 \u0442\u0430\u043c \u043b\u0435\u0436\u0430\u0442 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u043e\u0442 Let&#8217;s Encrypt. \u042d\u0442\u043e \u043e\u0431\u0449\u0438\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u043c \u0441 \u043f\u0440\u043e\u043a\u0441\u0438 \u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u043c \u0441 ACME \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u043c.<\/li>\n<li><code>.\/vhost.d:\/etc\/nginx\/vhost.d<\/code> \u2014 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u0445\u043e\u0441\u0442\u043e\u0432. \u0421\u0435\u0439\u0447\u0430\u0441 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e.<\/li>\n<li><code>.\/html:\/usr\/share\/nginx\/html<\/code> \u2014 \u0441\u0442\u0430\u0442\u0438\u0447\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043d\u0442. \u0422\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c.<\/li>\n<li><strong><code>\/var\/run\/docker.sock<\/code><\/strong>, \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u044b\u0439 \u0432 <strong><code>\/tmp\/docker.sock<\/code><\/strong> \u2014 \u0441\u043e\u043a\u0435\u0442 \u0434\u043b\u044f \u0441\u0432\u044f\u0437\u0438 \u0441 \u0434\u0435\u043c\u043e\u043d\u043e\u043c Docker \u043d\u0430 \u0445\u043e\u0441\u0442\u0435. \u041d\u0443\u0436\u0435\u043d \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b docker-gen \u0432\u043d\u0443\u0442\u0440\u0438 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u0431\u0440\u0430\u0437\u0430.<\/li>\n<li><strong><code>.\/local-config<\/code><\/strong>, \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u044b\u0439 \u0432 <strong><code>\/etc\/nginx\/conf.d<\/code><\/strong> \u2014 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b nginx. \u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0442\u044e\u043d\u0438\u043d\u0433\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0438\u0436\u0435.<\/li>\n<li><strong><code>.\/nginx.tmpl<\/code><\/strong>, \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u044b\u0439 \u0432 <strong><code>\/app\/nginx.tmpl<\/code><\/strong> \u2014 \u0448\u0430\u0431\u043b\u043e\u043d \u0434\u043b\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 nginx, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e docker-gen \u0441\u043e\u0437\u0434\u0430\u0441\u0442 \u043a\u043e\u043d\u0444\u0438\u0433.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 letsencrypt-dns \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u0438\u0437 \u043e\u0431\u0440\u0430\u0437\u0430 <a href=\"https:\/\/hub.docker.com\/r\/adferrand\/letsencrypt-dns\/\">adferrand\/letsencrypt-dns<\/a>. \u041e\u043d \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044b\u0439 \u0432\u044b\u0448\u0435 ACME \u043a\u043b\u0438\u0435\u043d\u0442 \u0438 Lexicon, \u0434\u043b\u044f \u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0441 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u043c DNS \u0437\u043e\u043d\u044b.<\/p>\n<p>  <\/p>\n<p>\u041e\u0431\u0449\u0438\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 <code>certs\/letsencrypt<\/code> \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u0432 <code>\/etc\/letsencrypt<\/code> \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430.<\/p>\n<p>  <\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u044d\u0442\u043e \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e, \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0435\u0449\u0451 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430:<\/p>\n<p>  <\/p>\n<ul>\n<li><strong><code>LETSENCRYPT_USER_MAIL=MAIL@MAIL.COM<\/code><\/strong> \u2014 \u043f\u043e\u0447\u0442\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f Let&#8217;s Encrypt. \u041b\u0443\u0447\u0448\u0435 \u0442\u0443\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0440\u0435\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u043e\u0447\u0442\u0443, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u044c \u0432\u0441\u044f\u043a\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f.<\/li>\n<li><strong><code>LEXICON_PROVIDER=cloudns<\/code><\/strong> \u2014 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440 \u0434\u043b\u044f Lexicon. \u0412 \u043c\u043e\u0451\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u2014 <code>cloudns<\/code>.<\/li>\n<li><strong><code>LEXICON_PROVIDER_OPTIONS=--auth-id=CLOUDNS_ID --auth-password=CLOUDNS_PASSWORD --delegated=NAS.cloudns.cc<\/code><\/strong> \u2014 CLOUDNS_ID \u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u043c \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0435 \u0432 \u0441\u0435\u043a\u0446\u0438\u0438 \u043f\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 ClouDNS \u043f\u043e\u0434\u0447\u0451\u0440\u043a\u043d\u0443\u0442 \u043a\u0440\u0430\u0441\u043d\u044b\u043c. CLOUDNS_PASSWORD \u2014 \u044d\u0442\u043e \u043f\u0430\u0440\u043e\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u0437\u0430\u0434\u0430\u043b\u0438 \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f API. NAS.cloudns.cc, \u0433\u0434\u0435 NAS \u2014 \u0438\u043c\u044f \u0432\u0430\u0448\u0435\u0439 DNS \u0437\u043e\u043d\u044b. \u0414\u043b\u044f cloudns \u043d\u0443\u0436\u0435\u043d \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0431\u0443\u0434\u0443\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0435\u0440\u0432\u044b\u0435 \u0434\u0432\u0430 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u0434\u043e\u043c\u0435\u043d\u0430 (cloudns.cc), \u0430 ClouDNS API \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0437\u043e\u043d\u0443 \u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u0435.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0431\u0443\u0434\u0443\u0442 \u0434\u0432\u0430 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0445 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430: \u043f\u0440\u043e\u043a\u0441\u0438 \u0438 \u0430\u0433\u0435\u043d\u0442 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430.<br \/>  \u041f\u0440\u0438 \u044d\u0442\u043e\u043c, \u043f\u0440\u043e\u043a\u0441\u0438 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043a\u0430\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430\u0445, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0445 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0435, \u043d\u043e \u043d\u0435 \u0432 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0441\u043e\u0437\u0434\u0430\u0441\u0442 \u0430\u0433\u0435\u043d\u0442 Let&#8217;s encrypt:<\/p>\n<p>  <\/p>\n<pre><code>$ ls .\/certs\/letsencrypt\/ accounts  archive  csr  domains.conf  keys  live  renewal  renewal-hooks<\/code><\/pre>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u043a\u0441\u0438 \u043d\u0430\u0447\u0430\u043b \u0432\u0438\u0434\u0435\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b, \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0448\u0430\u0431\u043b\u043e\u043d.<\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\/tank0\/docker\/services\/nginx-proxy\/nginx.tmpl<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>{{ $CurrentContainer := where $ \"ID\" .Docker.CurrentContainerID | first }}  {{ define \"upstream\" }}     {{ if .Address }}         {{\/* If we got the containers from swarm and this container's port is published to host, use host IP:PORT *\/}}         {{ if and .Container.Node.ID .Address.HostPort }}             # {{ .Container.Node.Name }}\/{{ .Container.Name }}             server {{ .Container.Node.Address.IP }}:{{ .Address.HostPort }};         {{\/* If there is no swarm node or the port is not published on host, use container's IP:PORT *\/}}         {{ else if .Network }}             # {{ .Container.Name }}             server {{ .Network.IP }}:{{ .Address.Port }};         {{ end }}     {{ else if .Network }}         # {{ .Container.Name }}         {{ if .Network.IP }}             server {{ .Network.IP }} down;         {{ else }}             server 127.0.0.1 down;         {{ end }}     {{ end }}  {{ end }}  # If we receive X-Forwarded-Proto, pass it through; otherwise, pass along the # scheme used to connect to this server map $http_x_forwarded_proto $proxy_x_forwarded_proto {   default $http_x_forwarded_proto;   ''      $scheme; }  # If we receive X-Forwarded-Port, pass it through; otherwise, pass along the # server port the client connected to map $http_x_forwarded_port $proxy_x_forwarded_port {   default $http_x_forwarded_port;   ''      $server_port; }  # If we receive Upgrade, set Connection to \"upgrade\"; otherwise, delete any # Connection header that may have been passed to this server map $http_upgrade $proxy_connection {   default upgrade;   '' close; }  # Apply fix for very long server names server_names_hash_bucket_size 128;  # Default dhparam {{ if (exists \"\/etc\/nginx\/dhparam\/dhparam.pem\") }} ssl_dhparam \/etc\/nginx\/dhparam\/dhparam.pem; {{ end }}  # Set appropriate X-Forwarded-Ssl header map $scheme $proxy_x_forwarded_ssl {   default off;   https on; }  gzip_types text\/plain text\/css application\/javascript application\/json application\/x-javascript text\/xml application\/xml application\/xml+rss text\/javascript;  log_format vhost '$host $remote_addr - $remote_user [$time_local] '                  '\"$request\" $status $body_bytes_sent '                  '\"$http_referer\" \"$http_user_agent\"';  access_log off;  {{ if $.Env.RESOLVERS }} resolver {{ $.Env.RESOLVERS }}; {{ end }}  {{ if (exists \"\/etc\/nginx\/proxy.conf\") }} include \/etc\/nginx\/proxy.conf; {{ else }} # HTTP 1.1 support proxy_http_version 1.1; proxy_buffering off; proxy_set_header Host $http_host; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $proxy_connection; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $proxy_x_forwarded_proto; proxy_set_header X-Forwarded-Ssl $proxy_x_forwarded_ssl; proxy_set_header X-Forwarded-Port $proxy_x_forwarded_port;  # Mitigate httpoxy attack (see README for details) proxy_set_header Proxy \"\"; {{ end }}  {{ $enable_ipv6 := eq (or ($.Env.ENABLE_IPV6) \"\") \"true\" }} server {     server_name _; # This is just an invalid value which will never trigger on a real hostname.     listen 80;     {{ if $enable_ipv6 }}     listen [::]:80;     {{ end }}     access_log \/var\/log\/nginx\/access.log vhost;     return 503; }  {{ if (and (exists \"\/etc\/nginx\/certs\/default.crt\") (exists \"\/etc\/nginx\/certs\/default.key\")) }} server {     server_name _; # This is just an invalid value which will never trigger on a real hostname.     listen 443 ssl http2;     {{ if $enable_ipv6 }}     listen [::]:443 ssl http2;     {{ end }}     access_log \/var\/log\/nginx\/access.log vhost;     return 503;      ssl_session_tickets off;     ssl_certificate \/etc\/nginx\/certs\/default.crt;     ssl_certificate_key \/etc\/nginx\/certs\/default.key; } {{ end }}  {{ range $host, $containers := groupByMulti $ \"Env.VIRTUAL_HOST\" \",\" }}  {{ $host := trim $host }} {{ $is_regexp := hasPrefix \"~\" $host }} {{ $upstream_name := when $is_regexp (sha1 $host) $host }}  # {{ $host }} upstream {{ $upstream_name }} {  {{ range $container := $containers }}     {{ $addrLen := len $container.Addresses }}      {{ range $knownNetwork := $CurrentContainer.Networks }}         {{ range $containerNetwork := $container.Networks }}             {{ if (and (ne $containerNetwork.Name \"ingress\") (or (eq $knownNetwork.Name $containerNetwork.Name) (eq $knownNetwork.Name \"host\"))) }}                 ## Can be connected with \"{{ $containerNetwork.Name }}\" network                  {{\/* If only 1 port exposed, use that *\/}}                 {{ if eq $addrLen 1 }}                     {{ $address := index $container.Addresses 0 }}                     {{ template \"upstream\" (dict \"Container\" $container \"Address\" $address \"Network\" $containerNetwork) }}                 {{\/* If more than one port exposed, use the one matching VIRTUAL_PORT env var, falling back to standard web port 80 *\/}}                 {{ else }}                     {{ $port := coalesce $container.Env.VIRTUAL_PORT \"80\" }}                     {{ $address := where $container.Addresses \"Port\" $port | first }}                     {{ template \"upstream\" (dict \"Container\" $container \"Address\" $address \"Network\" $containerNetwork) }}                 {{ end }}             {{ else }}                 # Cannot connect to network of this container                 server 127.0.0.1 down;             {{ end }}         {{ end }}     {{ end }} {{ end }} }  {{ $default_host := or ($.Env.DEFAULT_HOST) \"\" }} {{ $default_server := index (dict $host \"\" $default_host \"default_server\") $host }}  {{\/* Get the VIRTUAL_PROTO defined by containers w\/ the same vhost, falling back to \"http\" *\/}} {{ $proto := trim (or (first (groupByKeys $containers \"Env.VIRTUAL_PROTO\")) \"http\") }}  {{\/* Get the NETWORK_ACCESS defined by containers w\/ the same vhost, falling back to \"external\" *\/}} {{ $network_tag := or (first (groupByKeys $containers \"Env.NETWORK_ACCESS\")) \"external\" }}  {{\/* Get the HTTPS_METHOD defined by containers w\/ the same vhost, falling back to \"redirect\" *\/}} {{ $https_method := or (first (groupByKeys $containers \"Env.HTTPS_METHOD\")) \"redirect\" }}  {{\/* Get the SSL_POLICY defined by containers w\/ the same vhost, falling back to \"Mozilla-Intermediate\" *\/}} {{ $ssl_policy := or (first (groupByKeys $containers \"Env.SSL_POLICY\")) \"Mozilla-Intermediate\" }}  {{\/* Get the HSTS defined by containers w\/ the same vhost, falling back to \"max-age=31536000\" *\/}} {{ $hsts := or (first (groupByKeys $containers \"Env.HSTS\")) \"max-age=31536000\" }}  {{\/* Get the VIRTUAL_ROOT By containers w\/ use fastcgi root *\/}} {{ $vhost_root := or (first (groupByKeys $containers \"Env.VIRTUAL_ROOT\")) \"\/var\/www\/public\" }}  {{\/* Get the first cert name defined by containers w\/ the same vhost *\/}} {{ $certName := (first (groupByKeys $containers \"Env.CERT_NAME\")) }}  {{\/* Get the best matching cert  by name for the vhost. *\/}} {{ $vhostCert := (closest (dir \"\/etc\/nginx\/certs\") (printf \"%s.crt\" $host))}}  {{\/* vhostCert is actually a filename so remove any suffixes since they are added later *\/}} {{ $vhostCert := trimSuffix \".crt\" $vhostCert }} {{ $vhostCert := trimSuffix \".key\" $vhostCert }}  {{\/* Use the cert specified on the container or fallback to the best vhost match *\/}} {{ $cert := (coalesce $certName $vhostCert) }}  {{ $is_https := (and (ne $https_method \"nohttps\") (ne $cert \"\") (or (and (exists (printf \"\/etc\/nginx\/certs\/letsencrypt\/live\/%s\/fullchain.pem\" $cert)) (exists (printf \"\/etc\/nginx\/certs\/letsencrypt\/live\/%s\/privkey.pem\" $cert))) (and (exists (printf \"\/etc\/nginx\/certs\/%s.crt\" $cert)) (exists (printf \"\/etc\/nginx\/certs\/%s.key\" $cert)))) ) }}  {{ if $is_https }}  {{ if eq $https_method \"redirect\" }} server {     server_name {{ $host }};     listen 80 {{ $default_server }};     {{ if $enable_ipv6 }}     listen [::]:80 {{ $default_server }};     {{ end }}     access_log \/var\/log\/nginx\/access.log vhost;     return 301 https:\/\/$host$request_uri; } {{ end }}  server {     server_name {{ $host }};     listen 443 ssl http2 {{ $default_server }};     {{ if $enable_ipv6 }}     listen [::]:443 ssl http2 {{ $default_server }};     {{ end }}     access_log \/var\/log\/nginx\/access.log vhost;      {{ if eq $network_tag \"internal\" }}     # Only allow traffic from internal clients     include \/etc\/nginx\/network_internal.conf;     {{ end }}      {{ if eq $ssl_policy \"Mozilla-Modern\" }}     ssl_protocols TLSv1.2;     ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';     {{ else if eq $ssl_policy \"Mozilla-Intermediate\" }}     ssl_protocols TLSv1 TLSv1.1 TLSv1.2;     ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:!DSS';     {{ else if eq $ssl_policy \"Mozilla-Old\" }}     ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;     ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:DES-CBC3-SHA:HIGH:SEED:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!RSAPSK:!aDH:!aECDH:!EDH-DSS-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA:!SRP';     {{ else if eq $ssl_policy \"AWS-TLS-1-2-2017-01\" }}     ssl_protocols TLSv1.2;     ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:AES128-GCM-SHA256:AES128-SHA256:AES256-GCM-SHA384:AES256-SHA256';     {{ else if eq $ssl_policy \"AWS-TLS-1-1-2017-01\" }}     ssl_protocols TLSv1.1 TLSv1.2;     ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:AES128-GCM-SHA256:AES128-SHA256:AES128-SHA:AES256-GCM-SHA384:AES256-SHA256:AES256-SHA';     {{ else if eq $ssl_policy \"AWS-2016-08\" }}     ssl_protocols TLSv1 TLSv1.1 TLSv1.2;     ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:AES128-GCM-SHA256:AES128-SHA256:AES128-SHA:AES256-GCM-SHA384:AES256-SHA256:AES256-SHA';     {{ else if eq $ssl_policy \"AWS-2015-05\" }}     ssl_protocols TLSv1 TLSv1.1 TLSv1.2;     ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:AES128-GCM-SHA256:AES128-SHA256:AES128-SHA:AES256-GCM-SHA384:AES256-SHA256:AES256-SHA:DES-CBC3-SHA';     {{ else if eq $ssl_policy \"AWS-2015-03\" }}     ssl_protocols TLSv1 TLSv1.1 TLSv1.2;     ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:AES128-GCM-SHA256:AES128-SHA256:AES128-SHA:AES256-GCM-SHA384:AES256-SHA256:AES256-SHA:DHE-DSS-AES128-SHA:DES-CBC3-SHA';     {{ else if eq $ssl_policy \"AWS-2015-02\" }}     ssl_protocols TLSv1 TLSv1.1 TLSv1.2;     ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:AES128-GCM-SHA256:AES128-SHA256:AES128-SHA:AES256-GCM-SHA384:AES256-SHA256:AES256-SHA:DHE-DSS-AES128-SHA';     {{ end }}      ssl_prefer_server_ciphers on;     ssl_session_timeout 5m;     ssl_session_cache shared:SSL:50m;     ssl_session_tickets off;          {{ if (and (exists (printf \"\/etc\/nginx\/certs\/letsencrypt\/live\/%s\/fullchain.pem\" $cert)) (exists (printf \"\/etc\/nginx\/certs\/letsencrypt\/live\/%s\/privkey.pem\" $cert))) }}     ssl_certificate \/etc\/nginx\/certs\/letsencrypt\/live\/{{ (printf \"%s\/fullchain.pem\" $cert) }};     ssl_certificate_key \/etc\/nginx\/certs\/letsencrypt\/live\/{{ (printf \"%s\/privkey.pem\" $cert) }};         {{ else if (and (exists (printf \"\/etc\/nginx\/certs\/%s.crt\" $cert)) (exists (printf \"\/etc\/nginx\/certs\/%s.key\" $cert))) }}     ssl_certificate \/etc\/nginx\/certs\/{{ (printf \"%s.crt\" $cert) }};     ssl_certificate_key \/etc\/nginx\/certs\/{{ (printf \"%s.key\" $cert) }};     {{ end }}      {{ if (exists (printf \"\/etc\/nginx\/certs\/%s.dhparam.pem\" $cert)) }}     ssl_dhparam {{ printf \"\/etc\/nginx\/certs\/%s.dhparam.pem\" $cert }};     {{ end }}      {{ if (exists (printf \"\/etc\/nginx\/certs\/%s.chain.pem\" $cert)) }}     ssl_stapling on;     ssl_stapling_verify on;     ssl_trusted_certificate {{ printf \"\/etc\/nginx\/certs\/%s.chain.pem\" $cert }};     {{ end }}      {{ if (and (ne $https_method \"noredirect\") (ne $hsts \"off\")) }}     add_header Strict-Transport-Security \"{{ trim $hsts }}\" always;     {{ end }}      {{ if (exists (printf \"\/etc\/nginx\/vhost.d\/%s\" $host)) }}     include {{ printf \"\/etc\/nginx\/vhost.d\/%s\" $host }};     {{ else if (exists \"\/etc\/nginx\/vhost.d\/default\") }}     include \/etc\/nginx\/vhost.d\/default;     {{ end }}      location \/ {         {{ if eq $proto \"uwsgi\" }}         include uwsgi_params;         uwsgi_pass {{ trim $proto }}:\/\/{{ trim $upstream_name }};         {{ else if eq $proto \"fastcgi\" }}         root   {{ trim $vhost_root }};         include fastcgi.conf;         fastcgi_pass {{ trim $upstream_name }};         {{ else }}         proxy_pass {{ trim $proto }}:\/\/{{ trim $upstream_name }};         {{ end }}          {{ if (exists (printf \"\/etc\/nginx\/htpasswd\/%s\" $host)) }}         auth_basic  \"Restricted {{ $host }}\";         auth_basic_user_file    {{ (printf \"\/etc\/nginx\/htpasswd\/%s\" $host) }};         {{ end }}         {{ if (exists (printf \"\/etc\/nginx\/vhost.d\/%s_location\" $host)) }}         include {{ printf \"\/etc\/nginx\/vhost.d\/%s_location\" $host}};         {{ else if (exists \"\/etc\/nginx\/vhost.d\/default_location\") }}         include \/etc\/nginx\/vhost.d\/default_location;         {{ end }}     } }  {{ end }}  {{ if or (not $is_https) (eq $https_method \"noredirect\") }}  server {     server_name {{ $host }};     listen 80 {{ $default_server }};     {{ if $enable_ipv6 }}     listen [::]:80 {{ $default_server }};     {{ end }}     access_log \/var\/log\/nginx\/access.log vhost;      {{ if eq $network_tag \"internal\" }}     # Only allow traffic from internal clients     include \/etc\/nginx\/network_internal.conf;     {{ end }}      {{ if (exists (printf \"\/etc\/nginx\/vhost.d\/%s\" $host)) }}     include {{ printf \"\/etc\/nginx\/vhost.d\/%s\" $host }};     {{ else if (exists \"\/etc\/nginx\/vhost.d\/default\") }}     include \/etc\/nginx\/vhost.d\/default;     {{ end }}      location \/ {         {{ if eq $proto \"uwsgi\" }}         include uwsgi_params;         uwsgi_pass {{ trim $proto }}:\/\/{{ trim $upstream_name }};         {{ else if eq $proto \"fastcgi\" }}         root   {{ trim $vhost_root }};         include fastcgi.conf;         fastcgi_pass {{ trim $upstream_name }};         {{ else }}         proxy_pass {{ trim $proto }}:\/\/{{ trim $upstream_name }};         {{ end }}         {{ if (exists (printf \"\/etc\/nginx\/htpasswd\/%s\" $host)) }}         auth_basic  \"Restricted {{ $host }}\";         auth_basic_user_file    {{ (printf \"\/etc\/nginx\/htpasswd\/%s\" $host) }};         {{ end }}         {{ if (exists (printf \"\/etc\/nginx\/vhost.d\/%s_location\" $host)) }}         include {{ printf \"\/etc\/nginx\/vhost.d\/%s_location\" $host}};         {{ else if (exists \"\/etc\/nginx\/vhost.d\/default_location\") }}         include \/etc\/nginx\/vhost.d\/default_location;         {{ end }}     } }  {{ if (and (not $is_https) (exists \"\/etc\/nginx\/certs\/default.crt\") (exists \"\/etc\/nginx\/certs\/default.key\")) }} server {     server_name {{ $host }};     listen 443 ssl http2 {{ $default_server }};     {{ if $enable_ipv6 }}     listen [::]:443 ssl http2 {{ $default_server }};     {{ end }}     access_log \/var\/log\/nginx\/access.log vhost;     return 500;      ssl_certificate \/etc\/nginx\/certs\/default.crt;     ssl_certificate_key \/etc\/nginx\/certs\/default.key; } {{ end }}  {{ end }} {{ end }}<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p>\u0412\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e nginx \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043a\u0430\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0442\u0438\u043f\u0430 <code>\/etc\/nginx\/certs\/%s.crt<\/code> \u0438 <code>\/etc\/nginx\/certs\/%s.pem<\/code>, \u0433\u0434\u0435 %s \u2014 \u0438\u043c\u044f \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430 (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u2014 \u0438\u043c\u044f \u0445\u043e\u0441\u0442\u0430, \u043d\u043e \u0435\u0433\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435).<\/p>\n<p>  <\/p>\n<p>\u0410\u0433\u0435\u043d\u0442 \u0436\u0435 \u0445\u0440\u0430\u043d\u0438\u0442 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0432 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432 <code>\/etc\/nginx\/certs\/letsencrypt\/live\/%s\/{fullchain.pem, privkey.pem}<\/code>, \u0438 \u043f\u043e\u0442\u043e\u043c\u0443 \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043c\u0435\u0441\u0442\u0430\u0445 \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u044b \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u0434\u043b\u044f \u0442\u0430\u043a\u0438\u0445 \u0438\u043c\u0451\u043d \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432:<\/p>\n<p>  <\/p>\n<pre><code>{{ $is_https := (and   (ne $https_method \"nohttps\")   (ne $cert \"\")   (or     (and       (exists (printf \"\/etc\/nginx\/certs\/letsencrypt\/live\/%s\/fullchain.pem\" $cert))       (exists (printf \"\/etc\/nginx\/certs\/letsencrypt\/live\/%s\/privkey.pem\" $cert))     )     (and       (exists (printf \"\/etc\/nginx\/certs\/%s.crt\" $cert))       (exists (printf \"\/etc\/nginx\/certs\/%s.key\" $cert))     )   ) ) }}<\/code><\/pre>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0430\u0433\u0435\u043d\u0442\u0443, \u0434\u043b\u044f \u043a\u0430\u043a\u043e\u0433\u043e \u0434\u043e\u043c\u0435\u043d\u0430 \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0432 \u0444\u0430\u0439\u043b\u0435 <code>domains.conf<\/code>.<\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\/tank0\/docker\/services\/nginx-proxy\/certs\/letsencrypt\/domains.conf<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>*.NAS.cloudns.cc NAS.cloudns.cc<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p>\u0418 \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439 \u043d\u044e\u0430\u043d\u0441. \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u0432\u044b \u043c\u043e\u0433\u043b\u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u043f\u0440\u0438\u0435\u043c\u043b\u0435\u043c\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0432 \u043e\u0431\u043b\u0430\u043a\u043e, \u0438 \u0438\u0445 \u043d\u0435 \u0440\u0435\u0437\u0430\u043b \u043f\u0440\u043e\u043a\u0441\u0438, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <code>client_max_body_size<\/code> \u0445\u043e\u0442\u044f \u0431\u044b \u0433\u0438\u0433\u0430\u0431\u0430\u0439\u0442 \u0432 20, \u043a\u0430\u043a \u044d\u0442\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u043d\u0438\u0436\u0435.<\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\/tank0\/docker\/services\/nginx-proxy\/local-config\/max_upload_size.conf<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>client_max_body_size 20G;<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0437\u0430\u043a\u043e\u043d\u0447\u0435\u043d\u0430, \u043f\u043e\u0440\u0430 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440:<\/p>\n<p>  <\/p>\n<pre><code>docker-compose up<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c (\u0432\u0441\u0451 \u0441\u043a\u0430\u0447\u0430\u043b\u043e\u0441\u044c \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u043e\u0441\u044c), \u043d\u0430\u0436\u043c\u0438\u0442\u0435 Ctrl+C \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0432 \u043e\u0442\u0432\u044f\u0437\u0430\u043d\u043d\u043e\u043c \u043e\u0442 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u0440\u0435\u0436\u0438\u043c\u0435:<\/p>\n<p>  <\/p>\n<pre><code>docker-compose up -d<\/code><\/pre>\n<p>  <\/p>\n<h3 id=\"nastroyka-konteynera-s-testovym-serverom\">\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u0441 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c<\/h3>\n<p>  <\/p>\n<p>\u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u2014 \u044d\u0442\u043e \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 nginx, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u043f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044f. \u041d\u0443\u0436\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u043c\u043e\u0433 \u043b\u0435\u0433\u043a\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c\u0441\u044f \u0438 \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f, \u0430 \u0435\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u0435\u0440\u0435\u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b\u0441\u044f.<br \/>  \u041e\u043d \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0432\u044b\u043c \u0438 \u043f\u043e\u043a\u0430 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0432 \u0441\u043e\u0441\u0442\u0430\u0432\u0435 NAS.<\/p>\n<p>  <\/p>\n<p>\u0424\u0430\u0439\u043b\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f <a href=\"https:\/\/github.com\/artiomn\/NAS\/tree\/master\/docker\/services\/test_nginx\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/p>\n<p>  <\/p>\n<p>\u0412\u043e\u0442 \u0435\u0433\u043e docker-compose \u0444\u0430\u0439\u043b:<\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\/tank0\/docker\/services\/test_nginx\/docker-compose.yml<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>version: '2'  networks:   docker0:     external:       name: docker0  services:   nginx-local:     restart: always     image: nginx:alpine     expose:       - 80       - 443     environment:       - \"VIRTUAL_HOST=test.NAS.cloudns.cc\"       - \"VIRTUAL_PROTO=http\"       - \"VIRTUAL_PORT=80\"       - CERT_NAME=NAS.cloudns.cc     networks:       - docker0<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p>\u041a\u0430\u0436\u0434\u043e\u043c\u0443 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0443 \u0441\u043e \u0441\u043b\u0443\u0436\u0431\u043e\u0439 \u043d\u0443\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:<\/p>\n<p>  <\/p>\n<ul>\n<li><code>docker0<\/code> \u2014 \u0432\u043d\u0435\u0448\u043d\u044f\u044f \u0441\u0435\u0442\u044c. \u042d\u0442\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435.<\/li>\n<li><a href=\"https:\/\/docs.docker.com\/compose\/compose-file\/compose-file-v2\/#expose\"><code>expose<\/code><\/a> \u2014 \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u0440\u0442\u044b \u0432 \u0441\u0435\u0442\u044c, \u0433\u0434\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440. \u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u043f\u043e\u0440\u0442 80 \u0434\u043b\u044f \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 HTTP \u0438 443 \u0434\u043b\u044f \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 HTTPS.<\/li>\n<li><code>VIRTUAL_HOST=test.NAS.cloudns.cc<\/code> \u2014 \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0443\u043a\u0430\u0437\u0430\u043d \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0445\u043e\u0441\u0442, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 nginx-reverse-proxy \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u044d\u0442\u043e\u0442 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440.<\/li>\n<li><code>VIRTUAL_PROTO=http<\/code> \u2014 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 nginx-reverse-proxy \u0431\u0443\u0434\u0435\u0442 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441 \u0434\u0430\u043d\u043d\u044b\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u043c. \u0415\u0441\u043b\u0438 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430 \u043d\u0435\u0442, \u044d\u0442\u043e HTTP.<\/li>\n<li><code>VIRTUAL_PORT=80<\/code> \u2014 \u043f\u043e\u0440\u0442 \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f nginx-reverse-proxy.<\/li>\n<li><code>CERT_NAME=NAS.cloudns.cc<\/code> \u2014 \u0438\u043c\u044f \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0443 \u0432\u0441\u0435\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u043e\u0434\u0438\u043d, \u043f\u043e\u0442\u043e\u043c\u0443 \u0438\u043c\u044f \u0432\u0435\u0437\u0434\u0435 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e\u0435. NAS \u2014 \u0438\u043c\u044f DNS \u0437\u043e\u043d\u044b.<\/li>\n<li><code>networks<\/code> \u2014 \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0435\u043a\u0446\u0438\u0438 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0444\u0440\u043e\u043d\u0442\u044d\u043d\u0434\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0431\u0449\u0430\u044e\u0442\u0441\u044f \u0441 nginx-reverse-proxy \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u043d\u0430 \u0441\u0435\u0442\u044c <code>docker0<\/code>.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d, \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0443\u0436\u043d\u043e \u0435\u0433\u043e \u043f\u043e\u0434\u043d\u044f\u0442\u044c. \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0432 <code>docker-compose up<\/code>, \u0437\u0430\u0439\u0434\u0438\u0442\u0435 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 <code>test.NAS.cloudns.cc<\/code>.<\/p>\n<p>  <\/p>\n<p>\u041d\u0430 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0432\u044b\u0432\u0435\u0434\u0435\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">$ docker-compose up  Creating testnginx_nginx-local_1 Attaching to testnginx_nginx-local_1 nginx-local_1  | 172.22.0.5 - - [29\/Jul\/2018:15:32:02 +0000] \"GET \/ HTTP\/1.1\" 200 612 \"-\" \"Mozilla\/5.0 (X11; Linux x86_64) AppleWebKit\/537 (KHTML, like Gecko) Chrome\/67.0 Safari\/537\" \"192.168.2.3\" nginx-local_1  | 2018\/07\/29 15:32:02 [error] 8#8: *2 open() \"\/usr\/share\/nginx\/html\/favicon.ico\" failed (2: No such file or directory), client: 172.22.0.5, server: localhost, request: \"GET \/favicon.ico HTTP\/1.1\", host: \"test.NAS.cloudns.cc\", referrer: \"https:\/\/test.NAS.cloudns.cc\/\" nginx-local_1  | 172.22.0.5 - - [29\/Jul\/2018:15:32:02 +0000] \"GET \/favicon.ico HTTP\/1.1\" 404 572 \"https:\/\/test.NAS.cloudns.cc\/\" \"Mozilla\/5.0 (X11; Linux x86_64) AppleWebKit\/537 (KHTML, like Gecko) Chrome\/67.0 Safari\/537\" \"192.168.2.3\"<\/code><\/pre>\n<p>  <\/p>\n<p>\u0410 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043f\u043e\u043a\u0430\u0436\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443:<\/p>\n<p>  <\/p>\n<p><a href=\"https:\/\/habrastorage.org\/webt\/wj\/-v\/q3\/wj-vq3xwns34rsn_tr8zvycwiei.png\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/wj\/-v\/q3\/wj-vq3xwns34rsn_tr8zvycwiei.png\" alt=\"\u0417\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0439 Nginx\"><\/a><\/p>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438, \u0432 \u0438\u0442\u043e\u0433\u0435, \u0443 \u0432\u0430\u0441 \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430, \u043a\u0430\u043a \u043d\u0430 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0435 \u0432\u044b\u0448\u0435, \u043c\u043e\u0433\u0443 \u0432\u0430\u0441 \u043f\u043e\u0437\u0434\u0440\u0430\u0432\u0438\u0442\u044c: \u0432\u0441\u0451 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043e \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e.<\/p>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u044d\u0442\u043e\u0442 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043d\u0443\u0436\u0435\u043d, \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u043f\u043e Ctrl+C, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0432 \u0437\u0430\u0442\u0435\u043c <code>docker-compose down<\/code>.<\/p>\n<p>  <\/p>\n<h3 id=\"nastroyka-konteynera-s-local-rpoxy\">\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u0441 local-rpoxy<\/h3>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0440\u043e\u043a\u0441\u0438, \u043d\u0435\u043f\u043b\u043e\u0445\u043e \u0431\u044b \u043f\u043e\u0434\u043d\u044f\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0441 nginx-default \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c, \u043f\u0440\u043e\u043a\u0441\u0438\u0440\u0443\u044e\u0449\u0438\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0434\u043b\u044f \u0445\u043e\u0441\u0442\u0430 nas, omv \u0438 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u0447\u0435\u0440\u0435\u0437 \u0432\u043d\u0435\u0448\u043d\u044e\u044e \u0441\u0435\u0442\u044c \u043d\u0430 \u043f\u043e\u0440\u0442\u044b 10080 \u0438 10443 \u041e\u0421 \u0445\u043e\u0441\u0442\u043e\u0432\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b.<\/p>\n<p>  <\/p>\n<p>\u0424\u0430\u0439\u043b\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f <a href=\"https:\/\/github.com\/artiomn\/NAS\/tree\/master\/docker\/services\/nginx-local\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\/tank0\/docker\/services\/nginx-local\/docker-compose.yml<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">version: '2'  networks:   docker0:     external:       name: docker0  services:   nginx-local:     restart: always     image: nginx:alpine     expose:       - 80       - 443     environment:       - \"VIRTUAL_HOST=NAS.cloudns.cc,nas,nas.*,www.*,omv.*,nas-controller.nas\"       - \"VIRTUAL_PROTO=http\"       - \"VIRTUAL_PORT=80\"       - CERT_NAME=NAS.cloudns.cc     volumes:       - .\/local-config:\/etc\/nginx\/conf.d     networks:       - docker0<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p>\u0421 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439 docker-compose \u0432\u0441\u0451 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0438 \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0435\u0451 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u044f \u043d\u0435 \u0431\u0443\u0434\u0443.<br \/>  \u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435, \u0447\u0442\u043e \u0445\u043e\u0447\u0443 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u044d\u0442\u043e \u0442\u043e, \u0447\u0442\u043e \u043e\u0434\u0438\u043d \u0438\u0437 \u0434\u043e\u043c\u0435\u043d\u043e\u0432 <code>NAS.cloudns.cc<\/code>. \u042d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0438 \u043a NAS \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e \u0438\u043c\u0435\u043d\u0438 DNS \u0437\u043e\u043d\u044b, \u0437\u0430\u043f\u0440\u043e\u0441 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u043b\u0441\u044f \u043d\u0430 \u0445\u043e\u0441\u0442.<\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\/tank0\/docker\/services\/nginx-local\/local-config\/default.conf<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code># If we receive X-Forwarded-Proto, pass it through; otherwise, pass along the # scheme used to connect to this server map $http_x_forwarded_proto $proxy_x_forwarded_proto {   default $http_x_forwarded_proto;   ''      $scheme; }  # If we receive X-Forwarded-Port, pass it through; otherwise, pass along the # server port the client connected to map $http_x_forwarded_port $proxy_x_forwarded_port {   default $http_x_forwarded_port;   ''      $server_port; }  # Set appropriate X-Forwarded-Ssl header map $scheme $proxy_x_forwarded_ssl {   default off;   https on; }  access_log on; error_log on; # HTTP 1.1 support proxy_http_version 1.1; proxy_buffering off; proxy_set_header Host $http_host; proxy_set_header Upgrade $http_upgrade; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $proxy_x_forwarded_proto; proxy_set_header X-Forwarded-Ssl $proxy_x_forwarded_ssl; proxy_set_header X-Forwarded-Port $proxy_x_forwarded_port;  # Mitigate httpoxy attack (see README for details) proxy_set_header Proxy \"\";  server {         server_name _; # This is just an invalid value which will never trigger on a real hostname.         listen 80;         return 503; }  server {         server_name www.* nas.* omv.* \"\";          listen 80;         location \/ {                 proxy_pass https:\/\/172.21.0.1:10443\/;         } }  # nas-controller server {         server_name nas-controller.nas;          listen 80 ;         location \/ {                 proxy_pass https:\/\/nas-controller\/;         } }<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<ul>\n<li><code>172.21.0.1<\/code> \u2014 \u0441\u0435\u0442\u044c \u0445\u043e\u0441\u0442\u0430. \u041f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 \u043f\u043e\u0440\u0442 443, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0440\u0430\u043d\u044c\u0448\u0435 \u0431\u044b\u043b \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0438 OMV \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e HTTPS. \u041f\u0443\u0441\u0442\u044c \u0442\u0430\u043a\u0436\u0435 \u0438 \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u0434\u0430\u0436\u0435 \u0434\u043b\u044f \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e \u043e\u0431\u0449\u0435\u043d\u0438\u044f.<\/li>\n<li><code>https:\/\/nas-controller\/<\/code> \u2014 \u043f\u043e-\u0438\u0434\u0435\u0435, \u044d\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 IPMI, \u0438 \u0435\u0441\u043b\u0438 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u043a nas, \u043a\u0430\u043a \u043a nas-controller.nas, \u0437\u0430\u043f\u0440\u043e\u0441 \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d \u043d\u0430 \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0430\u0434\u0440\u0435\u0441 nas-controller. \u041d\u0435 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e.<\/li>\n<\/ul>\n<p>  <\/p>\n<h2>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 LDAP<\/h2>\n<p>  <\/p>\n<h3 id=\"nastroyka-ldap-servera\">\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 LDAP-\u0441\u0435\u0440\u0432\u0435\u0440\u0430<\/h3>\n<p>  <\/p>\n<p><a href=\"https:\/\/ru.wikipedia.org\/wiki\/LDAP\">LDAP-\u0441\u0435\u0440\u0432\u0435\u0440<\/a> \u2014 \u044d\u0442\u043e \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c\u0438.<br \/>  \u041e\u043d \u0442\u0430\u043a\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432\u043d\u0443\u0442\u0440\u0438 Docker \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430. \u0412 \u043a\u043e\u0442\u043e\u0440\u043e\u043c, \u043f\u043e\u043c\u0438\u043c\u043e \u043d\u0435\u0433\u043e, \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u044b \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b \u0434\u043b\u044f \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0441\u043c\u0435\u043d\u044b \u043f\u0430\u0440\u043e\u043b\u0435\u0439.<\/p>\n<p>  <\/p>\n<p>\u0424\u0430\u0439\u043b\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0438 LDIF-\u0444\u0430\u0439\u043b\u044b \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f <a href=\"https:\/\/github.com\/artiomn\/NAS\/tree\/master\/docker\/services\/ldap\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\/tank0\/docker\/services\/ldap\/docker-compose.yml<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>version: \"2\"  networks:   ldap:   docker0:     external:       name: docker0  services:   open-ldap:     image: \"osixia\/openldap:1.2.0\"     hostname: \"open-ldap\"     restart: always     environment:       - \"LDAP_ORGANISATION=NAS\"       - \"LDAP_DOMAIN=nas.nas\"       - \"LDAP_ADMIN_PASSWORD=ADMIN_PASSWORD\"       - \"LDAP_CONFIG_PASSWORD=CONFIG_PASSWORD\"       - \"LDAP_TLS=true\"       - \"LDAP_TLS_ENFORCE=false\"       - \"LDAP_TLS_CRT_FILENAME=ldap_server.crt\"       - \"LDAP_TLS_KEY_FILENAME=ldap_server.key\"       - \"LDAP_TLS_CA_CRT_FILENAME=ldap_server.crt\"     volumes:       - .\/certs:\/container\/service\/slapd\/assets\/certs       - .\/ldap_data\/var\/lib:\/var\/lib\/ldap       - .\/ldap_data\/etc\/ldap\/slapd.d:\/etc\/ldap\/slapd.d     networks:       - ldap     ports:       - 172.21.0.1:389:389       - 172.21.0.1::636:636    phpldapadmin:     image: \"osixia\/phpldapadmin:0.7.1\"     hostname: \"nas.nas\"     restart: always     networks:       - ldap       - docker0     expose:       - 443     links:       - open-ldap:open-ldap-server     volumes:       - .\/certs:\/container\/service\/phpldapadmin\/assets\/apache2\/certs     environment:       - VIRTUAL_HOST=ldap.*       - VIRTUAL_PORT=443       - VIRTUAL_PROTO=https       - CERT_NAME=NAS.cloudns.cc        - \"PHPLDAPADMIN_LDAP_HOSTS=open-ldap-server\"       #- \"PHPLDAPADMIN_HTTPS=false\"       - \"PHPLDAPADMIN_HTTPS_CRT_FILENAME=certs\/ldap_server.crt\"       - \"PHPLDAPADMIN_HTTPS_KEY_FILENAME=private\/ldap_server.key\"       - \"PHPLDAPADMIN_HTTPS_CA_CRT_FILENAME=certs\/ldap_server.crt\"       - \"PHPLDAPADMIN_LDAP_CLIENT_TLS_REQCERT=allow\"    ldap-ssp:     image: openfrontier\/ldap-ssp:https     volumes:       #- .\/ssp\/mods-enabled\/ssl.conf:\/etc\/apache2\/mods-enabled\/ssl.conf       - \/etc\/ssl\/certs\/ssl-cert-snakeoil.pem:\/etc\/ssl\/certs\/ssl-cert-snakeoil.pem       - \/etc\/ssl\/private\/ssl-cert-snakeoil.key:\/etc\/ssl\/private\/ssl-cert-snakeoil.key     restart: always     networks:       - ldap       - docker0     expose:       - 80     links:       - open-ldap:open-ldap-server     environment:       - VIRTUAL_HOST=ssp.*       - VIRTUAL_PORT=80       - VIRTUAL_PROTO=http       - CERT_NAME=NAS.cloudns.cc        - \"LDAP_URL=ldap:\/\/open-ldap-server:389\"       - \"LDAP_BINDDN=cn=admin,dc=nas,dc=nas\"       - \"LDAP_BINDPW=ADMIN_PASSWORD\"       - \"LDAP_BASE=ou=users,dc=nas,dc=nas\"       - \"MAIL_FROM=admin@nas.nas\"       - \"PWD_MIN_LENGTH=8\"       - \"PWD_MIN_LOWER=3\"       - \"PWD_MIN_DIGIT=2\"       - \"SMTP_HOST=\"       - \"SMTP_USER=\"       - \"SMTP_PASS=\"<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p>\u0412 \u043a\u043e\u043d\u0444\u0438\u0433\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0442\u0440\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u0430:<\/p>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/osixia\/docker-openldap\"><code>open-ldap<\/code><\/a> \u2014 LDAP-\u0441\u0435\u0440\u0432\u0435\u0440.<\/li>\n<li><a href=\"https:\/\/github.com\/osixia\/docker-phpLDAPadmin\"><code>phpldapadmin<\/code><\/a> \u2014 WEB-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u0435\u0433\u043e \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0427\u0435\u0440\u0435\u0437 \u043d\u0435\u0433\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0438 \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, \u0433\u0440\u0443\u043f\u043f\u044b \u0438 \u0442.\u043f..<\/li>\n<li><a href=\"https:\/\/github.com\/openfrontier\/docker-ldap-ssp\"><code>ldap-ssp<\/code><\/a> \u2014 WEB-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u0441\u043c\u0435\u043d\u044b \u043f\u0430\u0440\u043e\u043b\u0435\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c\u0438.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>LDAP-\u0441\u0435\u0440\u0432\u0435\u0440 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u0434\u0430\u044e\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f:<\/p>\n<p>  <\/p>\n<ul>\n<li><code>LDAP_ORGANISATION=NAS<\/code> \u2014 \u0438\u043c\u044f \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438. \u041c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u043c.<\/li>\n<li><code>LDAP_DOMAIN=nas.nas<\/code> \u2014 \u0434\u043e\u043c\u0435\u043d. \u0422\u043e\u0436\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0439. \u0423\u043a\u0430\u0437\u0430\u0442\u044c \u043b\u0443\u0447\u0448\u0435 \u0442\u043e\u0442 \u0436\u0435, \u0447\u0442\u043e \u0438 \u0434\u043e\u043c\u0435\u043d\u043d\u043e\u0435 \u0438\u043c\u044f.<\/li>\n<li><code>LDAP_ADMIN_PASSWORD=ADMIN_PASSWORD<\/code> \u2014 \u043f\u0430\u0440\u043e\u043b\u044c \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430.<\/li>\n<li><code>LDAP_CONFIG_PASSWORD=CONFIG_PASSWORD<\/code> \u2014 \u043f\u0430\u0440\u043e\u043b\u044c \u0434\u043b\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041f\u043e-\u0438\u0434\u0435\u0435, \u043d\u0435 \u043c\u0435\u0448\u0430\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0435\u0449\u0451 \u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f &#171;\u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f&#187;, \u043d\u043e \u043f\u043e\u0442\u043e\u043c.<\/p>\n<p>  <\/p>\n<p>\u0422\u043e\u043c\u0430:<\/p>\n<p>  <\/p>\n<ul>\n<li><code>\/container\/service\/slapd\/assets\/certs<\/code> \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0451\u043d \u0432 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 <code>certs<\/code> \u2014 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b. \u0421\u0435\u0439\u0447\u0430\u0441 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f.<\/li>\n<li><code>.\/ldap_data\/<\/code> \u2014 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433, \u043f\u043e\u0434\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u0440\u043e\u0431\u0440\u043e\u0448\u0435\u043d\u044b \u0432 \u0434\u0432\u0430 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432. \u0422\u0443\u0442 LDAP \u0445\u0440\u0430\u043d\u0438\u0442 \u0441\u0432\u043e\u044e \u0431\u0430\u0437\u0443.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0421\u0435\u0440\u0432\u0435\u0440 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0441\u0435\u0442\u0438 <code>ldap<\/code>, \u043d\u043e \u0435\u0433\u043e \u043f\u043e\u0440\u0442\u044b 389 (\u043d\u0435\u0437\u0430\u0449\u0438\u0449\u0451\u043d\u043d\u044b\u0439 LDAP) \u0438 636 (LDAP \u043f\u043e SSL, \u043f\u043e\u043a\u0430 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439) \u043f\u0440\u043e\u0431\u0440\u043e\u0448\u0435\u043d\u044b \u0432 \u0441\u0435\u0442\u044c \u0445\u043e\u0441\u0442\u0430.<\/p>\n<p>  <\/p>\n<p>PhpLdapAdmin \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u0434\u0432\u0443\u0445 \u0441\u0435\u0442\u044f\u0445: \u043e\u043d \u043e\u0431\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443 LDAP \u0432 \u0441\u0435\u0442\u0438 <code>ldap<\/code> \u0438 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u0440\u0442 443 \u0432 \u0441\u0435\u0442\u0438 <code>docker0<\/code>, \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043a \u043d\u0435\u043c\u0443 \u043c\u043e\u0433 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c\u0441\u044f nginx-reverse-proxy.<\/p>\n<p>  <\/p>\n<p>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438:<\/p>\n<p>  <\/p>\n<ul>\n<li><code>VIRTUAL_HOST=ldap.*<\/code> \u2014 \u0445\u043e\u0441\u0442, \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 nginx-reverse-proxy \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440.<\/li>\n<li><code>VIRTUAL_PORT=443<\/code> \u2014 \u043f\u043e\u0440\u0442 \u0434\u043b\u044f nginx-reverse-proxy.<\/li>\n<li><code>VIRTUAL_PROTO=https<\/code> \u2014 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0434\u043b\u044f nginx-reverse-proxy.<\/li>\n<li><code>CERT_NAME=NAS.cloudns.cc<\/code> \u2014 \u0438\u043c\u044f \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430, \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e\u0435 \u0434\u043b\u044f \u0432\u0441\u0435\u0445.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0411\u043b\u043e\u043a \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 SSL \u0438 \u0441\u0435\u0439\u0447\u0430\u0441 \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u0435\u043d.<\/p>\n<p>  <\/p>\n<p>SSP \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043f\u043e HTTP \u0438 \u0442\u043e\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u0434\u0432\u0443\u0445 \u0441\u0435\u0442\u044f\u0445.<br \/>  \u0422\u043e\u043c\u0430, \u0432 \u044d\u0442\u043e\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f, \u0438 \u043f\u0440\u043e\u0431\u0440\u043e\u0448\u0435\u043d\u043d\u044b\u0439 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u043e\u0441\u0442\u0430\u043b\u0441\u044f \u043e\u0442 \u0441\u0442\u0430\u0440\u044b\u0445 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u043e\u0432.<\/p>\n<p>  <\/p>\n<p>\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u2014 \u044d\u0442\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043d\u0430 \u0434\u043b\u0438\u043d\u0443 \u043f\u0430\u0440\u043e\u043b\u044f \u0438 \u0443\u0447\u0451\u0442\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443 LDAP.<\/p>\n<p>  <\/p>\n<ul>\n<li><code>LDAP_URL=ldap:\/\/open-ldap-server:389<\/code> \u2014 \u0430\u0434\u0440\u0435\u0441 \u0438 \u043f\u043e\u0440\u0442 LDAP \u0441\u0435\u0440\u0432\u0435\u0440\u0430 (\u0441\u043c. \u0441\u0435\u043a\u0446\u0438\u044e <code>links<\/code>).<\/li>\n<li><code>LDAP_BINDDN=cn=admin,dc=nas,dc=nas<\/code> \u2014 \u043b\u043e\u0433\u0438\u043d \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u0438 \u0434\u043e\u043c\u0435\u043d \u0434\u043b\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438.<\/li>\n<li><code>LDAP_BINDPW=ADMIN_PASSWORD<\/code> \u2014 \u043f\u0430\u0440\u043e\u043b\u044c \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0442\u044c \u0441 \u043f\u0430\u0440\u043e\u043b\u0435\u043c, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c \u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 open-ldap.<\/li>\n<li><code>LDAP_BASE=ou=users,dc=nas,dc=nas<\/code> \u2014 \u044d\u0442\u043e \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u043f\u0443\u0442\u044c, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u0441\u044f \u0443\u0447\u0451\u0442\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u043d\u0430 \u0445\u043e\u0441\u0442\u043e\u0432\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u0443\u0442\u0438\u043b\u0438\u0442\u044b \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 LDAP \u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0439\u0442\u0435 LDAP \u043a\u0430\u0442\u0430\u043b\u043e\u0433:<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">apt-get install ldap-utils ldapadd -x -H ldap:\/\/172.21.0.1  -D \"cn=admin,dc=nas,dc=nas\" -W -f ldifs\/inititialize_ldap.ldif ldapadd -x -H ldap:\/\/172.21.0.1  -D \"cn=admin,dc=nas,dc=nas\" -W -f ldifs\/base.ldif ldapadd -x -H ldap:\/\/172.21.0.1  -D \"cn=admin,cn=config\" -W -f ldifs\/gitlab_attr.ldif<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412 <code>gitlab_attr.ldif<\/code> \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0430\u0442\u0440\u0438\u0431\u0443\u0442, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 Gitlab (\u043e \u043d\u0451\u043c \u043f\u043e\u0442\u043e\u043c) \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.<br \/>  \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438.<\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438 LDAP \u0441\u0435\u0440\u0432\u0435\u0440\u0430<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">$ ldapsearch -x -H ldap:\/\/172.21.0.1 -b dc=nas,dc=nas -D \"cn=admin,dc=nas,dc=nas\" -W  Enter LDAP Password:  # extended LDIF # # LDAPv3 # base &lt;dc=nas,dc=nas&gt; with scope subtree # filter: (objectclass=*) # requesting: ALL #  # nas.nas dn: dc=nas,dc=nas objectClass: top objectClass: dcObject objectClass: organization o: NAS dc: nas  # admin, nas.nas dn: cn=admin,dc=nas,dc=nas objectClass: simpleSecurityObject objectClass: organizationalRole cn: admin description: LDAP administrator ...  # ldap_users, groups, nas.nas dn: cn=ldap_users,ou=groups,dc=nas,dc=nas cn: ldap_users gidNumber: 500 objectClass: posixGroup objectClass: top  # search result search: 2 result: 0 Success  # numResponses: 12 # numEntries: 11<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 LDAP \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0437\u0430\u043a\u043e\u043d\u0447\u0435\u043d\u0430. \u0423\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0447\u0435\u0440\u0435\u0437 WEB-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441.<\/p>\n<p>  <\/p>\n<h3 id=\"nastroyka-omv-dlya-vhoda-po-ldap\">\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 OMV \u0434\u043b\u044f \u0432\u0445\u043e\u0434\u0430 \u043f\u043e LDAP<\/h3>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 LDAP \u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, OMV \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u043d\u0438\u043c \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e: \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0435 \u0445\u043e\u0441\u0442, \u043f\u043e\u0440\u0442, \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438, \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u2014 \u0430\u043a\u043a\u0430\u0443\u043d\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.<\/p>\n<p>  <\/p>\n<p>LDAP \u043f\u043b\u0430\u0433\u0438\u043d \u0432\u044b \u0443\u0436\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c.<\/p>\n<p>  <\/p>\n<p>\u0412\u0441\u0451 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u043d\u0430 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0435:<\/p>\n<p>  <\/p>\n<p><a href=\"https:\/\/habrastorage.org\/webt\/0e\/fq\/yp\/0efqypb4eevkfvm1dx5hccpxcae.png\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/0e\/fq\/yp\/0efqypb4eevkfvm1dx5hccpxcae.png\" alt=\"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 OMV \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 LDAP\"><\/a><\/p>\n<p>  <\/p>\n<h2>\u0412\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0441 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u043c \u043f\u0438\u0442\u0430\u043d\u0438\u044f<\/h2>\n<p>  <\/p>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u0442\u0435 \u0418\u0411\u041f \u043f\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u0434\u0451\u0442 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043d\u0438\u043c, \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u0435\u0433\u043e \u043a NAS \u043f\u043e USB.<br \/>  \u041f\u043b\u0430\u0433\u0438\u043d \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0418\u0411\u041f \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0440\u0430\u043d\u0435\u0435.<br \/>  \u0422\u0435\u043f\u0435\u0440\u044c \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c NUT \u0447\u0435\u0440\u0435\u0437 GUI OMV.<br \/>  \u0417\u0430\u0439\u0434\u0438\u0442\u0435 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 <em>&#171;\u0421\u0435\u0440\u0432\u0438\u0441\u044b-&gt;\u0418\u0411\u041f&#187;<\/em>, \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u0418\u0411\u041f, \u0432 \u043f\u043e\u043b\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u043b\u044e\u0431\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0443\u044e \u0418\u0411\u041f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 &#171;eaton&#187;.<\/p>\n<p>  <\/p>\n<p>\u0412 \u043f\u043e\u043b\u0435 <em>&#171;\u0414\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u043e\u0432&#187;<\/em> \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<p>  <\/p>\n<pre><code>driver = usbhid-ups port = auto desc = \"Eaton 9130 700 VA\" vendorid = 0463 pollinterval = 10<\/code><\/pre>\n<p>  <\/p>\n<ul>\n<li><code>driver = usbhid-ups<\/code> \u2014 \u0418\u0411\u041f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d \u043f\u043e USB, \u043f\u043e\u0442\u043e\u043c\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u0440\u0430\u0439\u0432\u0435\u0440 USB HID.<\/li>\n<li><code>vendorid<\/code> \u2014 \u044d\u0442\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044f \u0418\u0411\u041f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 <code>lsusb<\/code>.<\/li>\n<li><code>pollinterval<\/code> \u2014 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u043e\u043f\u0440\u043e\u0441\u0430 \u0418\u0411\u041f \u0432 c\u0435\u043a\u0443\u043d\u0434\u0430\u0445.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432 <a href=\"https:\/\/networkupstools.org\/docs\/man\/ups.conf.html\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a>.<\/p>\n<p>  <\/p>\n<p>\u0412\u044b\u0432\u043e\u0434 <code>lsusb<\/code>, \u0441\u0442\u0440\u043e\u043a\u0430 \u0441 \u0418\u0411\u041f \u0443\u043a\u0430\u0437\u0430\u043d\u0430 \u0441\u0442\u0440\u0435\u043b\u043a\u043e\u0439:<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\"># lsusb  Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub --&gt; Bus 001 Device 003: ID 0463:ffff MGE UPS Systems UPS Bus 001 Device 004: ID 046b:ff10 American Megatrends, Inc. Virtual Keyboard and Mouse Bus 001 Device 002: ID 046b:ff01 American Megatrends, Inc.  Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub<\/code><\/pre>\n<p>  <\/p>\n<p><em>&#171;\u0420\u0435\u0436\u0438\u043c \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f&#187;<\/em> \u043d\u0430\u0434\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0432 &#171;\u043d\u0438\u0437\u043a\u0438\u0439 \u0437\u0430\u0440\u044f\u0434 \u0431\u0430\u0442\u0430\u0440\u0435\u0438&#187;.<br \/>  \u0414\u043e\u043b\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a, \u043a\u0430\u043a \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u043d\u0430 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0435:<\/p>\n<p>  <\/p>\n<p><a href=\"https:\/\/habrastorage.org\/webt\/0v\/1e\/5c\/0v1e5ceg5axff7qac7gnqqlv5dc.png\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/0v\/1e\/5c\/0v1e5ceg5axff7qac7gnqqlv5dc.png\" alt=\"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0418\u0411\u041f\"><\/a><\/p>\n<p>  <\/p>\n<p>\u0412\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u0418\u0411\u041f \u0438 \u0441\u043d\u043e\u0432\u0430 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435. \u0415\u0441\u043b\u0438 \u0431\u044b\u043b\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f, \u0432\u0430\u043c \u043d\u0430 \u043f\u043e\u0447\u0442\u0443 \u043f\u0440\u0438\u0434\u0451\u0442 \u043f\u0438\u0441\u044c\u043c\u043e \u043e \u043f\u043e\u0442\u0435\u0440\u0435 \u043f\u0438\u0442\u0430\u043d\u0438\u044f.<br \/>  \u041d\u0430 \u044d\u0442\u043e\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0418\u0411\u041f \u043e\u043a\u043e\u043d\u0447\u0435\u043d\u0430.<\/p>\n<p>  <\/p>\n<h2>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h2>\n<p>  <\/p>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u043e\u0441\u043d\u043e\u0432\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u0430. \u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u043c\u043d\u043e\u0433\u043e\u0435 \u0442\u0443\u0442 \u0431\u044b\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u0438\u0437 \u043a\u043e\u043d\u0441\u043e\u043b\u0438, \u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a \u0432\u043e\u0432\u0441\u0435 \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043f\u0440\u043e\u0441\u0442\u043e \u044f \u0441\u0447\u0438\u0442\u0430\u044e, \u0447\u0442\u043e \u044d\u0442\u043e \u0443\u0434\u043e\u0431\u043d\u0435\u0435.<br \/>  \u041d\u043e \u043e\u0434\u043d\u043e \u0438\u0437 \u0434\u043e\u0441\u0442\u043e\u0438\u043d\u0441\u0442\u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u2014 \u0435\u0451 \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u044c.<\/p>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043f\u043e-\u0434\u0440\u0443\u0433\u043e\u043c\u0443, OMV \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0432\u0430\u043c \u044d\u0442\u043e.<\/p>\n<p>  <\/p>\n<p>\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0435\u0442\u044f\u043c\u0438 \u0438\u0437 WEB-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430, \u043f\u0440\u0438\u0447\u0451\u043c \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u043b\u0430\u043d\u0435 \u044d\u0442\u043e \u0431\u043e\u043b\u0435\u0435 \u0443\u0434\u043e\u0431\u043d\u043e, \u0447\u0435\u043c \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043d\u0441\u043e\u043b\u044c:<\/p>\n<p>  <\/p>\n<p><a href=\"https:\/\/habrastorage.org\/webt\/tb\/p3\/ja\/tbp3jabundd-ifinj76eimw-me0.png\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/tb\/p3\/ja\/tbp3jabundd-ifinj76eimw-me0.png\"><\/a><\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f Docker \u0442\u043e\u0436\u0435 \u0435\u0441\u0442\u044c \u0432\u0435\u0441\u044c\u043c\u0430 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0439 WEB-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441:<\/p>\n<p>  <\/p>\n<p><a href=\"https:\/\/habrastorage.org\/webt\/ol\/1o\/h_\/ol1oh_koe2adncdkhh9qozsufkm.png\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ol\/1o\/h_\/ol1oh_koe2adncdkhh9qozsufkm.png\"><\/a><\/p>\n<p>  <\/p>\n<p>\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, OMV \u043c\u043e\u0436\u0435\u0442 \u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u0435 \u0433\u0440\u0430\u0444\u0438\u043a\u0438.<\/p>\n<p>  <\/p>\n<p>\u0413\u0440\u0430\u0444\u0438\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0435\u0442\u0438:<\/p>\n<p>  <\/p>\n<p><a href=\"https:\/\/habrastorage.org\/webt\/fq\/n7\/v2\/fqn7v20f3vq1ekj7ygcg1jbv2cu.png\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/fq\/n7\/v2\/fqn7v20f3vq1ekj7ygcg1jbv2cu.png\" alt=\"\u0413\u0440\u0430\u0444\u0438\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0435\u0442\u0438\"><\/a><\/p>\n<p>  <\/p>\n<p>\u0413\u0440\u0430\u0444\u0438\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u0438:<\/p>\n<p>  <\/p>\n<p><a href=\"https:\/\/habrastorage.org\/webt\/52\/k4\/3e\/52k43eckcekf7bxfxqmsbnv4hlm.png\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/52\/k4\/3e\/52k43eckcekf7bxfxqmsbnv4hlm.png\" alt=\"\u0413\u0440\u0430\u0444\u0438\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u0438\"><\/a><\/p>\n<p>  <\/p>\n<p>\u0413\u0440\u0430\u0444\u0438\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f CPU:<\/p>\n<p>  <\/p>\n<p><a href=\"https:\/\/habrastorage.org\/webt\/qn\/e8\/ir\/qne8ir6ndfbl17zyvzzl5vyexs0.png\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/qn\/e8\/ir\/qne8ir6ndfbl17zyvzzl5vyexs0.png\" alt=\"\u0413\u0440\u0430\u0444\u0438\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f CPU\"><\/a><\/p>\n<p>  <\/p>\n<h2 id=\"nerealizovannoe\">\u041d\u0435\u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0435<\/h2>\n<p>  <\/p>\n<ul>\n<li>\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u043e\u0439 \u2014 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0442\u0435\u043c\u0430. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0447\u0442\u043e \u0441 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0440\u0430\u0437\u0430 \u0447\u0442\u043e-\u0442\u043e \u043d\u0435 \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0412 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0432\u0430\u043c \u0432 \u043f\u043e\u043c\u043e\u0449\u044c <a href=\"https:\/\/docs.docker.com\/compose\/reference\/exec\/\"><code>docker-compose exec<\/code><\/a>, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0430\u0442\u0446\u0438\u0438 \u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432.<\/li>\n<li>LDAP \u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0435 \u043c\u0435\u0448\u0430\u043b\u043e \u0431\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043b\u0443\u0447\u0448\u0435, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432 \u043f\u043b\u0430\u043d\u0435 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 (\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c SSL \u0432\u0435\u0437\u0434\u0435, \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u0438 \u0442.\u043f.).<\/li>\n<li>\u041f\u043e\u043a\u0430 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u0435 \u0437\u0430\u0442\u0440\u043e\u043d\u0443\u0442\u044b \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u0434\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438 \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, \u044f \u043e\u0431 \u044d\u0442\u043e\u043c \u0437\u043d\u0430\u044e, \u043d\u043e \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u0440\u0430\u0437.<\/li>\n<li>\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c <a href=\"https:\/\/habr.com\/users\/valdikss\/\" class=\"user_link\">ValdikSS<\/a> \u0434\u0430\u043b \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0439 \u0441\u043e\u0432\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c DropbearSSH, \u0432\u043d\u0435\u0434\u0440\u0451\u043d\u043d\u044b\u0439 \u0432 initramfs \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043d\u0435\u043d\u0430\u043c\u0435\u0440\u0435\u043d\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043e\u043a. \u041e\u0431 \u044d\u0442\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u0434\u0440\u0443\u0433\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u0432\u0441\u0451.<br \/>  \u0421 \u0411\u043e\u0433\u043e\u043c!<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/n0\/dy\/xy\/n0dyxyaz2tzyp5q1vvdskj1fr9c.jpeg\"><\/p>\n<\/div>\n<p>        <script class=\"js-mediator-script\">!function(e){function t(t,n){if(!(n in e)){for(var r,a=e.document,i=a.scripts,o=i.length;o--;)if(-1!==i[o].src.indexOf(t)){r=i[o];break}if(!r){r=a.createElement(\"script\"),r.type=\"text\/javascript\",r.async=!0,r.defer=!0,r.src=t,r.charset=\"UTF-8\";var d=function(){var e=a.getElementsByTagName(\"script\")[0];e.parentNode.insertBefore(r,e)};\"[object Opera]\"==e.opera?a.addEventListener?a.addEventListener(\"DOMContentLoaded\",d,!1):e.attachEvent(\"onload\",d):d()}}}t(\"\/\/mediator.mail.ru\/script\/2820404\/\",\"_mediator\")}(window);<\/script>     <br \/> \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\/post\/415779\/\"> https:\/\/habr.com\/post\/415779\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div data-io-article-url=\"https:\/\/habr.com\/post\/415779\/\" class=\"post__text post__text-html js-mediator-article\">\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/b93\/ed1\/af9\/b93ed1af987a1fda471d1080d6b804e5.jpg\"><\/p>\n<p>  <\/p>\n<p>\u0412 <a href=\"https:\/\/habr.com\/post\/359344\/\">\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435<\/a> \u0431\u044b\u043b\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b NAS.<br \/>  \u041d\u0430\u0441\u0442\u0430\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u0435\u0451 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-287857","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/287857","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=287857"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/287857\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=287857"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=287857"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=287857"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}