{"id":353196,"date":"2024-05-20T22:23:10","date_gmt":"2024-05-20T22:23:10","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=353196"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=353196","title":{"rendered":"<span>1.0.BackupStorage \u043d\u0430 NixOS<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442, \u043c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0410\u043b\u0435\u043a\u0441\u0435\u0439, \u044f\u0432\u043b\u044f\u044e\u0441\u044c IT\u2011\u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u043c \u0432\u00a0\u043e\u0434\u043d\u043e\u0439 \u0438\u0437\u00a0\u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0439. \u0418\u043d\u043e\u0433\u0434\u0430 \u0432\u043a\u043b\u044e\u0447\u0430\u044e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e \u0430\u0432\u0430\u043d\u0442\u044e\u0440\u0438\u0441\u0442\u0430 \u0438 \u0438\u0449\u0443 \u0447\u0442\u043e\u2011\u0442\u043e \u0440\u0435\u0434\u043a\u043e\u0435 \u0438 \u043e\u0447\u0435\u043d\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435.\u0418 \u0432\u00a0\u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0445\u043e\u0447\u0443 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441\u0442\u0435\u043a\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u043c\u0435\u0435\u0442 \u043f\u0440\u0430\u0432\u043e \u043d\u0430\u00a0\u0436\u0438\u0437\u043d\u044c. <\/p>\n<p>\u0421\u0440\u0430\u0437\u0443 \u0441\u043a\u0430\u0436\u0443 \u0442\u0443\u0442 \u043d\u0435\u00a0\u0431\u0443\u0434\u0435\u0442 BestPractics ( \u044f \u043d\u0435\u00a0\u0442\u0430\u043a \u0434\u0430\u0432\u043d\u043e \u044f \u0432\u0437\u044f\u043b\u0441\u044f \u00abNix\u00bb \u0438 \u0433\u0434\u0435\u2011\u0442\u043e \u044f \u043e\u0442\u0445\u043e\u0436\u0443 \u043e\u0442\u00a0\u0435\u0433\u043e \u00ab\u0444\u0438\u043b\u043e\u0441\u043e\u0444\u0438\u0438\u00bb).<\/p>\n<p>\u041d\u043e\u00a0\u044d\u0442\u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0441\u00a0\u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u043c\u0438 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0438 \u0432 \u0434\u0440\u0443\u0433\u0438\u0445\u00a0\u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430\u0445.<\/p>\n<p>\u041c\u043e\u0436\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u044d\u0442\u0443 \u0441\u0442\u0430\u0442\u044c\u044e \u043a\u0430\u043a\u00a0\u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u043b\u0438\u00a0\u0436\u0435 \u043a\u0430\u043a\u00a0\u043d\u0435\u00a0\u0441\u0430\u043c\u044b\u0439 \u043b\u0443\u0447\u0448\u0438\u0439( \u043d\u043e\u00a0\u0432\u0441\u0435 \u0436\u0435) \u043c\u0430\u043d\u0443\u0430\u043b, \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u043d\u0435 \u043d\u0435\u00a0\u0445\u0432\u0430\u0442\u0430\u043b\u043e. <\/p>\n<p>\u0414\u0430\u00a0\u0438 \u043d\u0430\u0434\u0435\u044e\u0441\u044c, \u0447\u0442\u043e\u00a0\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0434\u043b\u044f\u00a0\u043a\u043e\u0433\u043e\u2011\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430, \u043a\u0430\u043a\u00a0\u0438 \u0434\u043b\u044f\u00a0\u043c\u0435\u043d\u044f.<\/p>\n<p>\u0427\u0442\u043e\u00a0\u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0431\u0443\u0434\u0435\u0442:<\/p>\n<ol>\n<li>\n<p>\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0431\u0437\u043e\u0440 \u0441\u00a0\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u043e\u0439 \u041f\u041e\u00a0\u0434\u043b\u044f\u00a0\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e, \u0440\u0435\u0434\u043a\u043e\u0433\u043e, \u043d\u043e\u00a0\u0432\u0435\u0441\u044c\u043c\u0430 \u0434\u043e\u0441\u0442\u043e\u0439\u043d\u043e\u0433\u043e \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430.<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e \u0432\u0435\u0431\u2011\u0441\u0435\u0440\u0432\u0435\u0440\u0430(\u043d\u0430 \u043c\u043e\u0435\u0439 \u043f\u0430\u043c\u044f\u0442\u0438\u00a0\u2014 \u0432\u00a0\u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0432\u0435\u0437\u0434\u0435 Apache\/Nginx,\u0438 \u0432\u00a0\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0432\u0440\u0435\u043c\u044f traefik \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f, \u043a\u0430\u043a\u00a0\u043f\u0440\u043e\u043a\u0441\u0438 ).<\/p>\n<\/li>\n<li>\n<p>\u0420\u0430\u0437\u0432\u0435\u0440\u043d\u0435\u043c \u0441\u0432\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435,\u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043a\u0430\u043a\u00a0\u043f\u043e\u00a0s3,\u0442\u0430\u043a \u0438 \u043f\u043e\u00a0sftp \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u0441\u044f.<\/p>\n<\/li>\n<li>\n<p>\u0413\u043e\u0442\u043e\u0432\u043a\u0430 \u0431\u044d\u043a\u0430\u043f\u043e\u0432 + \u043f\u0430\u0440\u0443 \u043b\u0430\u0439\u0444\u0445\u0430\u043a\u043e\u0432.<\/p>\n<\/li>\n<\/ol>\n<hr\/>\n<p>Experimental stand:<\/p>\n<ul>\n<li>\n<p>NixOS<\/p>\n<\/li>\n<li>\n<p>Caddy<\/p>\n<\/li>\n<li>\n<p>Minio<\/p>\n<\/li>\n<li>\n<p>Prometheus<\/p>\n<\/li>\n<li>\n<p>restic<\/p>\n<\/li>\n<\/ul>\n<hr\/>\n<p>\u041d\u0430\u0447\u043d\u0435\u043c \u0441\u00a0\u0414\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430.<\/p>\n<p><strong>\u041e\u00a0NixOS<\/strong>\u00a0\u2014 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432 Linux \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0442\u0438\u0432\u043d\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e, \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u044e \u0432\u0441\u0435\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0441\u00a0\u0445\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c, \u0438 \u0438\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u043d\u043e\u0435 \u0441\u0448\u0438\u0432\u0430\u043d\u0438\u0435 \u0438\u0445 \u0432\u00a0\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f (\u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u044f). \u042d\u0442\u043e \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442 \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e\u0441\u0442\u044c \u0438 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u043e\u0441\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439 \u0432\u00a0\u043b\u044e\u0431\u043e\u0439 \u0442\u043e\u0447\u043a\u0435, \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u043a\u00a0\u043b\u044e\u0431\u043e\u043c\u0443 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c\u0443 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044e \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 \u041e\u0421.<\/p>\n<p>NixOS \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u00a0DevOps \u043c\u0435\u0442\u043e\u0434\u0438\u043a\u0435 \u0438 \u0438\u043c\u0435\u0435\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b, \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0430\u043c \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f.<\/p>\n<p>\u041c\u043e\u0434\u0435\u043b\u044c \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 NixOS \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043b\u0435\u0433\u043a\u043e \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043d\u0430\u00a0\u0434\u0440\u0443\u0433\u043e\u043c \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435. \u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043d\u0430\u00a0\u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0442\u0443\u00a0\u0436\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u044b (\u044f\u0434\u0440\u043e, \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u0441\u043b\u0443\u0436\u0431\u044b \u0438\u00a0\u0442.\u00a0\u0434.), \u0437\u0430\u00a0\u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0442\u0435\u0445 \u0447\u0430\u0441\u0442\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435\u00a0\u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u043e\u043c \u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438.<\/p>\n<blockquote>\n<p>\u0414\u0436\u0435\u0441\u0438 \u0421\u043c\u0438\u0442: <\/p>\n<p>\u00ab<em>\u041c\u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f, \u0447\u0442\u043e\u00a0NixOS \u0431\u0435\u0440\u0435\u0442 \u043d\u0430\u00a0\u0441\u0435\u0431\u044f \u0437\u0430\u0431\u043e\u0442\u044b \u043f\u043e\u00a0\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044e \u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u043f\u043e\u043c\u0435\u0449\u0430\u044f \u043a\u0430\u0436\u0434\u043e\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0432\u00a0\u0441\u0432\u043e\u0451 \u201e\u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u0435\u201c, \u0438 \u043d\u0430\u00a0\u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u0434\u043b\u044f\u00a0\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f NixOS \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a\u00a0\u0436\u0435, \u043a\u0430\u043a\u00a0\u0438 \u043b\u044e\u0431\u043e\u0439 \u0434\u0440\u0443\u0433\u043e\u0439 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432 Linux. \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 NixOS \u043d\u0435\u00a0\u0434\u043b\u044f\u00a0\u043d\u043e\u0432\u0438\u0447\u043a\u043e\u0432: \u044f \u043d\u0435\u00a0\u0434\u0443\u043c\u0430\u044e, \u0447\u0442\u043e\u00a0NixOS \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d \u0434\u043b\u044f\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u00a0\u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043d\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043e\u0431\u0449\u0435\u0433\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u0417\u0430\u0442\u043e NixOS \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0430\u043c \u043f\u043e\u043b\u0438\u0433\u043e\u043d \u0434\u043b\u044f\u00a0\u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 Nix, \u0438 \u044f \u0434\u0443\u043c\u0430\u044e, \u0447\u0442\u043e\u00a0\u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0437\u0430\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0435\u0442 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0433\u043e \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f \u0438 \u043f\u0440\u0438\u043d\u044f\u0442\u0438\u044f \u0438 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430\u043c\u0438\u00bb.<\/em><\/p>\n<p>\u042d\u0442\u043e\u00a0\u0431\u044b\u043b\u043e \u0432\u0437\u044f\u0442\u043e \u0438\u0437\u00a0\u0432\u0438\u043a\u0438.\u0422\u0430\u043a \u0447\u0442\u043e,\u0437\u0430 \u043c\u043e\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u043d\u0435\u00a0\u043f\u0438\u0441\u0430\u043b\u00a0\u2014 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u0441\u044f \u043d\u0430\u00a0\u0432\u0438\u043a\u0438\u043f\u0435\u0434\u0438\u044e.<\/p>\n<\/blockquote>\n<p>\u0418 \u0442\u0430\u043a \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c.<\/p>\n<p>\u0421\u0442\u0430\u0432\u0438\u043c \u041e\u0421 \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0433\u0443\u0435\u0432\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u0435\u0440\u0430 \u0441\u00a0live \u043e\u0431\u0440\u0430\u0437\u0430 (\u041c\u043e\u0436\u043d\u043e\u00a0\u0431\u044b\u043b\u043e \u0438 \u0431\u0435\u0437\u00a0\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0442\u043e\u0440\u0430 \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c,\u043d\u043e \u043e\u043d \u0437\u0434\u0435\u0441\u044c \u0434\u043b\u044f\u00a0\u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e\u0441\u0442\u0438).<\/p>\n<details class=\"spoiler\">\n<summary>\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/a36\/a8b\/99f\/a36a8b99f03fc7b24bebcf16b9d4a0c8.png\" width=\"784\" height=\"591\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a36\/a8b\/99f\/a36a8b99f03fc7b24bebcf16b9d4a0c8.png\"\/><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<p>\u041f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u0448\u0430\u0433\u0438\u00a0\u2014 \u0432\u0432\u043e\u0434 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f(\u043d\u0435 \u0441\u0442\u0430\u043b \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0434\u0430\u043b\u0435\u043a\u043e \u0445\u043e\u0434\u0438\u0442\u044c\u00a0\u2014 \u0441\u0434\u0435\u043b\u0430\u043b \u044e\u0437\u0435\u0440\u0430 \u0412\u0430\u0441\u044e,\u0433\u0434\u0435\u2011\u0442\u043e \u0432\u00a0\u043a\u043e\u043d\u0444\u0438\u0433\u0430\u0445 \u043f\u0440\u043e\u0441\u043a\u043e\u0447\u0438\u0442 \u0411\u0430\u0440\u0441\u0438\u043a \u0438 \u0442\u0434,\u0442\u0430\u043a \u0447\u0442\u043e\u00a0\u043d\u0435\u00a0\u043f\u0443\u0433\u0430\u0435\u043c\u0441\u044f).<\/p>\n<details class=\"spoiler\">\n<summary>\u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u0443<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/355\/bc0\/c35\/355bc0c35eb23588c47823f7c31a0e16.png\" width=\"860\" height=\"460\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/355\/bc0\/c35\/355bc0c35eb23588c47823f7c31a0e16.png\"\/><\/figure>\n<p>\u041e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c\u0441\u044f \u043d\u0430\u00a0\u044d\u0442\u043e\u043c \u043c\u043e\u043c\u0435\u043d\u0442\u0435: \u0434\u043b\u044f\u00a0\u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0445 \u043d\u0443\u0436\u0434,\u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a\u00a0\u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435,\u0432\u0435\u0431\u2011\u0441\u0435\u0440\u0432\u0435\u0440,\u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0431\u044d\u043a\u0430\u043f\u043e\u0432,\u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0438\u044f \u0438 \u0442\u0434\u00a0\u2014 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u0430\u2011\u043d\u0435 \u043d\u0443\u0436\u043d\u0430,\u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c No Desktop.\u0415\u0441\u043b\u0438 \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f\u00a0\u0436\u0438\u0437\u043d\u0438,\u0442\u043e \u0441\u0442\u0430\u0432\u0438\u043c,\u0442\u043e \u0443\u0436\u0435 \u043f\u043e\u00a0\u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044e,\u0436\u0435\u043b\u0430\u043d\u0438\u044e.<\/p>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0435\u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432(\u0442\u0443\u0442 \u043d\u0430\u0434\u043e \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043f\u043e \u0436\u0435\u043b\u0435\u0437\u0443 \u0438 \u043f\u043e \u0436\u0435\u043b\u0430\u043d\u0438\u044e)<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/62f\/25d\/b4d\/62f25db4d64743567fc4cf3ed0525aeb.png\" width=\"881\" height=\"483\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/62f\/25d\/b4d\/62f25db4d64743567fc4cf3ed0525aeb.png\"\/><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>\u0420\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u0441 \u0440\u0430\u0437\u0431\u0438\u0432\u043a\u043e\u0439 \u0434\u0438\u0441\u043a\u0430<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/461\/6f4\/23d\/4616f423dcb089adc591cc949bc1aa08.png\" width=\"912\" height=\"495\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/461\/6f4\/23d\/4616f423dcb089adc591cc949bc1aa08.png\"\/><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<p>\u041f\u043e\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0448\u0430\u0433\u0430 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u0443 (\u043e\u0442 5\u00a0\u043c\u0438\u043d\u0443\u0442 \u0434\u043e \u2026\u043f\u043e\u043b\u0443\u0447\u0430\u0441\u0430 \u0432\u00a0\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442\u00a0\u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0438 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0447\u0442\u0435\u043d\u0438\u044f\/\u0437\u0430\u043f\u0438\u0441\u0438). <\/p>\n<details class=\"spoiler\">\n<summary>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u044b<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/5cf\/0b7\/1c6\/5cf0b71c6dfb6622b425be3a637b2077.png\" width=\"974\" height=\"532\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5cf\/0b7\/1c6\/5cf0b71c6dfb6622b425be3a637b2077.png\"\/><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>\u0418 \u043f\u043e\u0442\u043e\u043c \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c\u0441\u044f \u0438 \u0432\u0438\u0434\u0438\u043c :<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/0e8\/bf1\/a1b\/0e8bf1a1b7da968516309a48a1844591.png\" width=\"974\" height=\"751\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0e8\/bf1\/a1b\/0e8bf1a1b7da968516309a48a1844591.png\"\/><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<p>                                                    \u042d\u0442\u0430\u043f \u043f\u0435\u0440\u0432\u044b\u0439 \u043f\u0440\u043e\u0439\u0434\u0435\u043d.<\/p>\n<details class=\"spoiler\">\n<summary>\u0442\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c,\u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u043f\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c.<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/009\/c11\/117\/009c1111738e7a023e355c5d0ff9398a.png\" width=\"974\" height=\"203\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/009\/c11\/117\/009c1111738e7a023e355c5d0ff9398a.png\"\/><\/figure>\n<p>\u041c\u0430\u043b\u0435\u043d\u044c\u043a\u0430\u044f ,\u043d\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u0430\u044f \u0441\u043f\u0440\u0430\u0432\u043a\u0430:<\/p>\n<p><code>nixos-rebuild --rollback switch<\/code> &#8212; \u00a0\u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e, \u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e .\u00a0\u041f\u043e\u043b\u0435\u0437\u043d\u043e \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u0438\u0437-\u0437\u0430 \u043e\u0448\u0438\u0431\u043e\u043a.<\/p>\n<p>nixos &#8212;upgrade       \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c\u00a0 \u043a\u0430\u043d\u0430\u043b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f root \u043f\u0435\u0440\u0435\u0434 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438   <\/p>\n<p>nixos-rebuild \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0438 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0439 \u043d\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0445 \u0445\u043e\u0441\u0442\u0430\u0445 \u0447\u0435\u0440\u0435\u0437 SSH.\u00a0<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0439 \u0445\u043e\u0441\u0442 \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u0432\u0430\u0448\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438 \u0435\u0435 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u0445\u043e\u0441\u0442\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435:<\/p>\n<p><code>nixos-rebuild --build-host user@remotehost switch<\/code><\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e \u0438 \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0435\u0435 \u043d\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u043c \u0445\u043e\u0441\u0442\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435:<\/p>\n<p><code>nixos-rebuild --target-host user@remotehost switch<\/code><\/p>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0447\u0430\u0441\u0442\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e, \u043e\u0442\u043b\u0438\u0447\u043d\u0443\u044e \u043e\u0442 \u0442\u043e\u0439, \u0447\u0442\u043e \u0432\u00a0\/etc\/nixos.\u00a0<\/p>\n<p> \u00a0&#8212;build-host \u0438\u00a0&#8212;target-host \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e, \u0434\u0430\u0436\u0435 \u0441 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0445\u043e\u0441\u0442\u0430\u043c\u0438.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u0435\u0440\u0435\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0435 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0439 \u0445\u043e\u0441\u0442 \u043e\u0442 \u0438\u043c\u0435\u043d\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0431\u0435\u0437 \u043f\u043e\u043b\u043d\u043e\u043c\u043e\u0447\u0438\u0439 root, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043e\u043f\u0446\u0438\u044e\u00a0&#8212;use-remote-sudo\u0434\u043b\u044f \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u0430\u0432 \u043d\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u043c \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f:<\/p>\n<p>nixos-rebuild &#8212;target-host user@remotehost &#8212;use-remote-sudo switch<\/p>\n<p>\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e\u00a0nixos-rebuild \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0432 \u0444\u0430\u0439\u043b\u0435, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c \u0432\u00a0nixos-config \u043f\u043e\u043b\u0435\u00a0NIX_PATH \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u044b, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e\u00a0\/etc\/nixos\/configuration.nix \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.\u00a0\u042d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e:<\/p>\n<p>nixos-rebuild switch -I nixos-config=path\/to\/configuration.nix<\/p>\n<p>\u0418 \u044d\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u0430\u043b\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0442\u043e\u0433\u043e,\u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c ,\u0437\u0430 \u0431\u043e\u043b\u0435\u0435 <s>\u0433\u043e\u0440\u044f\u0447\u0438\u043c<\/s> \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u043e\u043c &#8212; \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0430\u0439\u0442 &#8212; https:\/\/nixos.org\/<\/p>\n<\/p>\n<\/div>\n<\/details>\n<p>\u041f\u0440\u0430\u0432\u0438\u043c hostname: <\/p>\n<pre><code>nano \/etc\/nixos\/configuration.nix<\/code><\/pre>\n<pre><code>networking.hostName = \"nixos\" \u043c\u0435\u043d\u044f\u0435\u043c \u043d\u0430 networking.hostName = \"nixserver\"<\/code><\/pre>\n<p>\u041e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e:<\/p>\n<p><code>nixos-rebuild switch<\/code><\/p>\n<p>\u0421\u0442\u0430\u0432\u0438\u043c \u043d\u0443\u0436\u043d\u044b\u0435 (\u043d\u0430\u043c \u043f\u0430\u043a\u0435\u0442\u044b):<\/p>\n<p><code>nano \/etc\/nixos\/configuration.nix<\/code><\/p>\n<p>wget, caddy, minio, minio-cllient, restic, prometheus, postgresql<\/p>\n<details class=\"spoiler\">\n<summary>\u043f\u0440\u0438\u043c\u0435\u0440:<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c7b\/940\/784\/c7b940784a52e21671feb6cd1a079fe4.png\" width=\"920\" height=\"189\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c7b\/940\/784\/c7b940784a52e21671feb6cd1a079fe4.png\"\/><\/figure>\n<p>\u0417\u0430\u043f\u0438\u0441\u0430\u043b \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u0447\u0442\u043e\u0431\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043e\u0442 \u043b\u044e\u0431\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0430 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0442 \u043e\u0434\u043d\u043e\u0433\u043e (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0440\u0443\u0442\u0430) .( \u0414\u0410 \u041d\u0435\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e ,\u043d\u043e \u0431\u043e\u043b\u0435\u0435 \u0443\u0434\u043e\u0431\u043d\u043e.)<\/p>\n<p>\u041f\u043e\u0442\u043e\u043c \u0436\u043c\u0435\u043c \u043d\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 &#8212; nixos-rebuild switch \u0438 \u043e\u043d\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b.<\/p>\n<p>\u0427\u0435\u0440\u0435\u0437 cli ( \u043f\u0440\u0438\u043c\u0435\u0440) : nix-env \u2013install (-I ) vim<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/edd\/844\/352\/edd844352b47b8f93444a5006c8b8475.png\" width=\"974\" height=\"57\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/edd\/844\/352\/edd844352b47b8f93444a5006c8b8475.png\"\/><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0422\u0430\u043a \u0436\u0435 \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u0435 network.firewall.allowedTCPPorts \u0432\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c [22 9000 9001 80 443]<\/p>\n<details class=\"spoiler\">\n<summary>\u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0435 \u043f\u043e\u0440\u0442\u043e\u0432<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/9ed\/edf\/15a\/9ededf15a672bc0430e25aeddb40cae8.png\" width=\"974\" height=\"319\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9ed\/edf\/15a\/9ededf15a672bc0430e25aeddb40cae8.png\"\/><\/figure>\n<p>9001- WebUI Minio ( \u043e\u043d \u043d\u0430\u043c \u043d\u0443\u0436\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u043e\u0432,\u043f\u043e\u0442\u043e\u043c \u0443\u0431\u0435\u0440\u0435\u043c \u043f\u043e\u0440\u0442  \u043e\u0442\u0441\u044e\u0434\u0430)<\/p>\n<\/div>\n<\/details>\n<p>\u041e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e:<\/p>\n<p><code>nixos-rebuild switch<\/code><\/p>\n<h4>MinIO Object Store<\/h4>\n<p>\u042d\u0442\u043e \u0432\u044b\u0441\u043e\u043a\u043e\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0435 \u0441\u00a0S3. \u041e\u043d \u0441\u043e\u0437\u0434\u0430\u043d \u0434\u043b\u044f<br \/> \u043a\u0440\u0443\u043f\u043d\u043e\u043c\u0430\u0441\u0448\u0442\u0430\u0431\u043d\u044b\u0445 \u0440\u0430\u0431\u043e\u0447\u0438\u0445 \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u043a AI\/ML, \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445. <\/p>\n<p>\u041e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e \u0438 \u0432\u00a0\u043b\u044e\u0431\u043e\u043c \u043e\u0431\u043b\u0430\u043a\u0435 (\u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u043c \u0438\u043b\u0438\u00a0\u0447\u0430\u0441\u0442\u043d\u043e\u043c), \u043e\u0442\u00a0\u0446\u0435\u043d\u0442\u0440\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043e\u00a0\u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0438. MinIO \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c\u044b\u043c \u0438 \u0438\u043c\u0435\u0435\u0442 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u043f\u043e\u0434\u00a0GNU AGPL v3. \u00a9 official suite.<\/p>\n<p>\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c Minio:<\/p>\n<p>\u0414\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0441\u0432\u043e\u0435\u0433\u043e \u0434\u0435\u043b\u0430\u044e \u0444\u0430\u0439\u043b\u0438\u043a \/etc\/default\/minio c \u0442\u0430\u043a\u0438\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c:   <\/p>\n<p><code>nano \/etc\/default\/minio<\/code> <\/p>\n<pre><code>MINIO_VOLUMES=\/var\/cloud  # Path to save data MINIO_OPTS=\"--console-address :9001\" #Port to Web-UI MINIO_ROOT_USER=barsik # Superuser  Minio MINIO_ROOT_PASSWORD=barsikpassword # password sureruser <\/code><\/pre>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 <code>find \/ -name minio<\/code> \u0438\u0449\u0435\u043c \u043a\u0430\u043a \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u0438,\u0442\u0430\u043a \u0438 \u0434\u0435\u043c\u043e\u043d\u043e\u0432, \u0435\u0441\u043b\u0438 \u0442\u0430\u043a\u043e\u0432\u044b \u0438\u043c\u0435\u044e\u0442\u0441\u044f.<\/p>\n<details class=\"spoiler\">\n<summary>=(<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c70\/bc5\/ced\/c70bc5ced2d5adc730bc17a9807c9ebb.png\" width=\"974\" height=\"78\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c70\/bc5\/ced\/c70bc5ced2d5adc730bc17a9807c9ebb.png\"\/><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0422\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b \u0431\u0430\u0433 \u043f\u0430\u043a\u0435\u0442\u0430 Minio(\u0441\u0435\u0440\u0432\u0435\u0440), \u043a\u043e\u0433\u0434\u0430 \u0441\u0442\u0430\u0432\u0438\u0448\u044c \u0435\u0433\u043e \u0447\u0435\u0440\u0435\u0437  \u043f\u0430\u043a\u0435\u0442\u043d\u044b\u0439 \u043c\u0435\u043d\u0435\u043d\u0434\u0436\u0435\u0440 , \u0442\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0430 \u043f\u0430\u0440\u0441\u0435\u0440\u0430 JSON &#8230;. ,\u0442\u0430\u043a \u0447\u0442\u043e:<\/p>\n<pre><code>wget https:\/\/dl.min.io\/server\/minio\/release\/linux-amd64\/minio chmod +x minio mv minio \/var\/cloud (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u043b\u0438 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0435\u0433\u043e \u0432 \u0442\u043e\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438,\u043a\u0443\u0434\u0430 \u0441\u043a\u0430\u0447\u0430\u043b\u0438)<\/code><\/pre>\n<p>\u0420\u0430\u0437 \u0434\u0435\u043c\u043e\u043d\u0430 \u043d\u0435\u0442\u0443, \u0442\u043e \u0432\u043f\u0438\u0448\u0435\u043c \u0432\u00a0\u043a\u043e\u043d\u0444\u0438\u0433 \u0435\u0433\u043e \u0441\u0430\u043c\u0438:<\/p>\n<p> <code>nano \/etc\/nixos\/configuration.nix \u0438 \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c:<\/code><\/p>\n<pre><code>systemd.services.minioserver = {       description = \"MinioServer\" ;       wantedBy = [ \"default.target\" ];       serviceConfig = {         EnvironmentFile= \"\/etc\/default\/minio\";      #  ExecStart = \"${pkgs.minio}\/bin\/minio server $MINIO_OPTS $MINIO_VOLUMES \";           ExecStart = \"\/home\/vasya\/minio server $MINIO_OPTS $MINIO_VOLUMES \";# ExecStop = \" \";         Type = \"notify\";         Restart   = \"always\";         LimitNOFILE=\"1048576\";         TimeoutStopSec=\"infinity\";         SendSIGKILL=\"no\";         User=\"vasya\"; #\"minio-user\";         Group= \"root\"; #\"minio-user\";         ProtectProc=\"invisible\";     }; };   systemd.services.minioserver.enable=true; <\/code><\/pre>\n<p>\u0420\u0435\u0431\u0438\u043b\u0434\u0438\u043c\u0441\u044f: \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/p>\n<p><code>nixos-rebuild switch<\/code><\/p>\n<h4>Caddy<\/h4>\n<p>\u042d\u0442\u043e \u043c\u043e\u0449\u043d\u044b\u0439 \u043a\u043e\u0440\u043f\u043e\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0439\u00a0\u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c\u00a0\u0438\u00a0\u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c HTTPS,\u00a0\u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 Go (c)official suite.<\/p>\n<p>*\u0415\u0441\u0442\u044c \u0442\u0443\u0442 \u043d\u044e\u0430\u043d\u0441 \u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f \u043d\u0430\u0442\u043a\u043d\u0443\u043b\u0441\u044f &#8212; \u043b\u043e\u043a\u0430\u043b\u0445\u043e\u0441\u0442 \u0442\u0443\u0442 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u0430\u043a,\u0430 \u0434\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b caddy \u0441\u0434\u0435\u043b\u0430\u043b\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u0441\u0435\u0440\u0442 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438.\u0415\u0441\u043b\u0438 \u043e\u043d \u0441\u0442\u043e\u0438\u0442 \u043d\u0430\u0440\u0443\u0436\u0443,\u0438 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u043f\u043e\u0440\u0442\u0430\u043c\u0438 80\/443 \u0434\u043b\u044f http\/https(\u0435\u0441\u0442\u0435\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u043e) \u0442\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0432\u043c\u0435\u0441\u0442\u043e \u043b\u043e\u043a\u0430\u043b\u0445\u043e\u0441\u0442- \u0441\u0432\u043e\u0439 \u0434\u043e\u043c\u0435\u043d \u0438 \u043e\u043d \u0441\u0430\u043c \u043f\u043e\u0434\u0442\u044f\u043d\u0435\u0442 \u0443 letsencrypt \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442.\u0422\u0430\u043a \u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0447\u0435\u0440\u0435\u0437 \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u0443 <\/p>\n<p><code>tls cert key  <\/code><\/p>\n<p>\u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 <\/p>\n<p>\u041d\u043e \u043c\u044b \u043f\u043e\u0439\u0434\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u043f\u0443\u0442\u0435\u043c.<\/p>\n<p><code>mkdir \/etc\/caddy<\/code><\/p>\n<p><code>nano \/etc\/caddy\/Caddyfile<\/code><\/p>\n<pre><code>localhost {        header \/* {                 -Server                 Permissions-Policy interest-cohort=()                 Strict-Transport-Security max-age=31536000;                 X-Content-Type-Options nosniff                 X-Frame-Options DENY                 Referrer-Policy no-referrer-when-downgrade                 }         route \/console\/* {         uri strip_prefix \/console         reverse_proxy 127.0.0.1:9001         }      } <\/code><\/pre>\n<p>\u041f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0441\u0435\u0440\u0432\u0438\u0441 \u0432 system config<\/p>\n<pre><code>  systemd.services.caddy = {       description = \"Caddy\" ;       wantedBy = [ \"multi-user.target\" ];       serviceConfig = {         EnvironmentFile= \"\/etc\/caddy\/Caddyfile\";         ExecStart = \"${pkgs.caddy}\/bin\/caddy  run --environ --config \/etc\/caddy\/Caddyfile\";         ExecStop = \" ${pkgs.caddy}\/bin\/caddy stop\";         ExecReload = \"${pkgs.caddy}\/bin\/caddy --config \/etc\/caddy\/Caddyfile --force\";         Type = \"notify\";         Restart   = \"always\";         LimitNOFILE=\"1048576\";         TimeoutStopSec=\"infinity\";         SendSIGKILL=\"no\";         User=\"root\"; #caddy         Group=\"root\"; #caddy         ProtectProc=\"invisible\";         PrivateTmp=\"true\";         AmbientCapabilities=\"CAP_NET_BIND_SERVICE\";     }; };   systemd.services.caddy.enable=true; <\/code><\/pre>\n<p>\u041e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e:<\/p>\n<p><code>nixos-rebuild switch<\/code><\/p>\n<p>\u0417\u0430\u0445\u043e\u0434\u0438\u043c \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c,\u0447\u0442\u043e \u0432\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.<\/p>\n<details class=\"spoiler\">\n<summary>\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.<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/554\/ced\/74b\/554ced74ba0373ee219f44409b1706cf.png\" width=\"974\" height=\"194\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/554\/ced\/74b\/554ced74ba0373ee219f44409b1706cf.png\"\/><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/81f\/197\/bde\/81f197bdec3f48dbaca6013c1f267f93.png\" alt=\"\u041d\u0430 \u0433\u0438\u043f\u0435\u0440\u0432\u0438\u0437\u043e\u0440\u0435 \u043f\u0440\u043e\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u043c \u043f\u043e\u0440\u0442\u044b \u0434\u043b\u044f https( 443 ) \u0438 \u043f\u043e\u0440\u0442 ssh .\" title=\"\u041d\u0430 \u0433\u0438\u043f\u0435\u0440\u0432\u0438\u0437\u043e\u0440\u0435 \u043f\u0440\u043e\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u043c \u043f\u043e\u0440\u0442\u044b \u0434\u043b\u044f https( 443 ) \u0438 \u043f\u043e\u0440\u0442 ssh .\" width=\"974\" height=\"170\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/81f\/197\/bde\/81f197bdec3f48dbaca6013c1f267f93.png\"\/><\/p>\n<div><figcaption>\u041d\u0430 \u0433\u0438\u043f\u0435\u0440\u0432\u0438\u0437\u043e\u0440\u0435 \u043f\u0440\u043e\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u043c \u043f\u043e\u0440\u0442\u044b \u0434\u043b\u044f https( 443 ) \u0438 \u043f\u043e\u0440\u0442 ssh .<\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/cdb\/642\/088\/cdb64208892e57fdbf54ee6d7181a1a2.png\" alt=\"\u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c,\u0447\u0442\u043e \u0432\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \/localhost\/console\" title=\"\u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c,\u0447\u0442\u043e \u0432\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \/localhost\/console\" width=\"974\" height=\"516\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/cdb\/642\/088\/cdb64208892e57fdbf54ee6d7181a1a2.png\"\/><\/p>\n<div><figcaption>\u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c,\u0447\u0442\u043e \u0432\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \/localhost\/console<\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d07\/b3f\/f2e\/d07b3ff2e50f0e3464ffae0d724f06e8.png\" alt=\"\u0414\u043b\u044f \u0442\u0435\u0441\u0442\u0430 \u0441\u0434\u0435\u043b\u0430\u043b \u043f\u0430\u0440\u0443 \u0431\u0430\u043a\u0435\u0442\u043e\u0432 ,\u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c \u0442\u043e\u0447\u043d\u043e ,\u0447\u0442\u043e \u0432\u0441\u0435 \u043e\u043a\" title=\"\u0414\u043b\u044f \u0442\u0435\u0441\u0442\u0430 \u0441\u0434\u0435\u043b\u0430\u043b \u043f\u0430\u0440\u0443 \u0431\u0430\u043a\u0435\u0442\u043e\u0432 ,\u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c \u0442\u043e\u0447\u043d\u043e ,\u0447\u0442\u043e \u0432\u0441\u0435 \u043e\u043a\" width=\"974\" height=\"335\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d07\/b3f\/f2e\/d07b3ff2e50f0e3464ffae0d724f06e8.png\"\/><\/p>\n<div><figcaption>\u0414\u043b\u044f \u0442\u0435\u0441\u0442\u0430 \u0441\u0434\u0435\u043b\u0430\u043b \u043f\u0430\u0440\u0443 \u0431\u0430\u043a\u0435\u0442\u043e\u0432 ,\u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c \u0442\u043e\u0447\u043d\u043e ,\u0447\u0442\u043e \u0432\u0441\u0435 \u043e\u043a<\/figcaption><\/div>\n<\/figure>\n<\/div>\n<\/details>\n<p>                                                          Prometheus<\/p>\n<details class=\"spoiler\">\n<summary>It&#8217;s FAIL<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c1c\/9a2\/be6\/c1c9a2be68f1f434590242c408f28da8.png\" width=\"974\" height=\"469\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c1c\/9a2\/be6\/c1c9a2be68f1f434590242c408f28da8.png\"\/><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0410\u0433\u0430,\u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b,\u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e Minio \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u0447\u0430\u0442\u044c\u0441\u044f \u0434\u043e \u043f\u0440\u043e\u043c\u0435\u0442\u0435\u0443\u0441\u0430. \u042d\u0442\u043e \u041f\u043e\u043f\u0440\u0430\u0432\u0438\u043c\u043e. \u0421\u0435\u0439\u0447\u0430\u0441 \u043f\u043e\u043a\u0430\u0436\u0443 \u043f\u0440\u0438\u043c\u0435\u0440 \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u043f\u043e \u0441\u0442\u0430\u0440\u0438\u043d\u043a\u0435.    <\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0431\u0443\u0434\u0435\u043c \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0430\u0442\u044c \u00ab\u0432\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434\u00bb \u0437\u0430\u043d\u043e\u0432\u043e.<\/p>\n<p>\u0417\u0430\u0445\u043e\u0434\u0438\u043c \u043d\u0430 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0430\u0439\u0442 \u043f\u0440\u043e\u043c\u0435\u0442\u0435\u0443\u0441\u0430 \u0438 \u0438\u0434\u0435\u043c \u0432 \u0440\u0430\u0437\u0434\u0435\u043b \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c  prometheus-2.46.0.linux-amd64 ,\u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u0435\u0433\u043e \u0441\u0441\u044b\u043b\u043a\u0443 \u0438 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c wget\u2019\u043e\u043c \u043f\u0440\u044f\u043c\u043e \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440:<\/p>\n<pre><code>wget https:\/\/github.com\/prometheus\/prometheus\/releases\/download\/v2.46.0\/prometheus-2.46.0.linux-amd64.tar.gz<\/code><\/pre>\n<p>\u0420\u0430\u0437\u0430\u0440\u0445\u0438\u0432\u0438\u0440\u0443\u0435\u043c \u0435\u0433\u043e:<\/p>\n<pre><code>tar -xvf prometheus-2.46.0.linux-amd64.tar.gz \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u044b\u0432\u0430\u0435\u043c \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u043e\u043c mv prometheus-2.46.0.linux-amd64 prometheus <\/code><\/pre>\n<p>\u00a0\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0431\u0443\u0434\u0435\u043c \u0438\u0437 \u044d\u0442\u043e\u0439 \u0436\u0435 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438,\u0442\u0430\u043a \u0447\u0442\u043e \u043b\u0435\u0437\u0435\u043c \u0432 configuration.nix \u0438 \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c:<\/p>\n<pre><code>  systemd.services.prometheus = {       description = \"Prometheus\" ;       wantedBy = [ \"multi-user.target\" ];       serviceConfig = {       #  EnvironmentFile= \"\/etc\/caddy\/Caddyfile\";         ExecStart = \"\/home\/vasya\/prometheus\/prometheus --config.file=\/home\/vasya\/prometheus\/prometheus.yml  \";         ExecStop = \" \";         ExecReload = \" \";         Type = \"notify\";         Restart   = \"always\";         LimitNOFILE=\"1048576\";         TimeoutStopSec=\"infinity\";         SendSIGKILL=\"no\";         User=\"root\";         Group=\"root\";         ProtectProc=\"invisible\";         PrivateTmp=\"true\";         AmbientCapabilities=\"CAP_NET_BIND_SERVICE\";     }; };   systemd.services.prometheus.enable=true; <\/code><\/pre>\n<p>\u0414\u0435\u043b\u0430\u0435\u043c \u0440\u0435\u0431\u0438\u043b\u0434 \u0432 \u0440\u0435\u0430\u043b\u0442\u0430\u0439\u043c\u0435 \u0438 \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442<\/p>\n<p><code>nixos-rebuild switch<\/code><\/p>\n<details class=\"spoiler\">\n<summary>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e77\/c88\/650\/e77c8865086517e47fb53d959d037860.png\" width=\"1480\" height=\"153\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e77\/c88\/650\/e77c8865086517e47fb53d959d037860.png\"\/><\/figure>\n<p>\u0410\u0433\u0430,\u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e.<\/p>\n<p>\u041d\u0430 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0435 \u0432\u044b\u0432\u043e\u0434 \u043e\u0442 \u043a\u043e\u043c\u0430\u043d\u0434 <\/p>\n<p><code>curl localhost:9090 <\/code><\/p>\n<p><code>curl localhost:9090\/graph<\/code><\/p>\n<\/div>\n<\/details>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0434\u0435\u043b\u0430\u0435\u043c \u043a\u043b\u044e\u0447\u0438 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0438\u0430\u0446\u0438\u0438 \u0434\u043b\u044f mc(minio-client\u2019a).<\/p>\n<p>\u0418 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u0434\u043b\u044f \u043f\u0440\u043e\u043c\u0435\u0442\u0435\u0443\u0441\u0430 \u043a\u043e\u043d\u0444\u0438\u0433.<\/p>\n<p>\u0417\u0430\u0445\u043e\u0434\u0438\u043c \u0441\u044e\u0434\u0430 \u043d\u0430 \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c Access keys \u0438 \u043a\u043b\u0438\u043a\u0430\u0435\u043c \u043d\u0430 create access key<\/p>\n<details class=\"spoiler\">\n<summary>\u0412\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b2e\/195\/61c\/b2e19561c644fef85ee4635837b8d5c2.png\" width=\"974\" height=\"151\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b2e\/195\/61c\/b2e19561c644fef85ee4635837b8d5c2.png\"\/><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0418 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043a\u043b\u044e\u0447\u0438 \u043f\u0438\u0448\u0435\u043c \u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 (\u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0438\u0434\u0435\u0442 access key \u043f\u043e\u0442\u043e\u043c secret key):<\/p>\n<pre><code>mc alias set mys3 http:\/\/localhost:9000 ACCESSKEY SECRETKEY\u00a0 <\/code><\/pre>\n<p>\u0438\u043b\u0438 <\/p>\n<pre><code>mc alias set myminio http:\/\/localhost:9000 ACCESSKEY SECRETKEY --api \"s3v4\"<\/code><\/pre>\n<p>mys3 \u2013 \u0430\u043b\u0438\u0430\u0441 \u043d\u0430 \u043d\u0430\u0448 \u0441\u0435\u0440\u0432\u0435\u0440<\/p>\n<p><a href=\"http:\/\/localhost:9000\" rel=\"noopener noreferrer nofollow\">http:\/\/localhost:9000<\/a> \u2013 \u0430\u0434\u0440\u0435\u0441 \u0441 \u043f\u043e\u0440\u0442\u043e\u043c API<\/p>\n<p>\u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0447\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f API : &#8212;api &#171;s3v4&#187; \u00a0<\/p>\n<p>\u041a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 <\/p>\n<pre><code>mc admin prometheus generate mys3 <\/code><\/pre>\n<pre><code>( mc admin prometheus generate ALIAS\u00a0 )<\/code><\/pre>\n<p>\u043d\u0430\u043c \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0441\u044f \u043a\u043e\u043d\u0444\u0438\u0433,\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u0432 Prometheus.yml :<\/p>\n<pre><code>nano prometheus.yml  \u0438 \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u044d\u0442\u0443 \u0447\u0430\u0441\u0442\u044c :    - job_name: minio-job     bearer_token:  \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0442\u043e\u043a\u0435\u043d     metrics_path: \/minio\/v2\/metrics\/cluster     scheme: http     static_configs:   - targets: ['localhost:9000'] <\/code><\/pre>\n<p>\u00a0\u0418 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0433\u0434\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u0440\u043e\u043c\u0435\u0442\u0435\u0443\u0441 \u0412 \/etc\/default\/minio <\/p>\n<pre><code>MINIO_PROMETHEUS_URL=http:\/\/localhost:9090<\/code><\/pre>\n<p>\u0418 \u0440\u0435\u0431\u0443\u0442\u0430\u0435\u043c minio<\/p>\n<pre><code>systemctl restart minioserver.service<\/code><\/pre>\n<details class=\"spoiler\">\n<summary>\u0413\u0440\u0430\u0444\u0438\u043a\u0438<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/5cd\/8db\/95e\/5cd8db95e43e907449123a1a316ec8ce.png\" width=\"974\" height=\"500\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5cd\/8db\/95e\/5cd8db95e43e907449123a1a316ec8ce.png\"\/><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u042d\u0432\u0435\u043d\u0442\u0430\u043c\u0438 minio \u043d\u0443\u0436\u043d\u0430 \u0431\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u043b\u0438 \u043c\u0435\u043d\u0435\u043d\u0434\u0436\u0435\u0440 \u043e\u0447\u0435\u0440\u0435\u0434\u0435\u0439.<\/p>\n<p>\u041d\u0430\u0441\u0442\u0440\u043e\u0438\u043c Postgresql \u043f\u043e\u0434 \u044d\u0442\u043e \u0434\u0435\u043b\u043e.<\/p>\n<pre><code>services.postgresql = {   enable = true;   ensureDatabases = [ \"miniodb\" ];   enableTCPIP = true;   authentication = pkgs.lib.mkOverride 10 ''       #type database  DBuser  auth-method       local all       all     trust       host  all      all     127.0.0.1\/32   trust     # ipv6       host all       all     ::1\/128        trust     ''; }; <\/code><\/pre>\n<p>\u041d\u0430\u0448\u0435 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e\u0435:<\/p>\n<p><code>nixos-rebuild switch<\/code><\/p>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0447\u0442\u043e\u00a0 \u043e\u043d \u0436\u0438\u0432  \u0438 \u043b\u043e\u0433\u0438\u043d\u0438\u043c\u0441\u044f \u043f\u043e\u0434 postgres :<\/p>\n<p><code>su postgres<\/code>   <\/p>\n<p>\u0438 \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f,\u0435\u0433\u043e \u043f\u0430\u0440\u043e\u043b\u044c \u0438 \u0431\u0434<\/p>\n<p><code>CREATE ROLE minio WITH LOGIN PASSWORD 'minio' CREATEDB;<\/code><\/p>\n<p><code>CREATE DATABASE minio;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/code><\/p>\n<p><code>GRANT ALL PRIVILEGES ON DATABASE minio TO minio;<\/code><\/p>\n<details class=\"spoiler\">\n<summary>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 Events<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/86c\/4a9\/91a\/86c4a991a0027c2e25c0f7af5b51bb74.png\" width=\"974\" height=\"343\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/86c\/4a9\/91a\/86c4a991a0027c2e25c0f7af5b51bb74.png\"\/><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/247\/82d\/048\/24782d048314a4f0cb73b3b3678f3d2f.png\" width=\"614\" height=\"269\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/247\/82d\/048\/24782d048314a4f0cb73b3b3678f3d2f.png\"\/><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b8b\/a97\/106\/b8ba9710683d2cf3058b1c719e6ee9f5.png\" width=\"974\" height=\"235\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b8b\/a97\/106\/b8ba9710683d2cf3058b1c719e6ee9f5.png\"\/><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b85\/d4d\/d40\/b85d4dd40bbed8baa5785561755a4ae1.png\" width=\"974\" height=\"167\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b85\/d4d\/d40\/b85d4dd40bbed8baa5785561755a4ae1.png\"\/><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/46b\/475\/7f9\/46b4757f9064ad29bd434b7d94da6830.png\" width=\"709\" height=\"358\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/46b\/475\/7f9\/46b4757f9064ad29bd434b7d94da6830.png\"\/><\/figure>\n<p>\u0421\u043f\u0443\u0441\u0442\u044f \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u0432 \u0431\u0430\u043a\u0435\u0442\u0435 \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0443 \u043d\u0430 \u044d\u0432\u0435\u043d\u0442\u044b<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/75f\/67f\/30e\/75f67f30eb71c85d07a601fc2e49c143.png\" width=\"974\" height=\"373\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/75f\/67f\/30e\/75f67f30eb71c85d07a601fc2e49c143.png\"\/><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6e4\/319\/9af\/6e43199af98bbbb8abfa143e1d21a928.png\" width=\"974\" height=\"799\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6e4\/319\/9af\/6e43199af98bbbb8abfa143e1d21a928.png\"\/><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<p>Restic<\/p>\n<ul>\n<li>\n<p>\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f restic \u043a\u043e \u043c\u043d\u043e\u0433\u0438\u043c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c \u0442\u0438\u043f\u0430\u043c \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0438 \u043e\u043d\u043b\u0430\u0439\u043d\u2011\u0441\u0435\u0440\u0432\u0438\u0441\u044b.<\/p>\n<\/li>\n<li>\n<p>\u041b\u0435\u0433\u043a\u043e, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u043e\u0434\u0438\u043d \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0439 \u0444\u0430\u0439\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0431\u0435\u0437\u00a0\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0438\u043b\u0438\u00a0\u0441\u043b\u043e\u0436\u043d\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438.<\/p>\n<\/li>\n<li>\n<p>\u042d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e, \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435 \u0447\u0430\u0441\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u00a0\u0431\u044b\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u044b \u0432\u00a0\u0444\u0430\u0439\u043b\u0430\u0445, \u0434\u043b\u044f\u00a0\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u044b \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0435 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u0443\u044e \u043a\u043e\u043f\u0438\u044e.<\/p>\n<\/li>\n<li>\n<p>\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e, \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0442\u0449\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u043c\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e \u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438 \u043d\u0430\u00a0\u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0442\u0430\u0434\u0438\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c\u043e, \u0447\u0442\u043e\u00a0\u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c\u00a0\u0431\u044b\u0442\u044c \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u043c, \u0447\u0442\u043e\u00a0\u0432\u0430\u0448\u0438 \u0444\u0430\u0439\u043b\u044b \u043c\u043e\u0433\u0443\u0442\u00a0\u0431\u044b\u0442\u044c \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u043f\u0440\u0438\u00a0\u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438.<\/p>\n<\/li>\n<li>\n<p>\u0421\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u00a0\u2014 Restic \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u0435\u043d \u0434\u043b\u044f\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0438\u043c\u0435\u0435\u0442 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434.<\/p>\n<\/li>\n<\/ul>\n<p>(C)<a href=\"https:\/\/nixos.org\/\" rel=\"noopener noreferrer nofollow\">https:\/\/nixos.org\/<\/a><\/p>\n<p>\u0427\u0435\u043c \u043e\u043d \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u043b\u0441\u044f : <\/p>\n<ul>\n<li>\n<p>\u0441\u0436\u0438\u043c\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435;<\/p>\n<\/li>\n<li>\n<p>\u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u0441\u044f \u043a \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0443 \u0447\u0435\u0440\u0435\u0437 local\/sftp\/ftp\/s3\/http;<\/p>\n<\/li>\n<li>\n<p>\u043f\u0440\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u043c \u043f\u0440\u043e\u0433\u043e\u043d\u0435 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043b\/\u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u043b \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0432\u0448\u0438\u0435\u0441\u044f \u0434\u0430\u043d\u043d\u044b\u0435;<\/p>\n<\/li>\n<li>\n<p>\u00ab\u043c\u043e\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u0430\u044f\u00bb \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0441\u0436\u0430\u0442\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440;<\/p>\n<\/li>\n<li>\n<p>\u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 (\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f).<\/p>\n<\/li>\n<\/ul>\n<p>\u0427\u0435\u043c \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u043b\u0441\u044f:<\/p>\n<ul>\n<li>\n<p>\u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043c\u043d\u0438\u0442\u044c \u043a\u0443\u0434\u0430 \u043f\u043e\u043b\u043e\u0436\u0438\u043b \u0444\u0430\u0439\u043b \u0441 \u043f\u0430\u0440\u043e\u043b\u0435\u043c.<\/p>\n<\/li>\n<\/ul>\n<p>\u00a0\u041f\u043e\u0434\u0433\u043e\u0442\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0432\u0441\u0435:<\/p>\n<p>\u0414\u0435\u043b\u0430\u0435\u043c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043a\u043b\u044e\u0447\u0438 \u0438\u043b\u0438\u00a0\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0442\u0435, \u0447\u0442\u043e\u00a0\u0434\u0435\u043b\u0430\u043b\u0438 \u0434\u043e\u00a0\u044d\u0442\u043e\u0433\u043e.<\/p>\n<p>\u0414\u0435\u043b\u0430\u0435\u043c \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b \u0441 \u043f\u0430\u0440\u043e\u043b\u0435\u043c:<\/p>\n<pre><code>echo \"barsik \" > password<\/code><\/pre>\n<p>\u041f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435 <\/p>\n<pre><code>export AWS_ACCESS_KEY_ID= ACCESS KEY export AWS_SECRET_ACCESS_KEY= SECRET KEY  <\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c restic \u0434\u043b\u044f \u0438\u043d\u0438\u0446\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f:<\/p>\n<pre><code>restic -r s3:http:\/\/localhost:9000\/1111 init<\/code><\/pre>\n<p>-r \u2013\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439<\/p>\n<p>s3 \u2013\u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b<\/p>\n<p><a href=\"http:\/\/localhost:9000\/\" rel=\"noopener noreferrer nofollow\">http:\/\/localhost:9000\/<\/a> -\u0441\u0435\u0440\u0432\u0435\u0440<\/p>\n<p>1111 \u2013\u0431\u0430\u043a\u0435\u0442<\/p>\n<p>Init \u2013\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u043e\u0441\u043b\u0435 \u0432\u0432\u043e\u0434\u0430 \u043f\u0430\u0440\u043e\u043b\u044f \u2013 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/4e0\/8e1\/084\/4e08e1084734f473f2df4ba5732a0b48.png\" width=\"888\" height=\"91\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4e0\/8e1\/084\/4e08e1084734f473f2df4ba5732a0b48.png\"\/><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0421\u0435\u0439\u0447\u0430\u0441 \u043f\u0440\u043e\u043f\u0438\u0448\u0435\u043c \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043c \u0434\u0440\u0443\u0433\u043e\u0439 \u0434\u0438\u0441\u043a,\u043a\u0443\u0434\u0430 minio \u0431\u0443\u0434\u0435\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u043f\u043e\u0434\u043f\u0440\u0430\u0432\u0438\u043c \u0435\u0433\u043e \u043a\u043e\u043d\u0444\u0438\u0433.<\/p>\n<details class=\"spoiler\">\n<summary>lsblk<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/07c\/7be\/f7b\/07c7bef7b4c6de5e292cffc89074506c.png\" width=\"555\" height=\"189\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/07c\/7be\/f7b\/07c7bef7b4c6de5e292cffc89074506c.png\"\/><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0424\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u0443\u0435\u043c \u0435\u0433\u043e<\/p>\n<p><code>mkfs.ext4 \/dev\/sdb<\/code><\/p>\n<p>\u041f\u0440\u0438\u043c\u043e\u043d\u0442\u0438\u0440\u0443\u0435\u043c \u0435\u0433\u043e<\/p>\n<p><code>mkdir \/mnt<\/code> (\u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u044d\u0442\u043eq \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u043d\u0435\u0442 \u0432 NIXOS)<\/p>\n<p><code>mount \/dev\/sdb \/mnt<\/code><\/p>\n<p>\u0414\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \/etc\/fstab \u2013\u043d\u0435 \u043f\u043e\u043c\u043e\u0436\u0435\u0442, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f, \u0438 \u043c\u044b \u043f\u043e\u0439\u0434\u0435\u043c \u0434\u0440\u0443\u0433\u0438\u043c \u043f\u0443\u0442\u0435\u043c.<\/p>\n<p>\u0421\u043c\u043e\u0442\u0440\u0438\u043c UUID \u0434\u0438\u0441\u043a\u043e\u0432<\/p>\n<p><code>ls \/dev\/disk\/by-uuid\/<\/code><\/p>\n<p>\u041a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u0438\u0445 \u0438 \u0438\u0434\u0435\u043c \u0432 <code>\/etc\/nixos\/hardware-configuration.nix<\/code><\/p>\n<details class=\"spoiler\">\n<summary>ls \/dev\/disk\/by-uuid<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/9ff\/756\/eb7\/9ff756eb726a6270acbeec1be0936e1e.png\" width=\"961\" height=\"175\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9ff\/756\/eb7\/9ff756eb726a6270acbeec1be0936e1e.png\"\/><\/figure>\n<p>\u0418 \u0434\u0435\u043b\u0430\u0435\u043c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0431\u043b\u043e\u043a,\u0433\u0434\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0448 UUID \u0438 \u0442\u043e\u0447\u043a\u0430 \u043c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/5ad\/e57\/dd4\/5ade57dd4ee0df5c2a7e8b83f3303f44.png\" width=\"974\" height=\"215\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5ad\/e57\/dd4\/5ade57dd4ee0df5c2a7e8b83f3303f44.png\"\/><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0444\u0430\u0439\u043b \u0438 \u0440\u0435\u0431\u0438\u043b\u0434\u0438\u043c\u0441\u044f.<\/p>\n<p>\u041e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043d\u0430\u0448\u0443 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 <code>systemctl stop minioserver.service<\/code><\/p>\n<p>\u041f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u043c \u043f\u0430\u043f\u043a\u0443 <code>mv \/var\/cloud\/ \/mnt\/<\/code><\/p>\n<p>\u041f\u0440\u0430\u0432\u0438\u043c \u043f\u0443\u0442\u044c \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u00a0\/etc\/default\/minio \u2013<\/p>\n<p><code>MINIO_VOLUMES=\/mnt\/cloud<\/code><\/p>\n<p>\u0412\u043c\u0435\u0441\u0442\u043e:<\/p>\n<p><code>MINIO_VOLUMES=\/var\/cloud<\/code><\/p>\n<p>\u0418 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 &#8212; <code>systemctl start minioserver.service<\/code><\/p>\n<p>\u0418 \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443.<\/p>\n<p><code>restic -r s3:http:\/\/localhost:9000\/1111 backup \/ -p password --exclude=\/mnt --exclude=\/proc --exclude=\/sys\/<\/code><\/p>\n<p>\u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b:\u0441\u0435\u0440\u0432\u0435\u0440:\u0431\u0430\u043a\u0435\u0442( \u043a\u0443\u0434\u0430 \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0431\u0435\u043a\u0430\u043f\u0438\u0442\u0441\u044f)<\/p>\n<p>\u00a0\u00a0\/ &#8212; \u0440\u0430\u0437\u0434\u0435\u043b,\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0435\u043a\u0430\u043f\u0438\u043c <\/p>\n<p>&#8212;exclude=\/&#8230;. \u2013\u0438\u0441\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043f\u0430\u043f\u043a\u0443, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u044d\u0442\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c,\u0442\u0430\u043a \u0436\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0431\u043b\u043e\u0447\u043d\u044b\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430.<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0435\u0440\u0432\u044b\u0439 \u043f\u0440\u043e\u0433\u043e\u043d<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/49f\/a66\/a31\/49fa66a315309da0195467be43abfe60.png\" width=\"974\" height=\"80\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/49f\/a66\/a31\/49fa66a315309da0195467be43abfe60.png\"\/><\/figure>\n<p>\u0418 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 :<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b0b\/831\/1b5\/b0b8311b5bfd5a3dc8f08327bf7ebc6b.png\" width=\"1122\" height=\"175\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b0b\/831\/1b5\/b0b8311b5bfd5a3dc8f08327bf7ebc6b.png\"\/><\/figure>\n<pre><code>repository 9d310fc7 opened (version 2, compression level auto) no parent snapshot found, will read all files  Files:       176282 new,     0 changed,     0 unmodified  Dirs:        77463 new,     0 changed,     0 unmodified  Added to the repository: 1.161 GiB (468.101 MiB stored)  processed 176282 files, 4.366 GiB in 11:48 snapshot 4463d77a saved<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>\u0412\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u043e\u0433\u043e\u043d<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>restic -r s3:http:\/\/localhost:9000\/1111 backup \/ -p password --exclude=\/mnt --exclude=\/proc --exclude=\/sys\/  repository 9d310fc7 opened (version 2, compression level auto) using parent snapshot 4463d77a  Files:          17 new,    12 changed, 176201 unmodified  Dirs:            7 new,    30 changed, 77428 unmodified  Added to the repository: 12.837 MiB (1.346 MiB stored)  processed 176230 files, 4.366 GiB in 3:18 snapshot f9e5538f saved<\/code><\/pre>\n<p>\u0412\u0441\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0440\u043e\u0433\u043e\u043d\u044b \u0434\u0430\u044e\u0442 +- 10 \u0441\u0435\u043a\u0443\u043d\u0434,\u043d\u043e \u043d\u0435 \u0431\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e.<\/p>\n<details class=\"spoiler\">\n<summary>\u0412\u0441\u0435 \u043f\u0440\u043e\u0433\u043e\u043d\u044b(\u0434\u0430\u043d\u043d\u044b\u0435 \u043a\u044d\u0448\u0430 \u0434\u0430\u044e\u0442 +- \u0434\u043e 10 \u0444\u0430\u0439\u043b\u043e\u0432 ):  <\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e56\/ae2\/02d\/e56ae202d09b7f52dd2570c48c35d9d1.png\" width=\"1138\" height=\"756\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e56\/ae2\/02d\/e56ae202d09b7f52dd2570c48c35d9d1.png\"\/><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<\/div>\n<\/details>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0447\u0438\u0441\u0442\u0438\u043c nix-store cache \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442.<\/p>\n<p><code>nix-collect-garbage<\/code><\/p>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0447\u0438\u0441\u0442\u043a\u0438:<\/p>\n<p><code>note: currently hard linking saves -0.00 MiB<br \/> 1850 store paths deleted, 375.93 MiB freed<\/code><\/p>\n<pre><code>restic -r s3:http:\/\/localhost:9000\/1111 backup \/ -p password --exclude=\/mnt --exclude=\/proc --exclude=\/sys\/ repository 9d310fc7 opened (version 2, compression level auto) using parent snapshot dbeefb91  Files:          10 new,    13 changed, 168367 unmodified Dirs:            5 new,    42 changed, 76552 unmodified Added to the repository: 59.025 MiB (11.062 MiB stored)  processed 168390 files, 4.037 GiB in 2:35 snapshot 50b958c1 saved<\/code><\/pre>\n<p>\u041e\u0442\u043b\u0438\u0447\u043d\u043e,\u0442\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0440\u0430\u0437\u043d\u0438\u0446\u0443 \u043c\u0435\u0436\u0434\u0443 \u0441\u043d\u0430\u043f\u0448\u043e\u0442\u0430\u043c\u0438:<\/p>\n<pre><code>restic -r s3:http:\/\/localhost:9000\/1111 diff 4463d77a 50b958c1 -p password  (\u043f\u0440\u043e\u043f\u0443\u0449\u0443 \u0442\u0443\u0442 \u043b\u043e\u0433 \u0441 \u0438\u043c\u0435\u043d\u0430\u043c\u0438 \u0444\u0430\u0439\u043b\u043e\u0432) Files:         120 new,  8012 removed,     8 changed Dirs:           14 new,   878 removed Others:          0 new,  1122 removed Data Blobs:    226 new,  5912 removed Tree Blobs:     60 new,   921 removed   Added:   71.350 MiB   Removed: 347.188 MiB<\/code><\/pre>\n<pre><code>\u0423\u0434\u0430\u043b\u044f\u0435\u043c \u0444\u0430\u0439\u043b  rm prometheus-2.46.0.linux-amd64.tar.gz \u0438 \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0447\u0442\u043e \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c:  ls  minio  password  prometheus<\/code><\/pre>\n<pre><code>\u041f\u043e\u0441\u043b\u0435  restic -r s3:http:\/\/localhost:9000\/1111 -p password restore latest --target \/ \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0432 \u043b\u043e\u0433   ignoring error for \/....: read-only file system There were 533335 errors \u0412\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u043c \u0447\u0442\u043e \u043c\u044b \u043d\u0430\u0445\u043e\u0434\u0438\u043c\u0441\u044f \u0432 NixOS \u0438 \u0442\u043e \u0447\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0439  \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u0435\u043d\u0438\u044f,\u0442\u0430\u043a \u0447\u0442\u043e \u0421\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0444\u0430\u0439\u043b \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438: ll total 189280 -rwxr-xr-x 1 root root 98934784 \u0430\u0432\u0433 24 02:00 minio -rw-r--r-- 1 root root        8 \u0430\u0432\u0433 24 14:56 password drwxr-xr-x 6 1001  123     4096 \u0430\u0432\u0433 24 12:30 prometheus -rw-r--r-- 1 root root 94876162 \u0438\u044e\u043b 25 16:16 prometheus-2.46.0.linux-amd64.tar.gz<\/code><\/pre>\n<p>\u0421\u0434\u0435\u043b\u0430\u0435\u043c \u0441\u043d\u0430\u043f\u0448\u043e\u0442 \u0434\u0438\u0441\u043a\u0430 \u0441\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c,\u043d\u043e \u0434\u043b\u044f\u00a0\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u0440\u0435\u0431\u0438\u043b\u0434\u0438\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433(\u0443\u0431\u0440\u0430\u0442\u044c \u0438\u043b\u0438\u00a0\u0437\u0430\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0442\u044c \u0434\u0438\u0441\u043a \u0441\u00a0\u0442\u043e\u0447\u043a\u043e\u0439 \u043c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \/mnt ), \u0447\u0442\u043e\u0431\u044b \u043d\u0435\u00a0\u0431\u044b\u043b\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441\u00a0\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u043e\u0439 \u0441\u043e \u0441\u043d\u0430\u043f\u0448\u043e\u0442\u0430.\u0421 \u044d\u0442\u043e\u0433\u043e \u0441\u043d\u0430\u043f\u0448\u043e\u0442\u0430 \u0431\u0443\u0434\u0435\u043c \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430\u00a0\u0434\u0440\u0443\u0433\u0443\u044e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043a\u0443.<\/p>\n<details class=\"spoiler\">\n<summary>hardware-configuration.nix<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b60\/f29\/2c0\/b60f292c042a81955170b69381390824.png\" width=\"630\" height=\"159\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b60\/f29\/2c0\/b60f292c042a81955170b69381390824.png\"\/><\/figure>\n<p>\u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u0441\u044f \u0432 \u043a\u043e\u043d\u0444\u0438\u0433 \u0445\u0430\u0440\u0434\u0432\u0430\u0440\u0435:<\/p>\n<pre><code>nano \/etc\/nixos\/hardware-configuration.nix<\/code><\/pre>\n<p>\u043f\u0440\u0430\u0432\u0438\u043c \u0438 \u043f\u043e\u0442\u043e\u043c \u0438 \u0440\u0435\u0431\u0438\u043b\u0434\u0438\u043c\u0441\u044f<\/p>\n<p>\u0418 \u0443 \u043d\u0430\u0441 \u043e\u0442\u0432\u0430\u043b\u0438\u043b\u0441\u044f \u0434\u0438\u0441\u043a!<\/p>\n<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/46f\/689\/3b0\/46f6893b0136dbae9e753a2ca681f280.png\" width=\"379\" height=\"80\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/46f\/689\/3b0\/46f6893b0136dbae9e753a2ca681f280.png\"\/><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<pre><code>\u0427\u0438\u043d\u0438\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e mount \/dev\/sdb \/mnt\/ \u0438  systemctl restart minioserver.service<\/code><\/pre>\n<p>\u0418\u043d\u0430\u0447\u0435 \u043a\u0443\u0434\u0430 \u0431\u044b \u0431\u0435\u043a\u0430\u043f\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b\u0438\u0441\u044c..<\/p>\n<p>\u0421\u043d\u0438\u043c\u0435\u043c \u0434\u0430\u043c\u043f \u043d\u0430\u0448\u0435\u0433\u043e \u0434\u0438\u0441\u043a\u0430.<\/p>\n<pre><code>dd if=\/dev\/sda | restic -r s3:http:\/\/localhost:9000\/iii -p password backup --stdin --stdin-filename sda1 \u0438 \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442: repository 4ea9802a opened (version 2, compression level auto) created new cache in \/root\/.cache\/restic 67108864+0 records in9 GiB, total 1 files 0 B, 0 errors 67108864+0 records out 34359738368 bytes (34 GB, 32 GiB) copied, 759,113 s, 45,3 MB\/s  Files:           1 new,     0 changed,     0 unmodified Dirs:            0 new,     0 changed,     0 unmodified Added to the repository: 10.014 GiB (2.742 GiB stored)  processed 1 files, 32.000 GiB in 12:37 snapshot ae4bdfcf saved <\/code><\/pre>\n<p>\u0414\u0435\u043b\u0430\u0435\u043c \u0432\u0442\u043e\u0440\u0443\u044e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043a\u0443 (\u0432 \u043c\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432 VirtualBox):<\/p>\n<p>\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u0441\u044f \u0441 nixos_minimal livecd)<\/p>\n<details class=\"spoiler\">\n<summary>\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0435\u0435 IP <\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/a2f\/61d\/445\/a2f61d44526c8f061053ceba0d426896.png\" width=\"721\" height=\"342\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a2f\/61d\/445\/a2f61d44526c8f061053ceba0d426896.png\"\/><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<p>\u041a\u043e\u043c\u0430\u043d\u0434\u043e\u0439  <\/p>\n<pre><code>passwd<\/code><\/pre>\n<p>\u043c\u0435\u043d\u044f\u0435\u043c \u0435\u0439 \u043f\u0430\u0440\u043e\u043b\u044c \u0438 \u0432\u0445\u043e\u0434\u0438\u043c \u043f\u043e SSH \u043d\u0430 live \u043e\u0431\u0440\u0430\u0437.<\/p>\n<p>\u0421\u043c\u043e\u0442\u0440\u0438\u043c \u0447\u0442\u043e \u043f\u0440\u0438\u043c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e:<\/p>\n<pre><code>df -h Filesystem      Size  Used Avail Use% Mounted on devtmpfs        197M     0  197M   0% \/dev tmpfs           2.0G     0  2.0G   0% \/dev\/shm tmpfs           983M  2.6M  980M   1% \/run tmpfs           2.0G  384K  2.0G   1% \/run\/wrappers tmpfs           2.0G   25M  1.9G   2% \/ \/dev\/root       833M  833M     0 100% \/iso \/dev\/loop0      800M  800M     0 100% \/nix\/.ro-store tmpfs           2.0G  8.0K  2.0G   1% \/nix\/.rw-store overlay         2.0G  8.0K  2.0G   1% \/nix\/store tmpfs           393M     0  393M   0% \/run\/user\/1000<\/code><\/pre>\n<p>\u0421\u0442\u0430\u0432\u0438\u043c restic<\/p>\n<pre><code>nix-env --install restic<\/code><\/pre>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0442\u0430\u043a\u043e\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:<\/p>\n<pre><code>installing 'restic-0.15.2' these 2 paths will be fetched (21.58 MiB download, 90.60 MiB unpacked):   \/nix\/store\/91hfy0g7a9qq38qa05bann19sy152s9x-rclone-1.62.2   \/nix\/store\/rf3qps2gxqy3n22nlh8fybm09qgyy0dc-restic-0.15.2 copying path '\/nix\/store\/91hfy0g7a9qq38qa05bann19sy152s9x-rclone-1.62.2' from 'https:\/\/cache.nixos.org'... copying path '\/nix\/store\/rf3qps2gxqy3n22nlh8fybm09qgyy0dc-restic-0.15.2' from 'https:\/\/cache.nixos.org'... building '\/nix\/store\/ijbbja3frzd7ab6l3awsd7k3k9rkwz2r-user-environment.drv'... <\/code><\/pre>\n<p>\u041a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u043d\u0430 \u043d\u0430\u0448\u0443 \u043b\u0430\u0439\u0444 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043a\u0443 \u043a\u043b\u044e\u0447\u0438:<\/p>\n<pre><code>export AWS_ACCESS_KEY_ID=ACCESS_KEY export AWS_SECRET_ACCESS_KEY=SECRET_KEY \u0441\u0440\u0430\u0437\u0443 \u0434\u0435\u043b\u0430\u0435\u043c \u0444\u0430\u0439\u043b password echo \"barsik\" > password<\/code><\/pre>\n<p>\u0418 \u043f\u0438\u0448\u0435\u043c \u043d\u0430\u0448 \u043e\u0431\u0440\u0430\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439:<\/p>\n<pre><code> restic -r s3:http:\/\/192.168.4.4:9000\/iii -p password dump latest sda > \/dev\/sda<\/code><\/pre>\n<p>\u0418 \u043f\u043e\u043a\u0430 \u043e\u043d \u0440\u0430\u0441\u043a\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0434\u0430\u043c\u043f, \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435:<\/p>\n<pre><code>nano \/etc\/nixos\/hardware-configuration.nix \u0440\u0435\u0431\u0438\u043b\u0434\u0438\u043c\u0441\u044f \u0438 \u0432\u0441\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c.<\/code><\/pre>\n<details class=\"spoiler\">\n<summary>\u0420\u0430\u0441\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0435\u043c \u043d\u0430\u0448 \u0432\u0442\u043e\u0440\u043e\u0439 \u0434\u0438\u0441\u043a <\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/eb9\/967\/f12\/eb9967f12fd7d46d98ec6b455e718775.png\" width=\"601\" height=\"137\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/eb9\/967\/f12\/eb9967f12fd7d46d98ec6b455e718775.png\"\/><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0422\u0435\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u0434\u0430\u043c\u043f \u0437\u0430\u043b\u0438\u043b\u0441\u044f \u043d\u0430\u00a0\u043d\u0430\u0448 \u0434\u0438\u0441\u043a:<\/p>\n<pre><code># ll \/dev\/sda sda   sda1<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c\u0441\u044f \u0438 \u0443\u00a0\u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043a\u043e\u043f\u0438\u044f \u043d\u0430\u0448\u0435\u0439 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043a\u0438.<\/p>\n<pre><code>Original VM \u0441 IP \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0441\u0435\u0442\u0438 192.168.4.4\/24 [root@nixserver:\/home\/vasya]# df -h Filesystem      Size  Used Avail Use% Mounted on devtmpfs        100M     0  100M   0% \/dev tmpfs           992M   28K  992M   1% \/dev\/shm tmpfs           496M  2,6M  494M   1% \/run tmpfs           992M  432K  992M   1% \/run\/wrappers \/dev\/sda1        32G  5,2G   25G  18% \/ tmpfs           199M     0  199M   0% \/run\/user\/1000 \/dev\/sdb         30G   12G   17G  40% \/mnt<\/code><\/pre>\n<pre><code>Copy VM (inet 192.168.4.6\/24) [sudo] password for vasya:  [root@nixserver:\/home\/vasya]# df -h Filesystem      Size  Used Avail Use% Mounted on devtmpfs        197M     0  197M   0% \/dev tmpfs           2,0G   28K  2,0G   1% \/dev\/shm tmpfs           983M  2,5M  980M   1% \/run tmpfs           2,0G  432K  2,0G   1% \/run\/wrappers \/dev\/sda1        32G  5,3G   25G  18% \/ tmpfs           393M     0  393M   0% \/run\/user\/1000<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0438\u0448\u0435\u043c systemd service ,\u0447\u0442\u043e\u0431\u044b \u043f\u043e \u0442\u0430\u0439\u043c\u0435\u0440\u0443 \u0434\u0435\u043b\u0430\u043b \u0431\u044d\u043a\u0430\u043f:<\/p>\n<pre><code>nano \/etc\/nixos\/configuration.nix<\/code><\/pre>\n<pre><code>systemd.services.s3backup= {   serviceConfig.Type = \"oneshot\";   path = with pkgs; [ bash ];   script = ''     export AWS_ACCESS_KEY_ID=VnwVEv0iLtpUWaiHRvXL     export AWS_SECRET_ACCESS_KEY=dQjjJyvNjGUfyQIn2PHJbvkEaWqI5JKffEE3i0J6     ${pkgs.restic}\/bin\/restic -r s3:http:\/\/192.168.4.4:9000\/1111 backup \/home\/vasya -p \/home\/vasya\/password   ''; };  systemd.timers.s3backup = {   wantedBy = [ \"timers.target\" ];   partOf = [ \"s3backup.service\" ];   timerConfig = {     OnCalendar = \"OnCalendar=*:0\/15\"; #every 15 minutes     Unit = \"s3backup.service\";   }; };     systemd.services.s3backup.enable=true;<\/code><\/pre>\n<p>\u0420\u0435\u0431\u0438\u043b\u0434\u0438\u043c\u0441\u044f \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c: <\/p>\n<p><code>systemctl start s3backup.timer &amp;&amp; systemctl start s3backup.service<\/code><\/p>\n<pre><code>\u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c: restic -r s3:http:\/\/localhost:9000\/1111 snapshots -p password repository 9d310fc7 opened (version 2, compression level auto) ID        Time                 Host        Tags        Paths ------------------------------------------------------------------ 4463d77a  2023-08-24 17:55:16  nixserver               \/ f9e5538f  2023-08-24 18:09:58  nixserver               \/ 7782b8ec  2023-08-25 09:02:05  nixserver               \/ dbeefb91  2023-08-25 09:06:00  nixserver               \/ 50b958c1  2023-08-25 09:18:49  nixserver               \/ 4b03d494  2023-08-25 16:47:13  nixserver               \/home\/vasya ------------------------------------------------------------------ 6 snapshots<\/code><\/pre>\n<p> \u0418 \u043d\u0430\u00a0\u044d\u0442\u043e\u043c \u043f\u043e\u0436\u0430\u043b\u0443\u0439 \u0432\u0441\u0435.<\/p>\n<p>\u0421\u0435\u0439\u0447\u0430\u0441 \u043f\u0440\u043e\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e \u0432\u043e\u043f\u0440\u043e\u0441 \u043e\u00a0\u0447\u0435\u043c \u0435\u0449\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c,\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043e\u00a0\u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430\u0445,\u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u0431\u043e\u0442\u0430,\u0447\u0442\u043e\u0431\u044b \u043e\u0442\u043f\u0438\u0441\u044b\u0432\u0430\u043b \u043a\u043e\u0433\u0434\u0430 \u0431\u044d\u043a\u0430\u043f \u0437\u0430\u043b\u0438\u043b\u0441\u044f, \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u0445, \u0434\u0435\u043f\u043b\u043e\u0435, \u043a\u0430\u043a \u0432\u0430\u0440\u0438\u0430\u043d\u0442, \u043d\u043e \u0443\u0436\u0435 \u0432\u00a0\u0440\u0430\u043c\u043a\u0430\u0445 2\u0439 \u0447\u0430\u0441\u0442\u0438.<\/p>\n<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><\/p>\n<div class=\"tm-article-poll-container\"><!--[--><\/p>\n<div class=\"tm-article-poll tm-article-poll_variant-bordered\">\n<div class=\"tm-notice tm-notice_positive tm-article-poll__notice\"><!----><\/p>\n<div class=\"tm-notice__inner\"><!----><\/p>\n<div class=\"tm-notice__content\" data-test-id=\"notice-content\"><!--[--><span>\u0422\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043c\u043e\u0433\u0443\u0442 \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u043e\u043f\u0440\u043e\u0441\u0435. <a rel=\"nofollow\" href=\"\/kek\/v1\/auth\/habrahabr\/?back=\/ru\/articles\/756976\/&#038;hl=ru\">\u0412\u043e\u0439\u0434\u0438\u0442\u0435<\/a>, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430.<\/span><!--]--><\/div>\n<\/div>\n<\/div>\n<p><!--[--><\/p>\n<div class=\"tm-article-poll__header\">\u0414\u0435\u043b\u0430\u0442\u044c \u0432\u0442\u043e\u0440\u0443\u044e \u0447\u0430\u0441\u0442\u044c?<\/div>\n<div class=\"tm-article-poll__answers\"><!--[--><\/p>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent tm-article-poll__answer-percent_winning\">94.74% <\/span><span class=\"tm-article-poll__answer-label\">\u0434\u0430<\/span><span class=\"tm-article-poll__answer-votes\">18<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress tm-article-poll__answer-progress_winning\" style=\"width: 94.74%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">5.26% <\/span><span class=\"tm-article-poll__answer-label\">\u043d\u0435\u0442<\/span><span class=\"tm-article-poll__answer-votes\">1<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 5.26%\"><\/div>\n<\/div>\n<\/div>\n<p><!--]--><\/div>\n<div class=\"tm-article-poll__stats\"> \u041f\u0440\u043e\u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u043b\u0438 19 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.   \u0412\u043e\u0437\u0434\u0435\u0440\u0436\u0430\u043b\u0438\u0441\u044c 7 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439. <\/div>\n<p><!--]--><\/div>\n<p><!--]--><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/756976\/\"> https:\/\/habr.com\/ru\/articles\/756976\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442, \u043c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0410\u043b\u0435\u043a\u0441\u0435\u0439, \u044f\u0432\u043b\u044f\u044e\u0441\u044c IT\u2011\u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u043c \u0432\u00a0\u043e\u0434\u043d\u043e\u0439 \u0438\u0437\u00a0\u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0439. \u0418\u043d\u043e\u0433\u0434\u0430 \u0432\u043a\u043b\u044e\u0447\u0430\u044e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e \u0430\u0432\u0430\u043d\u0442\u044e\u0440\u0438\u0441\u0442\u0430 \u0438 \u0438\u0449\u0443 \u0447\u0442\u043e\u2011\u0442\u043e \u0440\u0435\u0434\u043a\u043e\u0435 \u0438 \u043e\u0447\u0435\u043d\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435.\u0418 \u0432\u00a0\u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0445\u043e\u0447\u0443 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441\u0442\u0435\u043a\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u043c\u0435\u0435\u0442 \u043f\u0440\u0430\u0432\u043e \u043d\u0430\u00a0\u0436\u0438\u0437\u043d\u044c. <\/p>\n<p>\u0421\u0440\u0430\u0437\u0443 \u0441\u043a\u0430\u0436\u0443 \u0442\u0443\u0442 \u043d\u0435\u00a0\u0431\u0443\u0434\u0435\u0442 BestPractics ( \u044f \u043d\u0435\u00a0\u0442\u0430\u043a \u0434\u0430\u0432\u043d\u043e \u044f \u0432\u0437\u044f\u043b\u0441\u044f \u00abNix\u00bb \u0438 \u0433\u0434\u0435\u2011\u0442\u043e \u044f \u043e\u0442\u0445\u043e\u0436\u0443 \u043e\u0442\u00a0\u0435\u0433\u043e \u00ab\u0444\u0438\u043b\u043e\u0441\u043e\u0444\u0438\u0438\u00bb).<\/p>\n<p>\u041d\u043e\u00a0\u044d\u0442\u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0441\u00a0\u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u043c\u0438 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0438 \u0432 \u0434\u0440\u0443\u0433\u0438\u0445\u00a0\u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430\u0445.<\/p>\n<p>\u041c\u043e\u0436\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u044d\u0442\u0443 \u0441\u0442\u0430\u0442\u044c\u044e \u043a\u0430\u043a\u00a0\u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u043b\u0438\u00a0\u0436\u0435 \u043a\u0430\u043a\u00a0\u043d\u0435\u00a0\u0441\u0430\u043c\u044b\u0439 \u043b\u0443\u0447\u0448\u0438\u0439( \u043d\u043e\u00a0\u0432\u0441\u0435 \u0436\u0435) \u043c\u0430\u043d\u0443\u0430\u043b, \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u043d\u0435 \u043d\u0435\u00a0\u0445\u0432\u0430\u0442\u0430\u043b\u043e. <\/p>\n<p>\u0414\u0430\u00a0\u0438 \u043d\u0430\u0434\u0435\u044e\u0441\u044c, \u0447\u0442\u043e\u00a0\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0434\u043b\u044f\u00a0\u043a\u043e\u0433\u043e\u2011\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430, \u043a\u0430\u043a\u00a0\u0438 \u0434\u043b\u044f\u00a0\u043c\u0435\u043d\u044f.<\/p>\n<p>\u0427\u0442\u043e\u00a0\u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0431\u0443\u0434\u0435\u0442:<\/p>\n<ol>\n<li>\n<p>\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0431\u0437\u043e\u0440 \u0441\u00a0\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u043e\u0439 \u041f\u041e\u00a0\u0434\u043b\u044f\u00a0\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e, \u0440\u0435\u0434\u043a\u043e\u0433\u043e, \u043d\u043e\u00a0\u0432\u0435\u0441\u044c\u043c\u0430 \u0434\u043e\u0441\u0442\u043e\u0439\u043d\u043e\u0433\u043e \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430.<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e \u0432\u0435\u0431\u2011\u0441\u0435\u0440\u0432\u0435\u0440\u0430(\u043d\u0430 \u043c\u043e\u0435\u0439 \u043f\u0430\u043c\u044f\u0442\u0438\u00a0\u2014 \u0432\u00a0\u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0432\u0435\u0437\u0434\u0435 Apache\/Nginx,\u0438 \u0432\u00a0\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0432\u0440\u0435\u043c\u044f traefik \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f, \u043a\u0430\u043a\u00a0\u043f\u0440\u043e\u043a\u0441\u0438 ).<\/p>\n<\/li>\n<li>\n<p>\u0420\u0430\u0437\u0432\u0435\u0440\u043d\u0435\u043c \u0441\u0432\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435,\u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043a\u0430\u043a\u00a0\u043f\u043e\u00a0s3,\u0442\u0430\u043a \u0438 \u043f\u043e\u00a0sftp \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u0441\u044f.<\/p>\n<\/li>\n<li>\n<p>\u0413\u043e\u0442\u043e\u0432\u043a\u0430 \u0431\u044d\u043a\u0430\u043f\u043e\u0432 + \u043f\u0430\u0440\u0443 \u043b\u0430\u0439\u0444\u0445\u0430\u043a\u043e\u0432.<\/p>\n<\/li>\n<\/ol>\n<hr\/>\n<p>Experimental stand:<\/p>\n<ul>\n<li>\n<p>NixOS<\/p>\n<\/li>\n<li>\n<p>Caddy<\/p>\n<\/li>\n<li>\n<p>Minio<\/p>\n<\/li>\n<li>\n<p>Prometheus<\/p>\n<\/li>\n<li>\n<p>restic<\/p>\n<\/li>\n<\/ul>\n<hr\/>\n<p>\u041d\u0430\u0447\u043d\u0435\u043c \u0441\u00a0\u0414\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430.<\/p>\n<p><strong>\u041e\u00a0NixOS<\/strong>\u00a0\u2014 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432 Linux \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0442\u0438\u0432\u043d\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e, \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u044e \u0432\u0441\u0435\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0441\u00a0\u0445\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c, \u0438 \u0438\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u043d\u043e\u0435 \u0441\u0448\u0438\u0432\u0430\u043d\u0438\u0435 \u0438\u0445 \u0432\u00a0\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f (\u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u044f). \u042d\u0442\u043e \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442 \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e\u0441\u0442\u044c \u0438 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u043e\u0441\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439 \u0432\u00a0\u043b\u044e\u0431\u043e\u0439 \u0442\u043e\u0447\u043a\u0435, \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u043a\u00a0\u043b\u044e\u0431\u043e\u043c\u0443 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c\u0443 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044e \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 \u041e\u0421.<\/p>\n<p>NixOS \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u00a0DevOps \u043c\u0435\u0442\u043e\u0434\u0438\u043a\u0435 \u0438 \u0438\u043c\u0435\u0435\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b, \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0430\u043c \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f.<\/p>\n<p>\u041c\u043e\u0434\u0435\u043b\u044c \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 NixOS \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043b\u0435\u0433\u043a\u043e \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043d\u0430\u00a0\u0434\u0440\u0443\u0433\u043e\u043c \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435. \u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043d\u0430\u00a0\u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0442\u0443\u00a0\u0436\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u044b (\u044f\u0434\u0440\u043e, \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u0441\u043b\u0443\u0436\u0431\u044b \u0438\u00a0\u0442.\u00a0\u0434.), \u0437\u0430\u00a0\u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0442\u0435\u0445 \u0447\u0430\u0441\u0442\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435\u00a0\u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u043e\u043c \u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438.<\/p>\n<blockquote>\n<p>\u0414\u0436\u0435\u0441\u0438 \u0421\u043c\u0438\u0442: <\/p>\n<p>\u00ab<em>\u041c\u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f, \u0447\u0442\u043e\u00a0NixOS \u0431\u0435\u0440\u0435\u0442 \u043d\u0430\u00a0\u0441\u0435\u0431\u044f \u0437\u0430\u0431\u043e\u0442\u044b \u043f\u043e\u00a0\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044e \u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u043f\u043e\u043c\u0435\u0449\u0430\u044f \u043a\u0430\u0436\u0434\u043e\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0432\u00a0\u0441\u0432\u043e\u0451 \u201e\u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u0435\u201c, \u0438 \u043d\u0430\u00a0\u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u0434\u043b\u044f\u00a0\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f NixOS \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a\u00a0\u0436\u0435, \u043a\u0430\u043a\u00a0\u0438 \u043b\u044e\u0431\u043e\u0439 \u0434\u0440\u0443\u0433\u043e\u0439 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432 Linux. \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 NixOS \u043d\u0435\u00a0\u0434\u043b\u044f\u00a0\u043d\u043e\u0432\u0438\u0447\u043a\u043e\u0432: \u044f \u043d\u0435\u00a0\u0434\u0443\u043c\u0430\u044e, \u0447\u0442\u043e\u00a0NixOS \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d \u0434\u043b\u044f\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u00a0\u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043d\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043e\u0431\u0449\u0435\u0433\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u0417\u0430\u0442\u043e NixOS \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0430\u043c \u043f\u043e\u043b\u0438\u0433\u043e\u043d \u0434\u043b\u044f\u00a0\u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 Nix, \u0438 \u044f \u0434\u0443\u043c\u0430\u044e, \u0447\u0442\u043e\u00a0\u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0437\u0430\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0435\u0442 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0433\u043e \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f \u0438 \u043f\u0440\u0438\u043d\u044f\u0442\u0438\u044f \u0438 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430\u043c\u0438\u00bb.<\/em><\/p>\n<p>\u042d\u0442\u043e\u00a0\u0431\u044b\u043b\u043e \u0432\u0437\u044f\u0442\u043e \u0438\u0437\u00a0\u0432\u0438\u043a\u0438.\u0422\u0430\u043a \u0447\u0442\u043e,\u0437\u0430 \u043c\u043e\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u043d\u0435\u00a0\u043f\u0438\u0441\u0430\u043b\u00a0\u2014 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u0441\u044f \u043d\u0430\u00a0\u0432\u0438\u043a\u0438\u043f\u0435\u0434\u0438\u044e.<\/p>\n<\/blockquote>\n<p>\u0418 \u0442\u0430\u043a \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c.<\/p>\n<p>\u0421\u0442\u0430\u0432\u0438\u043c \u041e\u0421 \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0433\u0443\u0435\u0432\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u0435\u0440\u0430 \u0441\u00a0live \u043e\u0431\u0440\u0430\u0437\u0430 (\u041c\u043e\u0436\u043d\u043e\u00a0\u0431\u044b\u043b\u043e \u0438 \u0431\u0435\u0437\u00a0\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0442\u043e\u0440\u0430 \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c,\u043d\u043e \u043e\u043d \u0437\u0434\u0435\u0441\u044c \u0434\u043b\u044f\u00a0\u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e\u0441\u0442\u0438).<\/p>\n<details class=\"spoiler\">\n<summary>\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<p>\u041f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u0448\u0430\u0433\u0438\u00a0\u2014 \u0432\u0432\u043e\u0434 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f(\u043d\u0435 \u0441\u0442\u0430\u043b \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0434\u0430\u043b\u0435\u043a\u043e \u0445\u043e\u0434\u0438\u0442\u044c\u00a0\u2014 \u0441\u0434\u0435\u043b\u0430\u043b \u044e\u0437\u0435\u0440\u0430 \u0412\u0430\u0441\u044e,\u0433\u0434\u0435\u2011\u0442\u043e \u0432\u00a0\u043a\u043e\u043d\u0444\u0438\u0433\u0430\u0445 \u043f\u0440\u043e\u0441\u043a\u043e\u0447\u0438\u0442 \u0411\u0430\u0440\u0441\u0438\u043a \u0438 \u0442\u0434,\u0442\u0430\u043a \u0447\u0442\u043e\u00a0\u043d\u0435\u00a0\u043f\u0443\u0433\u0430\u0435\u043c\u0441\u044f).<\/p>\n<details class=\"spoiler\">\n<summary>\u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u0443<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><\/figure>\n<p>\u041e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c\u0441\u044f \u043d\u0430\u00a0\u044d\u0442\u043e\u043c \u043c\u043e\u043c\u0435\u043d\u0442\u0435: \u0434\u043b\u044f\u00a0\u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0445 \u043d\u0443\u0436\u0434,\u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a\u00a0\u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435,\u0432\u0435\u0431\u2011\u0441\u0435\u0440\u0432\u0435\u0440,\u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0431\u044d\u043a\u0430\u043f\u043e\u0432,\u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0438\u044f \u0438 \u0442\u0434\u00a0\u2014 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u0430\u2011\u043d\u0435 \u043d\u0443\u0436\u043d\u0430,\u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c No Desktop.\u0415\u0441\u043b\u0438 \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f\u00a0\u0436\u0438\u0437\u043d\u0438,\u0442\u043e \u0441\u0442\u0430\u0432\u0438\u043c,\u0442\u043e \u0443\u0436\u0435 \u043f\u043e\u00a0\u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044e,\u0436\u0435\u043b\u0430\u043d\u0438\u044e.<\/p>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0435\u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432(\u0442\u0443\u0442 \u043d\u0430\u0434\u043e \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043f\u043e \u0436\u0435\u043b\u0435\u0437\u0443 \u0438 \u043f\u043e \u0436\u0435\u043b\u0430\u043d\u0438\u044e)<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>\u0420\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u0441 \u0440\u0430\u0437\u0431\u0438\u0432\u043a\u043e\u0439 \u0434\u0438\u0441\u043a\u0430<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<p>\u041f\u043e\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0448\u0430\u0433\u0430 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u0443 (\u043e\u0442 5\u00a0\u043c\u0438\u043d\u0443\u0442 \u0434\u043e \u2026\u043f\u043e\u043b\u0443\u0447\u0430\u0441\u0430 \u0432\u00a0\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442\u00a0\u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0438 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0447\u0442\u0435\u043d\u0438\u044f\/\u0437\u0430\u043f\u0438\u0441\u0438). <\/p>\n<details class=\"spoiler\">\n<summary>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u044b<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>\u0418 \u043f\u043e\u0442\u043e\u043c \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c\u0441\u044f \u0438 \u0432\u0438\u0434\u0438\u043c :<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<p>                                                    \u042d\u0442\u0430\u043f \u043f\u0435\u0440\u0432\u044b\u0439 \u043f\u0440\u043e\u0439\u0434\u0435\u043d.<\/p>\n<details class=\"spoiler\">\n<summary>\u0442\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c,\u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u043f\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c.<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><\/figure>\n<p>\u041c\u0430\u043b\u0435\u043d\u044c\u043a\u0430\u044f ,\u043d\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u0430\u044f \u0441\u043f\u0440\u0430\u0432\u043a\u0430:<\/p>\n<p><code>nixos-rebuild --rollback switch<\/code> &#8212; \u00a0\u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e, \u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e .\u00a0\u041f\u043e\u043b\u0435\u0437\u043d\u043e \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u0438\u0437-\u0437\u0430 \u043e\u0448\u0438\u0431\u043e\u043a.<\/p>\n<p>nixos &#8212;upgrade       \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c\u00a0 \u043a\u0430\u043d\u0430\u043b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f root \u043f\u0435\u0440\u0435\u0434 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438   <\/p>\n<p>nixos-rebuild \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0438 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0439 \u043d\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0445 \u0445\u043e\u0441\u0442\u0430\u0445 \u0447\u0435\u0440\u0435\u0437 SSH.\u00a0<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0439 \u0445\u043e\u0441\u0442 \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u0432\u0430\u0448\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438 \u0435\u0435 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u0445\u043e\u0441\u0442\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435:<\/p>\n<p><code>nixos-rebuild --build-host user@remotehost switch<\/code><\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e \u0438 \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0435\u0435 \u043d\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u043c \u0445\u043e\u0441\u0442\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435:<\/p>\n<p><code>nixos-rebuild --target-host user@remotehost switch<\/code><\/p>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0447\u0430\u0441\u0442\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e, \u043e\u0442\u043b\u0438\u0447\u043d\u0443\u044e \u043e\u0442 \u0442\u043e\u0439, \u0447\u0442\u043e \u0432\u00a0\/etc\/nixos.\u00a0<\/p>\n<p> \u00a0&#8212;build-host \u0438\u00a0&#8212;target-host \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e, \u0434\u0430\u0436\u0435 \u0441 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0445\u043e\u0441\u0442\u0430\u043c\u0438.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u0435\u0440\u0435\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0435 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0439 \u0445\u043e\u0441\u0442 \u043e\u0442 \u0438\u043c\u0435\u043d\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0431\u0435\u0437 \u043f\u043e\u043b\u043d\u043e\u043c\u043e\u0447\u0438\u0439 root, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043e\u043f\u0446\u0438\u044e\u00a0&#8212;use-remote-sudo\u0434\u043b\u044f \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u0430\u0432 \u043d\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u043c \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f:<\/p>\n<p>nixos-rebuild &#8212;target-host user@remotehost &#8212;use-remote-sudo switch<\/p>\n<p>\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e\u00a0nixos-rebuild \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0432 \u0444\u0430\u0439\u043b\u0435, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c \u0432\u00a0nixos-config \u043f\u043e\u043b\u0435\u00a0NIX_PATH \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u044b, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e\u00a0\/etc\/nixos\/configuration.nix \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.\u00a0\u042d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e:<\/p>\n<p>nixos-rebuild switch -I nixos-config=path\/to\/configuration.nix<\/p>\n<p>\u0418 \u044d\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u0430\u043b\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0442\u043e\u0433\u043e,\u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c ,\u0437\u0430 \u0431\u043e\u043b\u0435\u0435 <s>\u0433\u043e\u0440\u044f\u0447\u0438\u043c<\/s> \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u043e\u043c &#8212; \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0430\u0439\u0442 &#8212; https:\/\/nixos.org\/<\/p>\n<\/p>\n<\/div>\n<\/details>\n<p>\u041f\u0440\u0430\u0432\u0438\u043c hostname: <\/p>\n<pre><code>nano \/etc\/nixos\/configuration.nix<\/code><\/pre>\n<pre><code>networking.hostName = \"nixos\" \u043c\u0435\u043d\u044f\u0435\u043c \u043d\u0430 networking.hostName = \"nixserver\"<\/code><\/pre>\n<p>\u041e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e:<\/p>\n<p><code>nixos-rebuild switch<\/code><\/p>\n<p>\u0421\u0442\u0430\u0432\u0438\u043c \u043d\u0443\u0436\u043d\u044b\u0435 (\u043d\u0430\u043c \u043f\u0430\u043a\u0435\u0442\u044b):<\/p>\n<p><code>nano \/etc\/nixos\/configuration.nix<\/code><\/p>\n<p>wget, caddy, minio, minio-cllient, restic, prometheus, postgresql<\/p>\n<details class=\"spoiler\">\n<summary>\u043f\u0440\u0438\u043c\u0435\u0440:<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><\/figure>\n<p>\u0417\u0430\u043f\u0438\u0441\u0430\u043b \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u0447\u0442\u043e\u0431\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043e\u0442 \u043b\u044e\u0431\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0430 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0442 \u043e\u0434\u043d\u043e\u0433\u043e (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0440\u0443\u0442\u0430) .( \u0414\u0410 \u041d\u0435\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e ,\u043d\u043e \u0431\u043e\u043b\u0435\u0435 \u0443\u0434\u043e\u0431\u043d\u043e.)<\/p>\n<p>\u041f\u043e\u0442\u043e\u043c \u0436\u043c\u0435\u043c \u043d\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 &#8212; nixos-rebuild switch \u0438 \u043e\u043d\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b.<\/p>\n<p>\u0427\u0435\u0440\u0435\u0437 cli ( \u043f\u0440\u0438\u043c\u0435\u0440) : nix-env \u2013install (-I ) vim<\/p>\n<figure class=\"full-width\"><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0422\u0430\u043a \u0436\u0435 \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u0435 network.firewall.allowedTCPPorts \u0432\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c [22 9000 9001 80 443]<\/p>\n<details class=\"spoiler\">\n<summary>\u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0435 \u043f\u043e\u0440\u0442\u043e\u0432<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><\/figure>\n<p>9001- WebUI Minio ( \u043e\u043d \u043d\u0430\u043c \u043d\u0443\u0436\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u043e\u0432,\u043f\u043e\u0442\u043e\u043c \u0443\u0431\u0435\u0440\u0435\u043c \u043f\u043e\u0440\u0442  \u043e\u0442\u0441\u044e\u0434\u0430)<\/p>\n<\/div>\n<\/details>\n<p>\u041e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e:<\/p>\n<p><code>nixos-rebuild switch<\/code><\/p>\n<h4>MinIO Object Store<\/h4>\n<p>\u042d\u0442\u043e \u0432\u044b\u0441\u043e\u043a\u043e\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0435 \u0441\u00a0S3. \u041e\u043d \u0441\u043e\u0437\u0434\u0430\u043d \u0434\u043b\u044f<br \/> \u043a\u0440\u0443\u043f\u043d\u043e\u043c\u0430\u0441\u0448\u0442\u0430\u0431\u043d\u044b\u0445 \u0440\u0430\u0431\u043e\u0447\u0438\u0445 \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u043a AI\/ML, \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445. <\/p>\n<p>\u041e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e \u0438 \u0432\u00a0\u043b\u044e\u0431\u043e\u043c \u043e\u0431\u043b\u0430\u043a\u0435 (\u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u043c \u0438\u043b\u0438\u00a0\u0447\u0430\u0441\u0442\u043d\u043e\u043c), \u043e\u0442\u00a0\u0446\u0435\u043d\u0442\u0440\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043e\u00a0\u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0438. MinIO \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c\u044b\u043c \u0438 \u0438\u043c\u0435\u0435\u0442 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u043f\u043e\u0434\u00a0GNU AGPL v3. \u00a9 official suite.<\/p>\n<p>\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c Minio:<\/p>\n<p>\u0414\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0441\u0432\u043e\u0435\u0433\u043e \u0434\u0435\u043b\u0430\u044e \u0444\u0430\u0439\u043b\u0438\u043a \/etc\/default\/minio c \u0442\u0430\u043a\u0438\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c:   <\/p>\n<p><code>nano \/etc\/default\/minio<\/code> <\/p>\n<pre><code>MINIO_VOLUMES=\/var\/cloud  # Path to save data MINIO_OPTS=\"--console-address :9001\" #Port to Web-UI MINIO_ROOT_USER=barsik # Superuser  Minio MINIO_ROOT_PASSWORD=barsikpassword # password sureruser <\/code><\/pre>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 <code>find \/ -name minio<\/code> \u0438\u0449\u0435\u043c \u043a\u0430\u043a \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u0438,\u0442\u0430\u043a \u0438 \u0434\u0435\u043c\u043e\u043d\u043e\u0432, \u0435\u0441\u043b\u0438 \u0442\u0430\u043a\u043e\u0432\u044b \u0438\u043c\u0435\u044e\u0442\u0441\u044f.<\/p>\n<details class=\"spoiler\">\n<summary>=(<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0422\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b \u0431\u0430\u0433 \u043f\u0430\u043a\u0435\u0442\u0430 Minio(\u0441\u0435\u0440\u0432\u0435\u0440), \u043a\u043e\u0433\u0434\u0430 \u0441\u0442\u0430\u0432\u0438\u0448\u044c \u0435\u0433\u043e \u0447\u0435\u0440\u0435\u0437  \u043f\u0430\u043a\u0435\u0442\u043d\u044b\u0439 \u043c\u0435\u043d\u0435\u043d\u0434\u0436\u0435\u0440 , \u0442\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0430 \u043f\u0430\u0440\u0441\u0435\u0440\u0430 JSON &#8230;. ,\u0442\u0430\u043a \u0447\u0442\u043e:<\/p>\n<pre><code>wget https:\/\/dl.min.io\/server\/minio\/release\/linux-amd64\/minio chmod +x minio mv minio \/var\/cloud (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u043b\u0438 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0435\u0433\u043e \u0432 \u0442\u043e\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438,\u043a\u0443\u0434\u0430 \u0441\u043a\u0430\u0447\u0430\u043b\u0438)<\/code><\/pre>\n<p>\u0420\u0430\u0437 \u0434\u0435\u043c\u043e\u043d\u0430 \u043d\u0435\u0442\u0443, \u0442\u043e \u0432\u043f\u0438\u0448\u0435\u043c \u0432\u00a0\u043a\u043e\u043d\u0444\u0438\u0433 \u0435\u0433\u043e \u0441\u0430\u043c\u0438:<\/p>\n<p> <code>nano \/etc\/nixos\/configuration.nix \u0438 \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c:<\/code><\/p>\n<pre><code>systemd.services.minioserver = {       description = \"MinioServer\" ;       wantedBy = [ \"default.target\" ];       serviceConfig = {         EnvironmentFile= \"\/etc\/default\/minio\";      #  ExecStart = \"${pkgs.minio}\/bin\/minio server $MINIO_OPTS $MINIO_VOLUMES \";           ExecStart = \"\/home\/vasya\/minio server $MINIO_OPTS $MINIO_VOLUMES \";# ExecStop = \" \";         Type = \"notify\";         Restart   = \"always\";         LimitNOFILE=\"1048576\";         TimeoutStopSec=\"infinity\";         SendSIGKILL=\"no\";         User=\"vasya\"; #\"minio-user\";         Group= \"root\"; #\"minio-user\";         ProtectProc=\"invisible\";     }; };   systemd.services.minioserver.enable=true; <\/code><\/pre>\n<p>\u0420\u0435\u0431\u0438\u043b\u0434\u0438\u043c\u0441\u044f: \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/p>\n<p><code>nixos-rebuild switch<\/code><\/p>\n<h4>Caddy<\/h4>\n<p>\u042d\u0442\u043e \u043c\u043e\u0449\u043d\u044b\u0439 \u043a\u043e\u0440\u043f\u043e\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0439\u00a0\u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c\u00a0\u0438\u00a0\u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c HTTPS,\u00a0\u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 Go (c)official suite.<\/p>\n<p>*\u0415\u0441\u0442\u044c \u0442\u0443\u0442 \u043d\u044e\u0430\u043d\u0441 \u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f \u043d\u0430\u0442\u043a\u043d\u0443\u043b\u0441\u044f &#8212; \u043b\u043e\u043a\u0430\u043b\u0445\u043e\u0441\u0442 \u0442\u0443\u0442 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u0430\u043a,\u0430 \u0434\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b caddy \u0441\u0434\u0435\u043b\u0430\u043b\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u0441\u0435\u0440\u0442 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438.\u0415\u0441\u043b\u0438 \u043e\u043d \u0441\u0442\u043e\u0438\u0442 \u043d\u0430\u0440\u0443\u0436\u0443,\u0438 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u043f\u043e\u0440\u0442\u0430\u043c\u0438 80\/443 \u0434\u043b\u044f http\/https(\u0435\u0441\u0442\u0435\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u043e) \u0442\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0432\u043c\u0435\u0441\u0442\u043e \u043b\u043e\u043a\u0430\u043b\u0445\u043e\u0441\u0442- \u0441\u0432\u043e\u0439 \u0434\u043e\u043c\u0435\u043d \u0438 \u043e\u043d \u0441\u0430\u043c \u043f\u043e\u0434\u0442\u044f\u043d\u0435\u0442 \u0443 letsencrypt \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442.\u0422\u0430\u043a \u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0447\u0435\u0440\u0435\u0437 \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u0443 <\/p>\n<p><code>tls cert key  <\/code><\/p>\n<p>\u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 <\/p>\n<p>\u041d\u043e \u043c\u044b \u043f\u043e\u0439\u0434\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u043f\u0443\u0442\u0435\u043c.<\/p>\n<p><code>mkdir \/etc\/caddy<\/code><\/p>\n<p><code>nano \/etc\/caddy\/Caddyfile<\/code><\/p>\n<pre><code>localhost {        header \/* {                 -Server                 Permissions-Policy interest-cohort=()                 Strict-Transport-Security max-age=31536000;                 X-Content-Type-Options nosniff                 X-Frame-Options DENY                 Referrer-Policy no-referrer-when-downgrade                 }         route \/console\/* {         uri strip_prefix \/console         reverse_proxy 127.0.0.1:9001         }      } <\/code><\/pre>\n<p>\u041f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0441\u0435\u0440\u0432\u0438\u0441 \u0432 system config<\/p>\n<pre><code>  systemd.services.caddy = {       description = \"Caddy\" ;       wantedBy = [ \"multi-user.target\" ];       serviceConfig = {         EnvironmentFile= \"\/etc\/caddy\/Caddyfile\";         ExecStart = \"${pkgs.caddy}\/bin\/caddy  run --environ --config \/etc\/caddy\/Caddyfile\";         ExecStop = \" ${pkgs.caddy}\/bin\/caddy stop\";         ExecReload = \"${pkgs.caddy}\/bin\/caddy --config \/etc\/caddy\/Caddyfile --force\";         Type = \"notify\";         Restart   = \"always\";         LimitNOFILE=\"1048576\";         TimeoutStopSec=\"infinity\";         SendSIGKILL=\"no\";         User=\"root\"; #caddy         Group=\"root\"; #caddy         ProtectProc=\"invisible\";         PrivateTmp=\"true\";         AmbientCapabilities=\"CAP_NET_BIND_SERVICE\";     }; };   systemd.services.caddy.enable=true; <\/code><\/pre>\n<p>\u041e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e:<\/p>\n<p><code>nixos-rebuild switch<\/code><\/p>\n<p>\u0417\u0430\u0445\u043e\u0434\u0438\u043c \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c,\u0447\u0442\u043e \u0432\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.<\/p>\n<details class=\"spoiler\">\n<summary>\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.<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><\/figure>\n<figure class=\"full-width\">\n<div><figcaption>\u041d\u0430 \u0433\u0438\u043f\u0435\u0440\u0432\u0438\u0437\u043e\u0440\u0435 \u043f\u0440\u043e\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u043c \u043f\u043e\u0440\u0442\u044b \u0434\u043b\u044f https( 443 ) \u0438 \u043f\u043e\u0440\u0442 ssh .<\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\">\n<div><figcaption>\u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c,\u0447\u0442\u043e \u0432\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \/localhost\/console<\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\">\n<div><figcaption>\u0414\u043b\u044f \u0442\u0435\u0441\u0442\u0430 \u0441\u0434\u0435\u043b\u0430\u043b \u043f\u0430\u0440\u0443 \u0431\u0430\u043a\u0435\u0442\u043e\u0432 ,\u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c \u0442\u043e\u0447\u043d\u043e ,\u0447\u0442\u043e \u0432\u0441\u0435 \u043e\u043a<\/figcaption><\/div>\n<\/figure>\n<\/div>\n<\/details>\n<p>                                                          Prometheus<\/p>\n<details class=\"spoiler\">\n<summary>It&#8217;s FAIL<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0410\u0433\u0430,\u043c\u0435\u0442\u0440\u0438\u043a\u0438<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\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-353196","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/353196","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=353196"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/353196\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=353196"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=353196"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=353196"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}