{"id":356415,"date":"2024-05-20T23:29:08","date_gmt":"2024-05-20T23:29:08","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=356415"},"modified":"-0001-11-30T00:00:00","modified_gmt":"2024-05-20T23:29:08","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=356415","title":{"rendered":"<span>\u041a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u043c\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443, \u0435\u0441\u043b\u0438 \u043e\u043d \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u0442\u0430\u043a\u043e\u0433\u043e \u043d\u0435 \u0434\u0435\u043b\u0430\u043b?<\/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<div class=\"persona\"><img decoding=\"async\" class=\"image persona__image\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/3e6\/f8b\/afb\/3e6f8bafbb1a2af2246769e2bd1b45ae.jpg\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3e6\/f8b\/afb\/3e6f8bafbb1a2af2246769e2bd1b45ae.jpg\" data-blurred=\"true\"\/><\/p>\n<h5 class=\"persona__heading\">\u041f\u0440\u0438\u0432\u0435\u0442, \u044f \u0421\u0430\u0448\u0430 \u0415\u0440\u0448\u043e\u0432, \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0432 \u0431\u0430\u0437\u0435 \u0410\u043d\u0434\u0440\u043e\u0438\u0434<\/h5>\n<p>\u0418 \u044f \u0437\u043d\u0430\u043b \u043f\u0440\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u0443\u044e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u0435\u043e\u0440\u0438\u0438 \u0438 \u0438\u0437 \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440\u043e\u0432 \u0441 \u043f\u0430\u0446\u0430\u043d\u0430\u043c\u0438 \u0441 \u0431\u0435\u043a\u0435\u043d\u0434\u0430<\/p>\n<\/div>\n<p>\u0423 \u043c\u0435\u043d\u044f \u0443\u0448\u0435\u043b \u043e\u0434\u0438\u043d \u043c\u0435\u0441\u044f\u0446 \u043d\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u0414\u0432\u0435 \u043d\u0435\u0434\u0435\u043b\u0438 \u0443\u0448\u043b\u043e \u043d\u0430 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430 \u0438 \u0441\u0431\u043e\u0440\u043a\u0443 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0430. \u041e\u0434\u043d\u0443 \u043d\u0435\u0434\u0435\u043b\u044e \u044f \u043f\u0438\u0441\u0430\u043b Ktor-\u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0430 Kotlin \u0438 \u0432\u0438\u0437\u0443\u0430\u043b \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u043d\u0430 Flutter. \u0418 \u0435\u0449\u0435 \u043e\u0434\u043d\u0443 \u043d\u0435\u0434\u0435\u043b\u044e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043b. \u0418 \u044f \u0445\u043e\u0447\u0443, \u0447\u0442\u043e\u0431\u044b \u0432\u044b \u0441\u044d\u043a\u043e\u043d\u043e\u043c\u0438\u043b\u0438 \u0434\u0432\u0435 \u043d\u0435\u0434\u0435\u043b\u0438, \u043a\u043e\u0433\u0434\u0430 \u0440\u0435\u0448\u0438\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0432\u0430\u0448 \u0431\u044d\u043a\u044d\u043d\u0434.<\/p>\n<h3>\u0417\u0430\u0447\u0435\u043c \u043c\u043d\u0435 \u0441\u0432\u043e\u0439 \u0441\u0435\u0440\u0432\u0435\u0440?<\/h3>\n<p>\u0414\u0432\u0430 \u043c\u0435\u0441\u044f\u0446\u0430 \u043d\u0430\u0437\u0430\u0434 \u044f \u043f\u0438\u0441\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u044e, \u043e \u0442\u043e\u043c \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u044e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0445 \u0441\u043b\u043e\u0432 \u043d\u0435\u0439\u0440\u043e\u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u043c\u0438 \u00ab<a href=\"https:\/\/habr.com\/ru\/articles\/754124\/\" rel=\"noopener noreferrer nofollow\">\u041a\u0430\u043a \u0437\u0430\u043f\u043e\u043c\u043d\u0438\u0442\u044c \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u043d\u0430\u0432\u0441\u0435\u0433\u0434\u0430?<\/a>\u00bb \u0438 \u043e\u043d\u0430 \u0432\u0430\u0441 \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043b\u0430. \u0414\u043b\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043c\u043d\u0435 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u043b\u0441\u044f \u0431\u044d\u043a\u044d\u043d\u0434. \u0421\u0442\u0430\u043b\u043e \u043d\u0443\u0436\u043d\u043e \u0443\u043c\u0435\u0442\u044c \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u043e\u0432, \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u0443\u0448\u0438 \u0438 \u043d\u0430 \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u0443 \u0443\u043c\u0435\u0442\u044c \u0434\u0435\u043b\u0430\u0442\u044c \u043e\u0431\u043c\u0435\u043d \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u043e\u0439, \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u044f \u0438 \u0441\u043e\u0440\u0435\u0432\u043d\u043e\u0432\u0430\u043d\u0438\u044f. \u041d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043a\u0430\u043a \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c.<\/p>\n<h3>\u0410 \u0447\u0435\u0433\u043e \u043d\u0435 Firebase?<\/h3>\n<p>\u042f \u043b\u044e\u0431\u043b\u044e Firebase, \u043e\u043d \u0443\u0434\u043e\u0431\u043d\u044b\u0439, \u0445\u043e\u0440\u043e\u0448\u043e-\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439 \u0438 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u043c\u044b\u0439. \u041d\u043e \u043e\u043d \u043d\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f, \u0435\u0433\u043e \u0441\u0442\u0430\u043b\u043e \u0441\u043b\u043e\u0436\u043d\u0435\u0435 \u043e\u043f\u043b\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u0438\u0437 \u0420\u0424, \u0433\u0438\u043f\u043e\u0442\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0435\u0433\u043e \u043c\u043e\u0433\u0443\u0442 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0441\u043e\u0432\u0441\u0435\u043c \u0438 \u0435\u0441\u043b\u0438 \u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u0441\u043b\u043e\u0436\u043d\u0435\u0435 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u043e\u043d \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442, \u0430 \u0447\u0442\u043e-\u0442\u043e \u043d\u0435 \u043c\u043e\u0436\u0435\u0442.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0441 \u0440\u0430\u0431\u043e\u0442\u043e\u0439 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u0441\u0435 \u0445\u043e\u0440\u043e\u0448\u043e \u043e\u0434\u0438\u043d \u0440\u0430\u0437, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u043e \u0432\u0441\u0435\u0445 \u0432\u0430\u0448\u0438\u0445 \u0431\u0443\u0434\u0443\u0449\u0438\u0445 \u0438\u0434\u0435\u044f\u0445 \u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445, \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0435\u0435 \u0443\u043c\u0435\u0442\u044c \u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0432\u043e\u0435. \u041d\u043e \u043d\u0443\u0436\u043d\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f.<\/p>\n<p>\u0418 \u0435\u0449\u0435 \u0435\u0441\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u043e\u043f\u0435\u043d-\u0441\u043e\u0440\u0441 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u044b \u0442\u0438\u043f\u0430 <a href=\"https:\/\/appwrite.io\/\" rel=\"noopener noreferrer nofollow\">Appwrite.io<\/a>, \u0433\u0434\u0435 \u0432\u0441\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0438 \u0432\u0430\u0448\u0435\u043c \u041f\u041e, \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442, \u043d\u043e \u0441\u0432\u043e\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u043c\u043d\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0433\u0438\u0431\u0447\u0435.<\/p>\n<p>\u042f \u043d\u0435 \u0431\u0443\u0434\u0443 \u0441\u043f\u043e\u0440\u0438\u0442\u044c, \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0441\u0432\u043e\u0438 \u043f\u043b\u044e\u0441\u044b. \u0418 \u0437\u0434\u0435\u0441\u044c \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043f\u0440\u043e \u0441\u0432\u043e\u0439 \u0441\u0435\u0440\u0432\u0435\u0440. \u0418 \u043f\u043e\u043a\u0430 \u044f \u0440\u0435\u0448\u0430\u043b \u043d\u0430\u0442\u043a\u043d\u0443\u043b\u0441\u044f \u043d\u0430 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435 \u043c\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u043e Firebase.<\/p>\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/651a9ba26f566b30a56e18f7\" data-style=\"\" id=\"651a9ba26f566b30a56e18f7\" width=\"\"><\/div>\n<h3>\u041f\u043b\u0430\u043d<\/h3>\n<p>\u0412\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0448\u0430\u0433\u0438:<\/p>\n<ul>\n<li>\n<p>\u0421\u043e\u0431\u0440\u0430\u0442\u044c Ktor-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 Kotlin.<\/p>\n<\/li>\n<li>\n<p>\u0410\u0440\u0435\u043d\u0434\u043e\u0432\u0430\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440 \u0438\u043b\u0438 \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u0441\u0432\u043e\u044e \u043c\u0430\u0448\u0438\u043d\u0443. \u041d\u0430 \u043d\u0435\u0435 \u0431\u0443\u0434\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u0438 \u0431\u0443\u0434\u0435\u0442 \u043a\u0440\u0443\u0442\u0438\u0442\u0441\u044f \u0432\u0430\u0448\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435. \u041e\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c \u043d\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043e\u0442 \u0432\u0430\u0448\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438 \u0441\u0430\u0439\u0442\u043e\u0432.<\/p>\n<\/li>\n<li>\n<p>\u0420\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0441 \u0411\u0414 \u0434\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439. \u0417\u0434\u0435\u0441\u044c \u044f \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 Postgres c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043d\u0435\u0439, \u0441\u0438\u0434\u044f \u0433\u0434\u0435 \u0443\u0433\u043e\u0434\u043d\u043e.<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c https, \u0447\u0442\u043e\u0431\u044b Google \u043d\u0435 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043b \u0432\u0430\u0448 \u0441\u0430\u0439\u0442 \u0438 \u043d\u0435 \u0432\u0435\u0448\u0430\u043b \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e \u0432\u0430\u0448\u0435\u0439 \u043d\u0435 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438. \u0418 \u0447\u0442\u043e\u0431\u044b \u0432\u044b \u0441\u043f\u043e\u043a\u043e\u0439\u043d\u043e \u043c\u043e\u0433\u043b\u0438 \u043f\u043e\u0441\u044b\u043b\u0430\u0442\u044c \u043f\u0430\u0440\u043e\u043b\u0438 \u0438 \u0447\u0443\u0432\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u043d\u0435 \u0431\u043e\u044f\u0441\u044c \u043f\u0440\u043e\u0441\u043b\u0443\u0448\u043a\u0438 \u0432 \u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0435.<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0439 smtp-c\u0435\u0440\u0432\u0435\u0440 \u0434\u043b\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u043f\u0438\u0441\u0435\u043c \u043f\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0438 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044e \u043f\u0430\u0440\u043e\u043b\u044f.<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u043f\u0438\u0441\u0435\u043c, \u0447\u0442\u043e\u0431\u044b Yandex \u0438 Google \u043d\u0435 \u043f\u043e\u043c\u0435\u0447\u0430\u043b\u0438 \u0432\u0430\u0448\u0438 \u043f\u0438\u0441\u044c\u043c\u0430 \u043a\u0430\u043a \u0441\u043f\u0430\u043c.<\/p>\n<\/li>\n<li>\n<p>\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0438.<\/p>\n<\/li>\n<\/ul>\n<h3>\u0421 \u0447\u0435\u0433\u043e \u043d\u0430\u0447\u0430\u0442\u044c? <\/h3>\n<p>\u0421 Ktor-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 Kotlin \u0438 \u0441 \u044d\u0442\u043e\u0433\u043e \u0432\u0438\u0434\u0435\u043e. \u0412\u0441\u0435 \u0445\u043e\u0440\u043e\u0448\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043d\u043e, \u043a\u0430\u043a \u043f\u043e\u0434\u043d\u044f\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c \u043d\u0430 \u0432\u0430\u0448\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043d\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u0438 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0431\u043e\u043b\u044c\u0448\u0435. \u041f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442\u0435 \u0438 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u0443 \u0432\u0430\u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435.<\/p>\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/65203195962d8d30c122977a\" data-style=\"\" id=\"65203195962d8d30c122977a\" width=\"\"><\/div>\n<p>\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 Postgres \u0438 Kotlin \u0435\u0441\u0442\u044c <a href=\"https:\/\/habr.com\/ru\/companies\/otus\/articles\/555134\/\" rel=\"noopener noreferrer nofollow\">\u043f\u0435\u0440\u0435\u0432\u0435\u0434\u0435\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f<\/a>. \u041f\u0440\u043e \u0432\u0441\u0442\u0430\u0432\u043a\u0438, \u043f\u043e\u0438\u0441\u043a, \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445. \u0418 \u043a\u0430\u043a \u044d\u0442\u043e \u0432\u0441\u0435 \u0434\u0435\u043b\u0430\u0442\u044c \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u0430\u043c\u0438.<\/p>\n<p>\u0415\u0449\u0435 \u043c\u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0443\u043c\u0435\u0442\u044c \u043e\u0442\u0434\u0430\u0432\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u044b json-\u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a, \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0438 mp3. \u0418 \u0441\u0445\u043e\u0434\u0443 \u043d\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e \u043a\u0443\u0434\u0430 \u0443\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0435\u0440\u0432\u0435\u0440 \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u0434\u0430\u0432\u0430\u0442\u044c. \u041a\u0430\u043a \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0430\u043f\u043a\u0443 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u043b\u0438 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e? \u0412\u043e\u0442 \u0442\u0430\u043a, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e\u043c\u0443 \u043f\u0443\u0442\u0438:<\/p>\n<pre><code>filesPath = \"\/Users\/user1\/path\/to\/files\/dir\/\"<\/code><\/pre>\n<p>\u0418 \u0442\u0443\u0442 \u0432\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u0434\u0430\u0435\u0442\u0435 \u0432\u0430\u0448 \u0444\u0430\u0439\u043b.<\/p>\n<pre><code class=\"kotlin\">fun Application.configureFilesRouting(appConfig: AppConfig) {     val path = appConfig.filesPath     routing {         route(\"\/settings\") { staticFiles(remotePath = \"\", dir = File(\"${path}settings.json\")) }     } }<\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/721\/36d\/104\/72136d104689b2033428419e3bfe6ba3.png\" width=\"900\" height=\"594\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/721\/36d\/104\/72136d104689b2033428419e3bfe6ba3.png\"\/><\/figure>\n<p>\u0414\u043b\u044f \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0439 \u0438\u0437 \u0410\u043d\u0434\u0440\u043e\u0438\u0434 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430 \u043a \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u0445\u043e\u0441\u0442\u0443, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u044d\u0442\u043e\u0442 ip. <\/p>\n<pre><code class=\"dart\">  static const host = \"http:\/\/10.0.2.2:8080\/\";<\/code><\/pre>\n<p>\u0418 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <a href=\"https:\/\/www.postman.com\/\" rel=\"noopener noreferrer nofollow\">Postman<\/a> \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0432\u0430\u0448\u0438\u0445 get \u0438 post-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u043f\u0440\u0438\u043a\u0440\u0435\u043f\u043b\u044f\u044f \u043a \u043d\u0438\u043c json-\u0444\u0430\u0439\u043b\u044b.<\/p>\n<p>\u0415\u0449\u0435 \u044f \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u043b \u043c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0434\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0441 \u0411\u0414. \u0414\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043c\u043d\u0435 \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u043b\u043e\u0441\u044c <a href=\"https:\/\/postgresapp.com\/downloads.html\" rel=\"noopener noreferrer nofollow\">PostgressApp<\/a>. \u041e\u043d\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0431\u044b\u0441\u0442\u0440\u043e \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0411\u0414 \u043f\u043e\u043a\u0430 \u0432\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0435. \u0411\u0435\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441 \u0434\u043e\u0441\u0442\u0443\u043f\u0430\u043c\u0438, \u043f\u043e\u0440\u0442\u0430\u043c\u0438, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c\u0438 \u0438\u0445 \u043f\u0430\u0440\u043e\u043b\u044f\u043c\u0438 \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c. \u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0431\u044b\u0441\u0442\u0440\u043e \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043d\u0430 \u043f\u0443\u0441\u0442\u043e\u0439 \u0431\u0430\u0437\u0435 \u0435\u0441\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c postgres \u0441 \u043f\u0430\u0440\u043e\u043b\u0435\u043c postgres, \u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c. \u0415\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e, \u043b\u0438\u0431\u043e ssh, \u043b\u0438\u0431\u043e \u0432\u043e\u0437\u0438\u0442\u0441\u044f \u0441 \u0434\u043e\u0441\u0442\u0443\u043f\u0430\u043c\u0438.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/164\/f24\/6c6\/164f246c64fba9a5a51706d1b816aad4.png\" width=\"1296\" height=\"1054\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/164\/f24\/6c6\/164f246c64fba9a5a51706d1b816aad4.png\"\/><\/figure>\n<p>\u0410 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0447\u0442\u043e \u0432\u044b \u0432\u0441\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 <a href=\"https:\/\/www.pgadmin.org\/download\/pgadmin-4-macos\/\" rel=\"noopener noreferrer nofollow\">pgAdmin4<\/a>. \u041e\u043d\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u0441\u044f \u043a \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u0443 \u0411\u0414, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0434\u043d\u044f\u043b\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432\u044b\u0448\u0435, \u0434\u0435\u043b\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u044b, \u0432\u044b\u0433\u0440\u0443\u0437\u043a\u0438 \u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/a8f\/1b1\/1cb\/a8f1b11cb345d35fa74c2c331b792d14.png\" width=\"1532\" height=\"1456\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a8f\/1b1\/1cb\/a8f1b11cb345d35fa74c2c331b792d14.png\"\/><\/figure>\n<p>\u0418\u0442\u0430\u043a, \u043d\u0430 \u044d\u0442\u043e\u043c \u0448\u0430\u0433\u0435 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440, \u0432\u044b \u0443\u043c\u0435\u0435\u0442\u0435 \u043f\u0438\u0441\u0430\u0442\u044c \u0438 \u0447\u0438\u0442\u0430\u0442\u044c \u0438\u0437 \u0431\u0430\u0437\u044b, \u0441\u043e\u0437\u0434\u0430\u043d\u044b \u043f\u0435\u0440\u0432\u044b\u0435 \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0438\u0435 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b. \u0418 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u0447\u0442\u043e, \u043a\u0430\u043a \u0438 \u0433\u0434\u0435 \u043c\u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0438 \u043a\u0443\u0434\u0430 \u044d\u0442\u043e \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0438\u0437 \u043b\u044e\u0431\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u043c\u0438\u0440\u0430?<\/p>\n<h3>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u0442\u0432\u0435\u0442\u0438\u043c \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u0447\u0442\u043e \u0438 \u043a\u0430\u043a \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c?<\/h3>\n<p>\u0412\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0431\u0440\u0430\u0442\u044c fatJar \u2013 \u044d\u0442\u043e *.jar-\u0444\u0430\u0439\u043b \u0441 \u0432\u0430\u0448\u0438\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c, \u043e\u043d \u0441\u0430\u043c\u043e\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u044b\u0439 \u0438 \u0443 \u043d\u0435\u0433\u043e \u0435\u0441\u0442\u044c \u0432\u0441\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0432\u043d\u0443\u0442\u0440\u0438. \u0418 \u0438\u0437 \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0435\u043c\u0443 \u043d\u0443\u0436\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0444\u0430\u0439\u043b\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u0434\u0430\u0432\u0430\u0442\u044c \u0438 \u043a\u043b\u044e\u0447\u0438 \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043d\u043e \u043e\u0431 \u044d\u0442\u043e\u043c \u043f\u043e\u0437\u0436\u0435. \u0423 \u043c\u0435\u043d\u044f \u043e\u043d \u0432\u0435\u0441\u0438\u0442 70\u041c\u0431 \u0438 \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432\u0435\u0437\u0434\u0435, \u0433\u0434\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 Java. \u041e\u043d \u0442\u0430\u043a\u0436\u0435 \u0432\u0441\u0435\u043c \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c \u043d\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u043c \u0445\u043e\u0441\u0442\u0435 \u043d\u0430 8080 \u043f\u043e\u0440\u0442\u0435. \u041a\u0430\u043a \u0435\u0433\u043e \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c?<\/p>\n<p>\u041a\u043e\u043c\u0430\u043d\u0434\u0430 \u0434\u043b\u044f gradle \u0438\u0437 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 \u0438\u043b\u0438 \u0432 IDEA:<\/p>\n<pre><code>gradle buildFatJar<\/code><\/pre>\n<p>\u041e\u043d\u0430 \u0441\u043e\u0431\u0435\u0440\u0435\u0442 <em>com.site-example.your_server_app-all.jar \u0432 \u043f\u0430\u043f\u043a\u0443:<\/em><\/p>\n<pre><code>\/Users\/user1\/IdeaProjects\/your_server_app\/build\/libs\/<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a:<\/p>\n<pre><code>java -jar \/path\/to\/server\/app\/site-example.com\/com.site-example.your_server_app-all.jar&amp;<\/code><\/pre>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 &#171;&amp;&#187; \u043d\u0430 \u043a\u043e\u043d\u0446\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u0444\u043e\u043d\u0435. \u0418 \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0431\u0443\u0434\u0435\u0442\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043d\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u0438 \u0432\u044b\u0439\u0434\u0438\u0442\u0435 \u0438\u0437 \u043a\u043e\u043d\u0441\u043e\u043b\u0438, \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c. \u0411\u0435\u0437 &#171;&amp;&#187; \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442 \u043e\u0442 \u0438\u043c\u0435\u043d\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043f\u0440\u0438 \u0432\u044b\u0445\u043e\u0434\u0435 \u0437\u0430\u043a\u0440\u043e\u0435\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438 \u043e\u043d\u043e \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043d\u0435\u0442 \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c.<\/p>\n<h3>\u0413\u0434\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c? \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0432 \u0410\u043c\u0441\u0442\u0435\u0440\u0434\u0430\u043c\u0435<\/h3>\n<p>\u0410\u0440\u0435\u043d\u0434\u0443\u0435\u043c \u0441\u0435\u0440\u0432\u0435\u0440 \u0441 \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c \u043f\u043e ssh \u0433\u0434\u0435-\u0442\u043e \u0437\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u0435\u0439, \u043a\u043e\u043c\u0443 \u043c\u044b \u0441\u043c\u043e\u0436\u0435\u043c \u043e\u043f\u043b\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f. \u041d\u0443 \u0438\u043b\u0438 \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u044f \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430 \u043d\u0430 \u043d\u0435\u0439. \u041d\u043e \u0420\u0424 ip \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u0441\u0435\u0433\u0434\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b, \u0447\u0442\u043e-\u0442\u043e \u0441 vpn \u0447\u0442\u043e-\u0442\u043e \u0431\u0435\u0437.<\/p>\n<p>\u0418 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0438\u043d\u043e\u0433\u0434\u0430 \u0432\u0438\u0434\u043d\u044b \u0420\u0424-\u043a\u043e\u0440\u043d\u0438 \u0438\u043d\u043e\u0441\u0442\u0440\u0430\u043d\u043d\u044b\u0445 \u0430\u0440\u0435\u043d\u0434\u043e\u0432\u0430\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f Ktor-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0441\u0432\u043e\u0439 \u0430\u0440\u0435\u043d\u0434\u043e\u0432\u0430\u043d\u044b\u0439 vpn-\u0441\u0435\u0440\u0432\u0435\u0440  \u0438 ChatGPT \u043e\u0442\u0431\u0438\u0432\u0430\u0435\u0442 \u043c\u043e\u0439 \u0442\u0440\u0430\u0444\u0438\u043a \u043d\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438.<\/p>\n<p>\u0421\u0435\u0439\u0447\u0430\u0441 \u043c\u043d\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0434\u0430\u044e\u0442 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u043c\u0438 \u041e\u0421 Ubuntu. \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u0441\u044f \u0438 \u0434\u0430\u043b\u044c\u0448\u0435 \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u043e\u0439 \u044d\u0442\u043e\u0433\u043e \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430. \u0426\u0435\u043d\u044b \u0437\u0430 \u0441\u0430\u043c\u044b\u0435 \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 1 \u044f\u0434\u0440\u043e, 2\u0413\u0431 RAM, 32\u0413\u0431 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0438 32\u0422\u0431 \u0442\u0440\u0430\u0444\u0438\u043a \u0437\u0430 15\u0440 \u0432 \u0441\u0443\u0442\u043a\u0438 \u0438\u043b\u0438 450\u0440 \u0432 \u043c\u0435\u0441\u044f\u0446. \u041d\u043e \u0435\u0441\u0442\u044c \u0438 \u043f\u043e\u0436\u0438\u0437\u043d\u0435\u043d\u043d\u044b\u0435 \u0442\u0430\u0440\u0438\u0444\u044b \u0437\u0430 20.000\u0440. \u042f \u0430\u0440\u0435\u043d\u0434\u043e\u0432\u0430\u043b \u043d\u0430 <a href=\"https:\/\/vdsina.ru\/\" rel=\"noopener noreferrer nofollow\">VDSina<\/a>, \u043d\u043e \u0444\u0430\u0439\u043b\u044b \u0443 \u043c\u0435\u043d\u044f \u043b\u0435\u0436\u0430\u0442 \u0432 <a href=\"https:\/\/selectel.ru\/\" rel=\"noopener noreferrer nofollow\">Selectel<\/a> \u043d\u0430 1.2\u0413\u0431 \u0437\u0430 \u043c\u0435\u043d\u044c\u0448\u0435 \u0447\u0435\u043c 100\u0440 \u0432 \u043c\u0435\u0441\u044f\u0446. \u0423 \u0421\u0435\u043b\u0435\u043a\u0442\u0435\u043b \u0442\u043e\u0436\u0435 \u0435\u0441\u0442\u044c \u0438\u043d\u043e\u0441\u0442\u0440\u0430\u043d\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0432 \u041a\u0430\u0437\u0430\u0445\u0441\u0442\u0430\u043d\u0435 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u043e \u043e\u043d\u0438 \u043c\u043e\u0449\u043d\u0435\u0435 \u0438 \u0434\u043e\u0440\u043e\u0436\u0435, \u0430 \u0434\u0435\u0448\u0435\u0432\u043b\u0435 \u043d\u0435\u0442.<\/p>\n<figure class=\"float\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f0b\/cee\/afd\/f0bceeafd00d29a0dacd0dacf3f27227.png\" width=\"518\" height=\"1294\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f0b\/cee\/afd\/f0bceeafd00d29a0dacd0dacf3f27227.png\"\/><\/figure>\n<p>\u041f\u043b\u044e\u0441 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u043f\u0430\u043d\u0435\u043b\u044c \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <a href=\"https:\/\/kb.fastpanel.direct\/quick_start\/how-to-install-fastpanel\" rel=\"noopener noreferrer nofollow\">Fastpanel<\/a>. \u0421 \u043d\u0435\u0439 \u043c\u043e\u0436\u043d\u043e \u0443\u0434\u043e\u0431\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432. \u041c\u043e\u0436\u043d\u043e \u0438 \u0431\u0435\u0437 \u043d\u0435\u0435, \u0438 \u0432\u0441\u0451 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443, \u043d\u043e \u0441 \u043d\u0435\u0439 \u0443\u0434\u043e\u0431\u043d\u0435\u0435<\/p>\n<p>\u041e\u043d\u0430 \u0442\u043e\u0436\u0435 \u0447\u0430\u0441\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0438\u0434\u0442\u0438 \u043e\u0442 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u043d\u0430 \u043f\u0440\u0435\u0434\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435. Fastpanel \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u0430\u044f, \u043d\u043e \u043d\u0443\u0436\u043d\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f.<\/p>\n<p>\u041e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0431\u0443\u0434\u0435\u0442 FTP. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c <a href=\"https:\/\/filezilla.ru\/get\/\" rel=\"noopener noreferrer nofollow\">Filezilla<\/a> \u0438 \u043f\u043e\u0442\u043e\u043c \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0435 \u0443\u0434\u043e\u0431\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043b\u0438\u0432\u0430\u0442\u044c \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u0432\u0430\u0448\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435. <strong>\u041f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u043a\u0438\u0434\u044b\u0432\u0430\u0435\u0442\u0435 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440 fatJar-\u0444\u0430\u0439\u043b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<\/strong><\/p>\n<p>\u0412 \u043f\u0430\u043d\u0435\u043b\u0438 \u0432\u0430\u043c \u043f\u043e\u0447\u0442\u0438 \u043d\u0435 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u043e\u0439 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u043e\u0439 \u0411\u0414 Postgres.<\/p>\n<p>\u0418\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438 \u0438\u0434\u0435\u0442 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u0437\u0430\u0434\u0430\u043d\u0438\u0439, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0435 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0411\u0414 \u0440\u0430\u0437 \u0432 \u0441\u0443\u0442\u043a\u0438 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440.<\/p>\n<p>\u041f\u043b\u044e\u0441 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u043e\u0442 <a href=\"https:\/\/letsencrypt.org\/ru\/\" rel=\"noopener noreferrer nofollow\">LetsEncrypt<\/a> \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u043b\u043e\u0436\u0438\u0442\u044c \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440. \u0418 Google \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043d\u0435\u0442 \u043f\u043e\u0434\u043e\u0437\u0440\u0435\u0432\u0430\u0442\u044c \u0432\u0430\u0448 \u0441\u0430\u0439\u0442 \u0432 \u043c\u043e\u0448\u0435\u043d\u043d\u0438\u0447\u0435\u0441\u0442\u0432\u0435.<\/p>\n<p>\u0412\u0430\u0448\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435. \u0427\u0435\u0440\u0435\u0437 ssh \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0435\u0433\u043e \u0438 \u0434\u043e\u0441\u0442\u0443\u043a\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043e \u0440\u0443\u0447\u0435\u043a \u043f\u043e ip \u043e\u0442 \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u0438\u043b\u0438 ip \u0432\u0430\u0448\u0435\u0433\u043e \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430.<\/p>\n<p>Fastpanel \u043f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u043d\u0430 \u0430\u0434\u0440\u0435\u0441\u0435 <em>http:\/\/123.123.123.123:8888<\/em>, \u043b\u043e\u0433\u0438\u043d \u0438 \u043f\u0430\u0440\u043e\u043b\u044c \u043f\u0440\u0438\u0448\u043b\u0435\u0442 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440 \u0438\u043b\u0438 \u0432\u044b \u0441\u0430\u043c\u0438 \u0437\u0430\u0434\u0430\u0434\u0438\u0442\u0435 \u043f\u0440\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435.<\/p>\n<p>\u041d\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u044d\u0442\u0438\u043c \u043c\u043e\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b \u043f\u043e\u0440\u0442\u044b \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f.<\/p>\n<h3>\u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0438 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0438 \u043f\u043e\u0440\u0442\u044b<\/h3>\n<p>\u0421\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0432\u0441\u0435 \u043f\u043e\u0440\u0442\u044b \u043d\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u0420\u0430\u0437\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c\u0438. \u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043f\u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u043f\u043e\u0440\u0442\u0430\u043c\u0438:<\/p>\n<pre><code class=\"bash\">sudo ufw enable \/\/ \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c Firewall sudo ufw disable \/\/ \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c Firewall sudo ufw allow 8080 \/\/ \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u043f\u043e\u0440\u0442 8080 Firewall sudo ufw status \/\/ \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043d\u044b\u0435 \u043f\u043e\u0440\u0442\u044b<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043f\u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c \u043a \u043f\u043e\u0440\u0442\u0430\u043c <a href=\"https:\/\/www.digitalocean.com\/community\/tutorials\/how-to-set-up-a-firewall-with-ufw-on-ubuntu-18-04-ru\" rel=\"noopener noreferrer nofollow\">\u0432\u043e\u0442 \u043e\u043d\u0430<\/a>. \u0410 \u0435\u0441\u043b\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043f\u043e\u0440\u0442 \u0438 \u0443\u0437\u043d\u0430\u0442\u044c \u0437\u0430 \u0447\u0442\u043e \u043e\u043d \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0442\u043e <a href=\"https:\/\/ru.adminsub.net\/tcp-udp-port-finder\/443\" rel=\"noopener noreferrer nofollow\">\u0441\u044e\u0434\u0430<\/a>. \u041d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0439\u0442\u0435, \u0447\u0442\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u0430\u043c \u043d\u0443\u0436\u0435\u043d UDP.<\/p>\n<pre><code class=\"bash\">21\/tcp - ftp 22\/tcp - ssh 25\/tcp - smtp 2525\/tcp - smtp 53\/tcp - DNS 80\/tcp - http 8080\/tcp - http 110\/tcp - pop 143\/tcp - imap 443\/tcp - https 465\/tcp - ssh smtp 587\/tcp - ssh smtp 993\/tcp - imap 995\/tcp - pop 5432 - \u043f\u043e\u0440\u0442 postgres, \u0435\u0433\u043e \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0442\u044c,        \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438 \u0411\u0414 \u0431\u0443\u0434\u0443\u0442 \u043e\u0431\u0449\u0430\u0442\u044c\u0441\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e 8888\/tcp - fastpanel 51820\/tcp - wireguard<\/code><\/pre>\n<p>\u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0432\u0441\u0435 \u043d\u0443\u0436\u043d\u044b\u0435 \u043f\u043e\u0440\u0442\u044b, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u0432\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u043f\u043e\u0440\u0442\u044b \u0434\u043b\u044f http, https, smtp, smtps, ssh, pop3, WireGuard, FTP.<\/p>\n<p>\u0412\u0441\u0435 \u043e\u0442\u043a\u0440\u044b\u0442\u043e. \u0418\u043b\u0438 \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0430 \u0432\u0441\u0435 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u043e: <em>sudo ufw disable<\/em><\/p>\n<h3>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u0441\u044f \u043a \u0432\u0430\u0448\u0435\u043c\u0443 \u043f\u043e\u043a\u0430 \u043f\u0443\u0441\u0442\u043e\u043c\u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u0443<\/h3>\n<p>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u0441\u044f \u043f\u043e ip \u0447\u0435\u0440\u0435\u0437 ssh \u0441 \u043f\u0430\u0440\u043e\u043b\u0435\u043c \u043e\u0442 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0447\u0435\u0440\u0435\u0437 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b. \u041f\u0430\u0440\u043e\u043b\u044c \u0432\u0430\u043c \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u043e\u0431\u0449\u0438\u0442\u044c \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440. \u0418 \u0434\u0430\u043b\u044c\u0448\u0435 \u0431\u0443\u0434\u0435\u043c \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u043e\u0439 \u044d\u0442\u043e\u0433\u043e \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430. \u0415\u0441\u043b\u0438 \u0447\u0442\u043e, \u0435\u0441\u0442\u044c <a href=\"https:\/\/habr.com\/ru\/companies\/ruvds\/articles\/445270\/\" rel=\"noopener noreferrer nofollow\">\u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b<\/a> \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u043e\u043c.<\/p>\n<pre><code class=\"bash\">ssh root@123.123.123.123<\/code><\/pre>\n<p>\u041d\u0443 \u0438 \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 java <a href=\"https:\/\/selectel.ru\/blog\/tutorials\/how-to-install-java-on-ubuntu-20-04\/\" rel=\"noopener noreferrer nofollow\">\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0435\u0435<\/a>.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043d\u0435 \u0432\u0432\u043e\u0434\u0438\u0442\u044c \u043f\u0430\u0440\u043e\u043b\u044c \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0443 \u0441\u0435\u0431\u044f \u043d\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435 \u043a\u043b\u044e\u0447\u0438 \u0438 \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0438\u0445 \u043d\u0430 \u0441\u0430\u0439\u0442 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430. \u0415\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u043a\u043b\u044e\u0447\u0435\u0439 \u0434\u043b\u044f ssh-\u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0435\u0441\u0442\u044c \u0445\u043e\u0440\u043e\u0448\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0434\u043b\u044f <a href=\"https:\/\/docs.github.com\/ru\/authentication\/connecting-to-github-with-ssh\/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent\" rel=\"noopener noreferrer nofollow\">\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043a\u043b\u044e\u0447\u0430<\/a> \u0438 <a href=\"https:\/\/docs.github.com\/ru\/authentication\/connecting-to-github-with-ssh\/adding-a-new-ssh-key-to-your-github-account\" rel=\"noopener noreferrer nofollow\">\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u043a\u043b\u044e\u0447\u0430<\/a> \u043d\u0430 Github. \u041f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u043d\u0430 \u0432\u0430\u0448 \u0441\u0435\u0440\u0432\u0435\u0440, \u0442\u0430\u043a \u043e\u043d \u0441\u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043d\u044f\u0442\u044c \u0447\u0442\u043e \u0432\u044b \u044d\u0442\u043e \u0432\u044b. \u042d\u0442\u043e \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430\u0445 \u043f\u043e \u0440\u0430\u0437\u043d\u043e\u043c\u0443, \u043d\u043e \u0432\u0441\u0435\u0433\u0434\u0430 \u0435\u0441\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0435\u0441\u043b\u0438 \u043d\u0435 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e. <\/p>\n<p>\u0414\u043e\u0441\u0442\u0443\u043f \u043a \u0411\u0414 Postgres \u043e\u0442 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0447\u0435\u0440\u0435\u0437 localhost, \u043e\u043d\u0438 \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435.<\/p>\n<p>\u0410 \u0432\u0430\u0448\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u044b, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0447\u0442\u043e \u0442\u0430\u043c \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0432 \u0431\u0430\u0437\u0435 \u0438\u0437 \u043b\u044e\u0431\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u043e\u0449\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 <a href=\"https:\/\/www.pgadmin.org\/download\/pgadmin-4-macos\/\" rel=\"noopener noreferrer nofollow\">pgAdmin4<\/a> \u0438 \u043f\u043e ssh.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/acb\/a0f\/35d\/acba0f35d8f061a38b7dc69f65992814.png\" width=\"724\" height=\"870\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/acb\/a0f\/35d\/acba0f35d8f061a38b7dc69f65992814.png\"\/><\/figure>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440, \u043c\u044b \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u043d\u0430 \u043d\u0435\u0433\u043e fatJar, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438 java, \u043e\u0442\u043a\u0440\u044b\u043b\u0438 \u043d\u0443\u0436\u043d\u044b\u0435 \u043f\u043e\u0440\u0442\u044b, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 8080, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043b\u0443\u0448\u0430\u0435\u0442 \u043d\u0430\u0448\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435. \u0411\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u0430 \u0447\u0435\u0440\u0435\u0437 \u0422\u0435\u0440\u043c\u0438\u043d\u0430\u043b \u0438\u043b\u0438 Fastpanel, \u0432\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u0430\u043a \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u043d\u0430 \u043d\u0430\u0448\u0435\u043c \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435. \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435.<\/p>\n<h3>\u0417\u0430\u043f\u0443\u0441\u043a, \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a, \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f<\/h3>\n<p>\u0412\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0437\u043d\u0430\u0442\u044c \u043f\u043e \u043a\u0430\u043a\u043e\u043c\u0443 \u0430\u0434\u0440\u0435\u0441\u0443 \u043b\u0435\u0436\u0438\u0442 \u0432\u0430\u0448 fatJar \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u044b\u0439 \u043f\u043e FTP \u0447\u0435\u0440\u0435\u0437 Filezilla \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0435\u0433\u043e. \u041a\u043e\u043c\u0430\u043d\u0434\u0443 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u044f \u043f\u0438\u0441\u0430\u043b \u0432\u044b\u0448\u0435, \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044e:<\/p>\n<pre><code>java -jar \/var\/www\/user1\/data\/www\/site-example.com\/com.site-example.your_server_app-all.jar&amp;<\/code><\/pre>\n<p>\u0412\u0430\u0448\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.<br \/>\u0414\u043b\u044f \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0432\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0437\u043d\u0430\u0442\u044c PID, <\/p>\n<pre><code>jps<\/code><\/pre>\n<p>\u041a\u043e\u043c\u0430\u043d\u0434\u0430 jps \u0432\u044b\u0432\u0435\u0434\u0435\u0442 \u0432\u0441\u0435 java-\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b c \u0438\u0445 id:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/bd9\/d15\/c0a\/bd9d15c0a46b269fff3a2bd7b58b1969.png\" alt=\"jps \u2013 \u0432\u044b\u043e\u0434\u0438\u0442 \u0432\u0441\u0435 \u0440\u0430\u0431\u043e\u0447\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b (\u0441\u0435\u0431\u044f \u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435)\" title=\"jps \u2013 \u0432\u044b\u043e\u0434\u0438\u0442 \u0432\u0441\u0435 \u0440\u0430\u0431\u043e\u0447\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b (\u0441\u0435\u0431\u044f \u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435)\" width=\"640\" height=\"134\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/bd9\/d15\/c0a\/bd9d15c0a46b269fff3a2bd7b58b1969.png\"\/><\/p>\n<div><figcaption>jps \u2013 \u0432\u044b\u043e\u0434\u0438\u0442 \u0432\u0441\u0435 \u0440\u0430\u0431\u043e\u0447\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b (\u0441\u0435\u0431\u044f \u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435)<\/figcaption><\/div>\n<\/figure>\n<p> \u0423\u0431\u0438\u0442\u044c \u0432\u0430\u0448\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441 PID = 289198 \u043c\u043e\u0436\u043d\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439:<\/p>\n<pre><code>sudo kill -9 289198<\/code><\/pre>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u0432\u0430\u0448 \u0441\u0435\u0440\u0432\u0435\u0440 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438\u0437 \u043b\u044e\u0431\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u0437\u0435\u043c\u043b\u0438 \u043f\u043e ip \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u0430 \u043d\u0443\u0436\u043d\u044b\u0435 \u043f\u043e\u0440\u0442\u044b \u043e\u0442\u043a\u0440\u044b\u0442\u044b, \u043d\u0435\u043d\u0443\u0436\u043d\u044b\u0435 \u0437\u0430\u043a\u0440\u044b\u0442\u044b. \u0412\u044b \u0443\u043c\u0435\u0435\u0442\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c, \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u0435\u0433\u043e \u043f\u043e FTP. \u0418 \u0432\u0430\u0448\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0443\u0436\u0435 \u043c\u043e\u0433\u0443\u0442 \u0445\u043e\u0434\u0438\u0442\u044c \u0442\u0443\u0434\u0430, \u0432\u0441\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432 \u0411\u0414, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0447\u0435\u0440\u0435\u0437 pgAdmin4. <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/0b3\/bb1\/e9d\/0b3bb1e9d81403972fac12993662bf70.png\" width=\"1666\" height=\"120\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0b3\/bb1\/e9d\/0b3bb1e9d81403972fac12993662bf70.png\"\/><\/figure>\n<h3>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0440\u0430\u0444\u0438\u043a\u0430<\/h3>\n<p>\u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442\u0435 \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u0439 \u0434\u043e\u043c\u0435\u043d. \u0418 \u0442\u0430\u043c \u0433\u0434\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0438 \u043f\u043e\u043a\u0443\u043f\u0430\u043b\u0438, \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0435 \u043d\u043e\u0432\u044b\u0435 NS \u0437\u0430\u043f\u0438\u0441\u0438 \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430, \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u0432\u0441\u0442\u0443\u043f\u0430\u0442\u044c \u0432 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 24 \u0447\u0430\u0441\u043e\u0432. \u0422\u0430\u043a \u0432\u044b \u0441\u0432\u044f\u0436\u0435\u0442\u0435 \u0438\u043c\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u0434\u043e\u043c\u0435\u043d\u0430 \u0438 \u0430\u0434\u0440\u0435\u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043e\u0442 \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b7b\/1df\/bcd\/b7b1dfbcd4498e8ca9d70b6029db890d.png\" width=\"816\" height=\"292\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b7b\/1df\/bcd\/b7b1dfbcd4498e8ca9d70b6029db890d.png\"\/><\/figure>\n<p>\u0412\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a \u0432\u0430\u0448\u0435\u043c\u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u0443 \u0438 \u0434\u043e\u043c\u0435\u043d\u0443 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u043e\u0442 <a href=\"https:\/\/letsencrypt.org\/ru\/how-it-works\/\" rel=\"noopener noreferrer nofollow\">LetsEncrypt<\/a>. \u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439, \u043d\u043e \u043d\u0430 90 \u0434\u043d\u0435\u0439. \u0412\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u043f\u043e <a href=\"https:\/\/certbot.eff.org\/instructions?ws=webproduct&amp;os=ubuntufocal&amp;tab=standard\" rel=\"noopener noreferrer nofollow\">\u044d\u0442\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438<\/a>. \u0424\u0430\u0439\u043b \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u043e \u044d\u0442\u043e\u043c\u0443 \u0430\u0434\u0440\u0435\u0441\u0443 \u0432 \u043f\u0430\u043f\u043a\u0435 live, \u043d\u043e \u0441 \u0432\u0430\u0448\u0438\u043c \u0434\u043e\u043c\u0435\u043d\u043e\u043c. \u0418\u043c \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0447\u0442\u043e \u0432\u044b \u043e\u0431\u043b\u0430\u0434\u0430\u0435\u0442\u0435 \u0434\u043e\u043c\u0435\u043d\u043e\u043c, \u0434\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u0444\u0430\u0439\u043b \u0432 \u043f\u0430\u043f\u043a\u0443 \u0441\u0430\u0439\u0442\u0430. \u0418 \u0434\u0432\u0430\u0436\u0434\u044b \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 fullchain.pem \u0432 jks \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u043f\u043e <a href=\"https:\/\/ktor.io\/docs\/ssl.html#configure-ssl-ktor\" rel=\"noopener noreferrer nofollow\">\u044d\u0442\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438<\/a>, \u0432\u044b\u0434\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u0434 \u0438\u043c\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u0434\u043e\u043c\u0435\u043d\u0430.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e7e\/e3b\/cdb\/e7ee3bcdb50241cc5421772604b62af4.png\" width=\"1522\" height=\"92\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e7e\/e3b\/cdb\/e7ee3bcdb50241cc5421772604b62af4.png\"\/><\/figure>\n<h2>\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0442\u0443\u0445\u0448\u0435\u0433\u043e \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430<\/h2>\n<p>\u041e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u043d\u0430 80-\u0445 \u043f\u043e\u0440\u0442\u0443 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0433\u043e \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430:<\/p>\n<pre><code>sudo systemctl stop nginx sudo systemctl stop apache2<\/code><\/pre>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0441\u0442\u0430\u0442\u0443\u0441\u0430 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430:<\/p>\n<pre><code>sudo certbot certificates<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0440\u043e\u0441 \u043d\u043e\u0432\u043e\u0433\u043e \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430 certbot:<\/p>\n<pre><code> sudo certbot renew<\/code><\/pre>\n<p>\u0418 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u0432 \u043f\u0430\u043f\u043a\u0443 \u0441 \u043d\u043e\u0432\u044b\u043c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u043c:<\/p>\n<pre><code>cd \/etc\/letsencrypt\/live\/icicle.blue\/fullchain.pem<\/code><\/pre>\n<p>\u041a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432 \u0434\u043e *.jks<\/p>\n<pre><code>openssl pkcs12 -export -in fullchain.pem -inkey privkey.pem -out cert.p12 -name \"admin\" keytool -importkeystore -srckeystore cert.p12 -srcstoretype pkcs12 -destkeystore keystore.jks keytool -list -v -keystore keystore.jks  Existing entry alias admin exists, overwrite? [no]:  y<\/code><\/pre>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0432\u0430\u043b\u0438\u0434\u043d\u043e\u0441\u0442\u0438 jks-\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430:<\/p>\n<pre><code>keytool -list -v -keystore keystore.jks | grep 'admin|Valid'<\/code><\/pre>\n<p>\u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0435 jar-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435.<\/p>\n<h2>\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u0430<\/h2>\n<p>\u041d\u0438\u0436\u0435 \u043a\u043e\u0434 \u0434\u043b\u044f \u0434\u0432\u0443\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0439 \u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u041e\u0434\u043d\u0430 <em>dev<\/em> \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435 \u0432 \u0432\u0430\u0448\u0435\u0439 \u0441\u0440\u0435\u0434\u0435 \u0438 \u0431\u0435\u0437 \u0440\u0435\u0434\u0438\u0440\u0440\u0435\u043a\u0442\u0430 \u043d\u0430 https. \u0412\u0442\u043e\u0440\u044f <em>prod<\/em> \u0441 \u043a\u043b\u044e\u0447\u043e\u043c \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0440\u0430\u0444\u0438\u043a\u0430. \u041a\u043b\u044e\u0447 jks \u043f\u043e\u0445\u043e\u0436 \u043d\u0430 \u043a\u043b\u044e\u0447 \u0434\u043b\u044f \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u0438\u044f *.apk. \u0418 \u0432\u044b \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0435 \u043f\u0443\u0442\u044c \u043a \u043a\u043b\u044e\u0447\u0443, \u043f\u0430\u0440\u043e\u043b\u0438 \u0438 \u0430\u043b\u0438\u0430\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u0434\u0430\u0432\u0430\u043b\u0438 \u043f\u0440\u0438 \u0435\u0433\u043e \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u0438.<\/p>\n<pre><code class=\"kotlin\">fun main() {     val appConfig = AppConfigLoader.loadAppConfig()     if (appConfig.isDev()) {         devServer(appConfig)         return     }     prodServer(appConfig) }  fun prodServer(appConfig: AppConfig) {     val jksPath = appConfig.keyStorePath \/\/ \u043f\u0443\u0442\u044c \u043a keystore.jks \u0444\u0430\u0439\u043b\u0443     val keyStoreFile = File(jksPath)     val keyStorePassword = appConfig.keyStorePassword \/\/ \u043f\u0430\u0440\u043e\u043b\u044c \u043e\u0442 \u043a\u043b\u044e\u0447\u0430 \u043a\u0430\u043a \u0432 Android     val keyStoreAlias = appConfig.keyStoreAlias \/\/ \u0430\u043b\u0438\u0430\u0441 \u043a\u0430\u043a \u0432 Android     val keyStore = KeyStore.getInstance(\"JKS\").apply {         load(FileInputStream(jksPath), keyStorePassword.toCharArray())     }     val environment = applicationEngineEnvironment {         log = LoggerFactory.getLogger(\"ktor.application\")         connector { port = appConfig.port }         sslConnector(             keyStore = keyStore,             keyAlias = keyStoreAlias,             keyStorePassword = { keyStorePassword.toCharArray() },             privateKeyPassword = { keyStorePassword.toCharArray() }) { \/\/ \u043f\u0430\u0440\u043e\u043b\u044c             port = appConfig.sshPort \/\/ 8443             keyStorePath = keyStoreFile         }         module { module(appConfig) }     }     embeddedServer(         Netty,         environment,     ).start(wait = true) }  fun devServer(appConfig: AppConfig) {     embeddedServer(         Netty,         port = appConfig.port,         host = appConfig.host,         module = { module(appConfig) },     ).start(wait = true) }  fun Application.module(appConfig: AppConfig) {     FirebaseAdmin.init()     connectToPostgresDb(appConfig)     configureSerialization()     if (!appConfig.isDev()) configureRedirectHttps(appConfig)     configureMaintainRouting()     configurePushesRouting(appConfig)     configureConfirmationCodeRouting()     configureFriendsRouting()     configureUserStatisticsRouting()     configureAddAnswerRouting()     configureLoginUserRouting()     configureChangePasswordRouting()     configureLearningRouting(appConfig)     configureRegisterUserRouting()     configureFilesRouting(appConfig)     configureChangeUserSettingsRouting()     configureRestoreUserRouting()     configureDeleteUserRouting()     configureCardsRouting() }  \/**  * \u0420\u0435\u0434\u0438\u0440\u0440\u0435\u043a\u0442 http \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 https  *\/ fun Application.configureRedirectHttps(appConfig: AppConfig) {     install(HttpsRedirect) {         sslPort = appConfig.sshPort         permanentRedirect = true     } }<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u0430\u0448\u0438 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441\u043c\u043e\u0433\u0443\u0442 \u0445\u043e\u0434\u0438\u0442\u044c \u0443\u0436\u0435 \u043d\u0430 \u043c\u0435\u0436\u0434\u0443\u043d\u0430\u0440\u043e\u0434\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 <em>http<\/em><strong><em>s<\/em><\/strong><em>:\/\/your_domen.com\/check<\/em> \u0410 \u0432\u0435\u0441\u044c \u0442\u0440\u0430\u0444\u0438\u043a \u0431\u0443\u0434\u0435\u0442 \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f. \u0418 \u0432\u044b \u0443\u0432\u0438\u0434\u0438\u0442\u0435 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0435 \u0437\u0430\u043c\u043e\u0447\u043a\u0438 \u0440\u044f\u0434\u043e\u043c \u0441 \u043a\u043e\u0434\u043e\u043c \u043e\u0442\u0432\u0435\u0442\u0430 200OK \u0432 Postman \u0438 \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 \u043f\u043e\u0438\u0441\u043a\u0430 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u0434\u043b\u044f get-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e0b\/ca4\/958\/e0bca495837678b906cea8e5419e0670.png\" width=\"2278\" height=\"724\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e0b\/ca4\/958\/e0bca495837678b906cea8e5419e0670.png\"\/><\/figure>\n<h3>\u041a\u0430\u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440?<\/h3>\n<p>\u042d\u0442\u043e \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0434\u043b\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u043f\u0438\u0441\u0435\u043c \u0441 \u043a\u043e\u0434\u0430\u043c\u0438 \u0438\u043b\u0438 \u0441\u0441\u044b\u043b\u043a\u0430\u043c\u0438 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0432\u043b\u0430\u0434\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u043f\u043e\u0447\u0442\u043e\u0439. \u0422\u0443\u0442 \u0432\u0430\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043d\u0435 \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u0442 \u043b\u0438 \u0432\u0430\u0448 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440 \u043f\u043e\u0440\u0442\u044b \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u0439 \u043f\u043e\u0447\u0442\u044b. \u042f \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u043e \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u043b \u0447\u0430\u0441\u0430 3 \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043f\u043e\u043d\u044f\u043b, \u0447\u0442\u043e \u0442\u0430\u043a \u0431\u044b\u0432\u0430\u0435\u0442.<\/p>\n<p>\u0410 \u0442\u0430\u043a \u0432 \u0446\u0435\u043b\u043e\u043c \u0441\u043b\u0435\u0434\u0443\u0439\u0442\u0435 \u044d\u0442\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0438 \u043a \u043a\u043e\u043d\u0446\u0443 \u0432\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u0440\u0430\u0441\u0441\u044b\u043b\u0430\u0442\u044c \u043f\u0438\u0441\u044c\u043c\u0430 \u0441 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0435\u0439, \u043d\u0443 \u0438\u043b\u0438 \u0441\u043f\u0430\u043c \u0440\u0430\u0441\u0441\u044b\u043b\u043a\u0443. \u041d\u043e \u0447\u0442\u043e\u0431\u044b Google \u0441\u0442\u0430\u043b \u0432\u0430\u0441 \u043f\u043e\u043c\u0435\u0447\u0430\u0442\u044c \u043a\u0430\u043a \u0441\u043f\u0430\u043c \u043d\u0443\u0436\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u043c\u0435\u043d\u044c\u0448\u0435 1% \u0432\u0430\u0448\u0438\u0445 \u043f\u0438\u0441\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043e\u0442\u043c\u0435\u0442\u0438\u043b\u0438 \u043a\u0430\u043a \u0441\u043f\u0430\u043c.<\/p>\n<p>\u041e\u0447\u0435\u043d\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u0430\u044f \u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043f\u043e\u0441\u0442\u043e\u0432\u044b\u0445 DNS-\u0437\u0430\u043f\u0438\u0441\u0435\u0439 <a href=\"https:\/\/mxtoolbox.com\/SuperTool.aspx?action=a%3Aicicle.blue&amp;run=toolpage\" rel=\"noopener noreferrer nofollow\">MXTool<\/a>. \u0418 \u0442\u0435 \u043f\u0440\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u0441\u044f \u0432 \u044d\u0442\u043e\u043c \u0432\u0438\u0434\u0435\u043e.<\/p>\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/65202fc63eb8e176bfd3e68c\" data-style=\"\" id=\"65202fc63eb8e176bfd3e68c\" width=\"\"><\/div>\n<p>\u041a \u043a\u043e\u043d\u0446\u0443 \u0432\u0430\u0448\u0438 DNS-\u0437\u0430\u043f\u0438\u0441\u0438 \u0431\u0443\u0434\u0443\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043a\u0430\u043a-\u0442\u043e \u0442\u0430\u043a:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/2a8\/7fe\/7d1\/2a87fe7d1d4974bc4bcb14c7fe10daba.png\" width=\"1620\" height=\"1346\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2a8\/7fe\/7d1\/2a87fe7d1d4974bc4bcb14c7fe10daba.png\"\/><\/figure>\n<p>\u041f\u043e\u043c\u043d\u0438\u0442\u0435 \u0447\u0442\u043e Google \u0438 Yandex \u0442\u043e\u0436\u0435 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u0447\u0442\u043e \u0432\u044b \u0432\u043b\u0430\u0434\u0435\u0435\u0442\u0435 \u0434\u043e\u043c\u0435\u043d\u043e\u043c \u0438 \u0441\u0430\u0439\u0442\u043e\u043c. \u0418 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432\u0430\u0436\u043d\u043e \u0432\u044b\u043b\u043e\u0436\u0438\u0442\u044c \u0432 TXT \u0437\u0430\u043f\u0438\u0441\u0438 _domainkey DKIM \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0435 \u043a\u043b\u044e\u0447\u0438 \u0438 _dmarc.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0432\u0441\u0435\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0441\u043b\u0430\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0432 \u0422\u0435\u0440\u043c\u0438\u043d\u0430\u043b \u043e\u0431 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0435 \u043f\u0438\u0441\u044c\u043c\u0430:<\/p>\n<pre><code class=\"bash\">echo -e \"Subject: \"Subject Text\"\\nFrom: support@yourdomen.com\\nTo: recipient@mail.com\\nText body\" | sendmail -f \"support@yourdomen.com\" recipient@mail.com<\/code><\/pre>\n<p>\u0410 \u0432\u0430\u0448 \u0441\u0435\u0440\u0432\u0435\u0440 \u043c\u043e\u0436\u0435\u0442 \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a:<\/p>\n<pre><code class=\"kotlin\">import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext  const val DEFAULT_SENDER = \"support@yourdomen.com\" private val processBuilder = ProcessBuilder()  suspend fun sendEmailCommand(     sender: String,     recipient: String,     subject: String,     body: String ) {     val command = buildSendEmailCommand(         sender = sender,         recipient = recipient,         subject = subject,         body = body,     )     processBuilder.command(\"bash\", \"-c\", command)     withContext(Dispatchers.IO) { processBuilder.start() } }  private fun buildSendEmailCommand(     sender: String,     recipient: String,     subject: String,     body: String ): String {     val encodedSubject = Base64.getEncoder().encodeToString(subject.toByteArray(Charsets.UTF_8))     val mimeEncodedSubject = \"=?UTF-8?B?$encodedSubject?=\"     return \"\"\"echo -e \"Subject: $mimeEncodedSubject\\nFrom: $sender\\nTo: $recipient\\n\\n$body\" | sendmail -f \"$sender\" $recipient\"\"\" }<\/code><\/pre>\n<p>\u041d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 UPD, \u0440\u0443\u0441\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a \u043d\u0443\u0436\u043d\u043e \u044d\u043d\u043a\u043e\u0434\u0438\u0442\u044c \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0435:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/573\/f33\/592\/573f3359246a425963990f44d4255205.png\" width=\"1632\" height=\"982\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/573\/f33\/592\/573f3359246a425963990f44d4255205.png\"\/><\/figure>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u0430\u0448 \u0441\u0435\u0440\u0432\u0435\u0440 \u0432\u0441\u0435 \u043d\u0435\u043f\u043b\u043e\u0445\u043e \u0443\u043c\u0435\u0435\u0442, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u0411\u0414, \u0448\u0438\u0444\u0440\u0443\u0435\u0442, \u043f\u043e\u0441\u044b\u043b\u0430\u0435\u0442 \u043f\u0438\u0441\u044c\u043c\u0430, \u0443\u043c\u0435\u0435\u0442 \u043e\u0442\u0434\u0430\u0432\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u044b. Ktor \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043f\u0430\u0434\u0435\u043d\u0438\u044f. \u041d\u043e \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440, \u043a\u0430\u043a \u043f\u043e\u0434\u043d\u044f\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435?<\/p>\n<h3>\u0410\u0432\u0442\u043e\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430<\/h3>\n<p>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 <a href=\"https:\/\/askubuntu.com\/questions\/99232\/how-to-make-a-jar-file-run-on-startup-and-when-you-log-out\" rel=\"noopener noreferrer nofollow\">\u0441\u043a\u0440\u0438\u043f\u0442\u0430<\/a> \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438:<\/p>\n<pre><code class=\"bash\">touch \/usr\/local\/bin\/server_app_name-start.sh<\/code><\/pre>\n<pre><code class=\"bash\">#!\/bin\/bash  java -jar \/var\/www\/icicle_blue_usr\/data\/www\/icicle.blue\/blue.icicle.icicle_server_app-all.jar&amp;<\/code><\/pre>\n<p>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438:<\/p>\n<pre><code class=\"bash\">touch \/usr\/local\/bin\/server_app_name-stop.sh<\/code><\/pre>\n<p>grep \u0438\u0449\u0435\u0442 &#171;icicle_server_app&#187; \u0432 \u0438\u043c\u0435\u043d\u0430\u0445 PID \u0438 \u0443\u0431\u0438\u0432\u0430\u0435\u0442 \u043d\u0443\u0436\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441.<br \/>\u0418 \u0432\u044b\u0432\u043e\u0434\u0438\u0442 print&#8217;\u043e\u043c, \u0447\u0442\u043e \u0435\u0433\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435\u0442.<\/p>\n<pre><code class=\"bash\">#!\/bin\/bash # Grabs and kill a process from the pidlist that has the word blue.icicle.icicle_server_app-all  pid=`ps aux | grep icicle_server_app | awk '{print $2}'` kill -9 $pid<\/code><\/pre>\n<p>\u0410\u0432\u0442\u043e\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 jar-\u0444\u0430\u0439\u043b\u0430 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c &#171;<a href=\"http:\/\/icicle-start.sh\" rel=\"noopener noreferrer nofollow\">icicle-start.sh<\/a>&#187; \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 Ubuntu<\/p>\n<pre><code class=\"bash\">sudo nano \/etc\/rc.local<\/code><\/pre>\n<pre><code class=\"bash\">#!\/bin\/bash sh \/usr\/local\/bin\/server_app_name-start.sh exit 0<\/code><\/pre>\n<p>\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430, \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0438\u0437 \u043a\u043e\u043d\u0441\u043e\u043b\u0438:<\/p>\n<pre><code class=\"bash\">#!\/bin\/bash # YourServerApp # # description: Your Server Backend App  case $1 in     start)         \/bin\/bash \/usr\/local\/bin\/icicle-start.sh     ;;     stop)         \/bin\/bash \/usr\/local\/bin\/icicle-stop.sh     ;;     restart)         \/bin\/bash \/usr\/local\/bin\/icicle-stop.sh         \/bin\/bash \/usr\/local\/bin\/icicle-start.sh     ;; esac exit 0<\/code><\/pre>\n<pre><code class=\"bash\">update-rc.d \/etc\/init.d\/serverapp defaults <\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u0430\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0442\u0430\u043a\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430:<\/p>\n<pre><code class=\"bash\">sudo sh serverapp restart<\/code><\/pre>\n<h2>\u041c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433<\/h2>\n<p>\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u0438\u043b\u0438 heartbeat. \u042d\u0442\u043e \u0437\u0430\u043f\u0440\u043e\u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u0441\u044f \u0440\u0430\u0437 \u0432 \u0441\u043a\u043e\u043b\u044c\u043a\u043e-\u0442\u043e. \u0418 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0435 \u043e\u0442\u0432\u0435\u0442\u0430 \u0432\u0430\u043c \u043d\u0430 \u043f\u043e\u0447\u0442\u0443 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u043f\u0438\u0441\u044c\u043c\u043e. \u0417\u0430\u043f\u0440\u043e\u0441 \u043c\u043e\u0436\u043d\u043e. \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u043e\u0439 \u0411\u0414, \u043c\u0435\u0434\u0438\u0430-\u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0438 \u0441\u0430\u043c\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u041e\u043d\u0438 \u0447\u0430\u0441\u0442\u043e \u0438\u0434\u0443\u0442 \u0432 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u043a \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u0443. \u0418\u043b\u0438 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u0447\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u0441 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e77\/1aa\/147\/e771aa147498657e5669aa5ce6002df2.png\" width=\"1894\" height=\"1290\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e77\/1aa\/147\/e771aa147498657e5669aa5ce6002df2.png\"\/><\/figure>\n<h3>\u0423 \u043c\u0435\u043d\u044f \u0432\u0441\u0435 \ud83d\ude42<\/h3>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b0d\/e00\/e6a\/b0de00e6a11165a0890882b9e19dbaf9.png\" width=\"2246\" height=\"624\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b0d\/e00\/e6a\/b0de00e6a11165a0890882b9e19dbaf9.png\"\/><\/figure>\n<p>\u041c\u043e\u0436\u043d\u043e, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435 \u0432\u0441\u0435 \u044d\u0442\u043e \u0437\u0430\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0432 \u0414\u043e\u043a\u0435\u0440, \u043d\u043e \u0434\u0430\u0432\u043d\u043e \u0441 \u043d\u0438\u043c\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0434\u0435\u043b\u0430\u043b \u0438 \u043f\u043e\u0434\u0437\u0430\u0431\u044b\u043b. \u0418 \u043f\u043e\u043a\u0430 \u0432\u0441\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u0442\u043e\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u043e\u0434\u043d\u044f\u0442\u044c, \u043a\u043b\u044e\u0447\u0438 \u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u044b. \u041c\u043e\u0436\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440.<\/p>\n<p>\u0415\u0449\u0435 \u0435\u0441\u0442\u044c <a href=\"https:\/\/www.litres.ru\/book\/aleks-suy\/system-design-podgotovka-k-slozhnomu-intervu-67193183\/\" rel=\"noopener noreferrer nofollow\">\u0445\u043e\u0440\u043e\u0448\u0430\u044f \u043a\u043d\u0438\u0436\u043a\u0430<\/a> \u043f\u043e \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0435 \u043a \u0438\u043d\u0442\u0435\u0440\u0432\u044c\u044e \u043f\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u043c\u0443 \u0434\u0438\u0437\u0430\u0439\u043d\u0443. \u0410\u0432\u0442\u043e\u0440 \u043f\u043e \u043d\u0430\u0440\u0430\u0441\u0442\u0430\u044e\u0449\u0435\u0439 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445. \u041e\u0442 \u043e\u0434\u043d\u043e\u0433\u043e \u043a \u0434\u0432\u0443\u043c, \u043f\u043e\u0442\u043e\u043c \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430\u043c, \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f\u043c, \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u043c \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u0435\u0436\u0434\u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u043c\u0438. \u041d\u0435\u043f\u043b\u043e\u0445\u0430\u044f \u0447\u0442\u043e\u0431\u044b \u0432\u0438\u0434\u0435\u0442\u044c \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u044b.<\/p>\n<p>\u041d\u0430\u043f\u0438\u0441\u0430\u043b, \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0435\u043c \u0431\u044b\u043b\u043e \u043f\u0440\u043e\u0449\u0435, \u0430 \u043c\u043d\u0435 \u043a\u0430\u043a \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u0438 \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u0435 \u043a\u0430\u043a \u0432\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.<\/p>\n<p><strong>P.S.:<\/strong> \u0420\u0435\u0431\u044f\u0442\u0430 \u0441 \u0431\u0435\u043a\u0430, \u043f\u043e\u0434\u0441\u043a\u0430\u0436\u0438\u0442\u0435 \u0435\u0441\u0442\u044c \u043b\u0438 &#171;\u043a\u0440\u0438\u043c\u0438\u043d\u0430\u043b&#187; \u0438\u043b\u0438 \u0434\u044b\u0440\u044b \u0432 \u0442\u0430\u043a\u043e\u0439 \u0441\u0445\u0435\u043c\u0435, DDOS, \u0447\u0442\u043e \u043f\u043e\u0441\u043e\u0432\u0435\u0442\u0443\u0435\u0442\u0435? \u0418 \u0432\u0441\u0435, \u0435\u0441\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u044c, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u043c.<\/p>\n<p>\u0410\u043f\u043d\u0438\u0442\u0435 \u0441\u0442\u0430\u0442\u044c\u044e, \u0435\u0441\u043b\u0438 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f.<\/p>\n<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/764790\/\"> https:\/\/habr.com\/ru\/articles\/764790\/<\/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<div class=\"persona\">\n<h5 class=\"persona__heading\">\u041f\u0440\u0438\u0432\u0435\u0442, \u044f \u0421\u0430\u0448\u0430 \u0415\u0440\u0448\u043e\u0432, \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0432 \u0431\u0430\u0437\u0435 \u0410\u043d\u0434\u0440\u043e\u0438\u0434<\/h5>\n<p>\u0418 \u044f \u0437\u043d\u0430\u043b \u043f\u0440\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u0443\u044e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u0435\u043e\u0440\u0438\u0438 \u0438 \u0438\u0437 \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440\u043e\u0432 \u0441 \u043f\u0430\u0446\u0430\u043d\u0430\u043c\u0438 \u0441 \u0431\u0435\u043a\u0435\u043d\u0434\u0430<\/p>\n<\/div>\n<p>\u0423 \u043c\u0435\u043d\u044f \u0443\u0448\u0435\u043b \u043e\u0434\u0438\u043d \u043c\u0435\u0441\u044f\u0446 \u043d\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u0414\u0432\u0435 \u043d\u0435\u0434\u0435\u043b\u0438 \u0443\u0448\u043b\u043e \u043d\u0430 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430 \u0438 \u0441\u0431\u043e\u0440\u043a\u0443 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0430. \u041e\u0434\u043d\u0443 \u043d\u0435\u0434\u0435\u043b\u044e \u044f \u043f\u0438\u0441\u0430\u043b Ktor-\u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0430 Kotlin \u0438 \u0432\u0438\u0437\u0443\u0430\u043b \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u043d\u0430 Flutter. \u0418 \u0435\u0449\u0435 \u043e\u0434\u043d\u0443 \u043d\u0435\u0434\u0435\u043b\u044e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043b. \u0418 \u044f \u0445\u043e\u0447\u0443, \u0447\u0442\u043e\u0431\u044b \u0432\u044b \u0441\u044d\u043a\u043e\u043d\u043e\u043c\u0438\u043b\u0438 \u0434\u0432\u0435 \u043d\u0435\u0434\u0435\u043b\u0438, \u043a\u043e\u0433\u0434\u0430 \u0440\u0435\u0448\u0438\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0432\u0430\u0448 \u0431\u044d\u043a\u044d\u043d\u0434.<\/p>\n<h3>\u0417\u0430\u0447\u0435\u043c \u043c\u043d\u0435 \u0441\u0432\u043e\u0439 \u0441\u0435\u0440\u0432\u0435\u0440?<\/h3>\n<p>\u0414\u0432\u0430 \u043c\u0435\u0441\u044f\u0446\u0430 \u043d\u0430\u0437\u0430\u0434 \u044f \u043f\u0438\u0441\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u044e, \u043e \u0442\u043e\u043c \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u044e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0445 \u0441\u043b\u043e\u0432 \u043d\u0435\u0439\u0440\u043e\u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u043c\u0438 \u00ab<a href=\"https:\/\/habr.com\/ru\/articles\/754124\/\" rel=\"noopener noreferrer nofollow\">\u041a\u0430\u043a \u0437\u0430\u043f\u043e\u043c\u043d\u0438\u0442\u044c \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u043d\u0430\u0432\u0441\u0435\u0433\u0434\u0430?<\/a>\u00bb \u0438 \u043e\u043d\u0430 \u0432\u0430\u0441 \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043b\u0430. \u0414\u043b\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043c\u043d\u0435 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u043b\u0441\u044f \u0431\u044d\u043a\u044d\u043d\u0434. \u0421\u0442\u0430\u043b\u043e \u043d\u0443\u0436\u043d\u043e \u0443\u043c\u0435\u0442\u044c \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u043e\u0432, \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u0443\u0448\u0438 \u0438 \u043d\u0430 \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u0443 \u0443\u043c\u0435\u0442\u044c \u0434\u0435\u043b\u0430\u0442\u044c \u043e\u0431\u043c\u0435\u043d \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u043e\u0439, \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u044f \u0438 \u0441\u043e\u0440\u0435\u0432\u043d\u043e\u0432\u0430\u043d\u0438\u044f. \u041d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043a\u0430\u043a \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c.<\/p>\n<h3>\u0410 \u0447\u0435\u0433\u043e \u043d\u0435 Firebase?<\/h3>\n<p>\u042f \u043b\u044e\u0431\u043b\u044e Firebase, \u043e\u043d \u0443\u0434\u043e\u0431\u043d\u044b\u0439, \u0445\u043e\u0440\u043e\u0448\u043e-\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439 \u0438 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u043c\u044b\u0439. \u041d\u043e \u043e\u043d \u043d\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f, \u0435\u0433\u043e \u0441\u0442\u0430\u043b\u043e \u0441\u043b\u043e\u0436\u043d\u0435\u0435 \u043e\u043f\u043b\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u0438\u0437 \u0420\u0424, \u0433\u0438\u043f\u043e\u0442\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0435\u0433\u043e \u043c\u043e\u0433\u0443\u0442 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0441\u043e\u0432\u0441\u0435\u043c \u0438 \u0435\u0441\u043b\u0438 \u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u0441\u043b\u043e\u0436\u043d\u0435\u0435 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u043e\u043d \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442, \u0430 \u0447\u0442\u043e-\u0442\u043e \u043d\u0435 \u043c\u043e\u0436\u0435\u0442.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0441 \u0440\u0430\u0431\u043e\u0442\u043e\u0439 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u0441\u0435 \u0445\u043e\u0440\u043e\u0448\u043e \u043e\u0434\u0438\u043d \u0440\u0430\u0437, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u043e \u0432\u0441\u0435\u0445 \u0432\u0430\u0448\u0438\u0445 \u0431\u0443\u0434\u0443\u0449\u0438\u0445 \u0438\u0434\u0435\u044f\u0445 \u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445, \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0435\u0435 \u0443\u043c\u0435\u0442\u044c \u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0432\u043e\u0435. \u041d\u043e \u043d\u0443\u0436\u043d\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f.<\/p>\n<p>\u0418 \u0435\u0449\u0435 \u0435\u0441\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u043e\u043f\u0435\u043d-\u0441\u043e\u0440\u0441 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u044b \u0442\u0438\u043f\u0430 <a href=\"https:\/\/appwrite.io\/\" rel=\"noopener noreferrer nofollow\">Appwrite.io<\/a>, \u0433\u0434\u0435 \u0432\u0441\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0438 \u0432\u0430\u0448\u0435\u043c \u041f\u041e, \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442, \u043d\u043e \u0441\u0432\u043e\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u043c\u043d\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0433\u0438\u0431\u0447\u0435.<\/p>\n<p>\u042f \u043d\u0435 \u0431\u0443\u0434\u0443 \u0441\u043f\u043e\u0440\u0438\u0442\u044c, \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0441\u0432\u043e\u0438 \u043f\u043b\u044e\u0441\u044b. \u0418 \u0437\u0434\u0435\u0441\u044c \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043f\u0440\u043e \u0441\u0432\u043e\u0439 \u0441\u0435\u0440\u0432\u0435\u0440. \u0418 \u043f\u043e\u043a\u0430 \u044f \u0440\u0435\u0448\u0430\u043b \u043d\u0430\u0442\u043a\u043d\u0443\u043b\u0441\u044f \u043d\u0430 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435 \u043c\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u043e Firebase.<\/p>\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/651a9ba26f566b30a56e18f7\" data-style=\"\" id=\"651a9ba26f566b30a56e18f7\" width=\"\"><\/div>\n<h3>\u041f\u043b\u0430\u043d<\/h3>\n<p>\u0412\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0448\u0430\u0433\u0438:<\/p>\n<ul>\n<li>\n<p>\u0421\u043e\u0431\u0440\u0430\u0442\u044c Ktor-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 Kotlin.<\/p>\n<\/li>\n<li>\n<p>\u0410\u0440\u0435\u043d\u0434\u043e\u0432\u0430\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440 \u0438\u043b\u0438 \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u0441\u0432\u043e\u044e \u043c\u0430\u0448\u0438\u043d\u0443. \u041d\u0430 \u043d\u0435\u0435 \u0431\u0443\u0434\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u0438 \u0431\u0443\u0434\u0435\u0442 \u043a\u0440\u0443\u0442\u0438\u0442\u0441\u044f \u0432\u0430\u0448\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435. \u041e\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c \u043d\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043e\u0442 \u0432\u0430\u0448\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438 \u0441\u0430\u0439\u0442\u043e\u0432.<\/p>\n<\/li>\n<li>\n<p>\u0420\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0441 \u0411\u0414 \u0434\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439. \u0417\u0434\u0435\u0441\u044c \u044f \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 Postgres c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043d\u0435\u0439, \u0441\u0438\u0434\u044f \u0433\u0434\u0435 \u0443\u0433\u043e\u0434\u043d\u043e.<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c https, \u0447\u0442\u043e\u0431\u044b Google \u043d\u0435 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043b \u0432\u0430\u0448 \u0441\u0430\u0439\u0442 \u0438 \u043d\u0435 \u0432\u0435\u0448\u0430\u043b \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e \u0432\u0430\u0448\u0435\u0439 \u043d\u0435 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438. \u0418 \u0447\u0442\u043e\u0431\u044b \u0432\u044b \u0441\u043f\u043e\u043a\u043e\u0439\u043d\u043e \u043c\u043e\u0433\u043b\u0438 \u043f\u043e\u0441\u044b\u043b\u0430\u0442\u044c \u043f\u0430\u0440\u043e\u043b\u0438 \u0438 \u0447\u0443\u0432\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u043d\u0435 \u0431\u043e\u044f\u0441\u044c \u043f\u0440\u043e\u0441\u043b\u0443\u0448\u043a\u0438 \u0432 \u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0435.<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0439 smtp-c\u0435\u0440\u0432\u0435\u0440 \u0434\u043b\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u043f\u0438\u0441\u0435\u043c \u043f\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0438 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044e \u043f\u0430\u0440\u043e\u043b\u044f.<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u043f\u0438\u0441\u0435\u043c, \u0447\u0442\u043e\u0431\u044b Yandex \u0438 Google \u043d\u0435 \u043f\u043e\u043c\u0435\u0447\u0430\u043b\u0438 \u0432\u0430\u0448\u0438 \u043f\u0438\u0441\u044c\u043c\u0430 \u043a\u0430\u043a \u0441\u043f\u0430\u043c.<\/p>\n<\/li>\n<li>\n<p>\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0438.<\/p>\n<\/li>\n<\/ul>\n<h3>\u0421 \u0447\u0435\u0433\u043e \u043d\u0430\u0447\u0430\u0442\u044c? <\/h3>\n<p>\u0421 Ktor-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 Kotlin \u0438 \u0441 \u044d\u0442\u043e\u0433\u043e \u0432\u0438\u0434\u0435\u043e. \u0412\u0441\u0435 \u0445\u043e\u0440\u043e\u0448\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043d\u043e, \u043a\u0430\u043a \u043f\u043e\u0434\u043d\u044f\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c \u043d\u0430 \u0432\u0430\u0448\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043d\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u0438 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0431\u043e\u043b\u044c\u0448\u0435. \u041f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442\u0435 \u0438 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u0443 \u0432\u0430\u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435.<\/p>\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/65203195962d8d30c122977a\" data-style=\"\" id=\"65203195962d8d30c122977a\" width=\"\"><\/div>\n<p>\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 Postgres \u0438 Kotlin \u0435\u0441\u0442\u044c <a href=\"https:\/\/habr.com\/ru\/companies\/otus\/articles\/555134\/\" rel=\"noopener noreferrer nofollow\">\u043f\u0435\u0440\u0435\u0432\u0435\u0434\u0435\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f<\/a>. \u041f\u0440\u043e \u0432\u0441\u0442\u0430\u0432\u043a\u0438, \u043f\u043e\u0438\u0441\u043a, \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445. \u0418 \u043a\u0430\u043a \u044d\u0442\u043e \u0432\u0441\u0435 \u0434\u0435\u043b\u0430\u0442\u044c \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u0430\u043c\u0438.<\/p>\n<p>\u0415\u0449\u0435 \u043c\u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0443\u043c\u0435\u0442\u044c \u043e\u0442\u0434\u0430\u0432\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u044b json-\u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a, \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0438 mp3. \u0418 \u0441\u0445\u043e\u0434\u0443 \u043d\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e \u043a\u0443\u0434\u0430 \u0443\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0435\u0440\u0432\u0435\u0440 \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u0434\u0430\u0432\u0430\u0442\u044c. \u041a\u0430\u043a \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0430\u043f\u043a\u0443 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u043b\u0438 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e? \u0412\u043e\u0442 \u0442\u0430\u043a, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e\u043c\u0443 \u043f\u0443\u0442\u0438:<\/p>\n<pre><code>filesPath = \"\/Users\/user1\/path\/to\/files\/dir\/\"<\/code><\/pre>\n<p>\u0418 \u0442\u0443\u0442 \u0432\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u0434\u0430\u0435\u0442\u0435 \u0432\u0430\u0448 \u0444\u0430\u0439\u043b.<\/p>\n<pre><code class=\"kotlin\">fun Application.configureFilesRouting(appConfig: AppConfig) {     val path = appConfig.filesPath     routing {         route(\"\/settings\") { staticFiles(remotePath = \"\", dir = File(\"${path}settings.json\")) }     } }<\/code><\/pre>\n<figure class=\"full-width\"><\/figure>\n<p>\u0414\u043b\u044f \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0439 \u0438\u0437 \u0410\u043d\u0434\u0440\u043e\u0438\u0434 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430 \u043a \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u0445\u043e\u0441\u0442\u0443, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u044d\u0442\u043e\u0442 ip. <\/p>\n<pre><code class=\"dart\">  static const host = \"http:\/\/10.0.2.2:8080\/\";<\/code><\/pre>\n<p>\u0418 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <a href=\"https:\/\/www.postman.com\/\" rel=\"noopener noreferrer nofollow\">Postman<\/a> \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0432\u0430\u0448\u0438\u0445 get \u0438 post-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u043f\u0440\u0438\u043a\u0440\u0435\u043f\u043b\u044f\u044f \u043a \u043d\u0438\u043c json-\u0444\u0430\u0439\u043b\u044b.<\/p>\n<p>\u0415\u0449\u0435 \u044f \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u043b \u043c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0434\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0441 \u0411\u0414. \u0414\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043c\u043d\u0435 \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u043b\u043e\u0441\u044c <a href=\"https:\/\/postgresapp.com\/downloads.html\" rel=\"noopener noreferrer nofollow\">PostgressApp<\/a>. \u041e\u043d\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0431\u044b\u0441\u0442\u0440\u043e \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0411\u0414 \u043f\u043e\u043a\u0430 \u0432\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0435. \u0411\u0435\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441 \u0434\u043e\u0441\u0442\u0443\u043f\u0430\u043c\u0438, \u043f\u043e\u0440\u0442\u0430\u043c\u0438, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c\u0438 \u0438\u0445 \u043f\u0430\u0440\u043e\u043b\u044f\u043c\u0438 \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c. \u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0431\u044b\u0441\u0442\u0440\u043e \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043d\u0430 \u043f\u0443\u0441\u0442\u043e\u0439 \u0431\u0430\u0437\u0435 \u0435\u0441\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c postgres \u0441 \u043f\u0430\u0440\u043e\u043b\u0435\u043c postgres, \u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c. \u0415\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e, \u043b\u0438\u0431\u043e ssh, \u043b\u0438\u0431\u043e \u0432\u043e\u0437\u0438\u0442\u0441\u044f \u0441 \u0434\u043e\u0441\u0442\u0443\u043f\u0430\u043c\u0438.<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u0410 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0447\u0442\u043e \u0432\u044b \u0432\u0441\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 <a href=\"https:\/\/www.pgadmin.org\/download\/pgadmin-4-macos\/\" rel=\"noopener noreferrer nofollow\">pgAdmin4<\/a>. \u041e\u043d\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u0441\u044f \u043a \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u0443 \u0411\u0414, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0434\u043d\u044f\u043b\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432\u044b\u0448\u0435, \u0434\u0435\u043b\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u044b, \u0432\u044b\u0433\u0440\u0443\u0437\u043a\u0438 \u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f.<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u0418\u0442\u0430\u043a, \u043d\u0430 \u044d\u0442\u043e\u043c \u0448\u0430\u0433\u0435 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440, \u0432\u044b \u0443\u043c\u0435\u0435\u0442\u0435 \u043f\u0438\u0441\u0430\u0442\u044c \u0438 \u0447\u0438\u0442\u0430\u0442\u044c \u0438\u0437 \u0431\u0430\u0437\u044b, \u0441\u043e\u0437\u0434\u0430\u043d\u044b \u043f\u0435\u0440\u0432\u044b\u0435 \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0438\u0435 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b. \u0418 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u0447\u0442\u043e, \u043a\u0430\u043a \u0438 \u0433\u0434\u0435 \u043c\u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0438 \u043a\u0443\u0434\u0430 \u044d\u0442\u043e \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0438\u0437 \u043b\u044e\u0431\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u043c\u0438\u0440\u0430?<\/p>\n<h3>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u0442\u0432\u0435\u0442\u0438\u043c \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u0447\u0442\u043e \u0438 \u043a\u0430\u043a \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c?<\/h3>\n<p>\u0412\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0431\u0440\u0430\u0442\u044c fatJar \u2013 \u044d\u0442\u043e *.jar-\u0444\u0430\u0439\u043b \u0441 \u0432\u0430\u0448\u0438\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c, \u043e\u043d \u0441\u0430\u043c\u043e\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u044b\u0439 \u0438 \u0443 \u043d\u0435\u0433\u043e \u0435\u0441\u0442\u044c \u0432\u0441\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0432\u043d\u0443\u0442\u0440\u0438. \u0418 \u0438\u0437 \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0435\u043c\u0443 \u043d\u0443\u0436\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0444\u0430\u0439\u043b\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u0434\u0430\u0432\u0430\u0442\u044c \u0438 \u043a\u043b\u044e\u0447\u0438 \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043d\u043e \u043e\u0431 \u044d\u0442\u043e\u043c \u043f\u043e\u0437\u0436\u0435. \u0423 \u043c\u0435\u043d\u044f \u043e\u043d \u0432\u0435\u0441\u0438\u0442 70\u041c\u0431 \u0438 \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432\u0435\u0437\u0434\u0435, \u0433\u0434\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 Java. \u041e\u043d \u0442\u0430\u043a\u0436\u0435 \u0432\u0441\u0435\u043c \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c \u043d\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u043c \u0445\u043e\u0441\u0442\u0435 \u043d\u0430 8080 \u043f\u043e\u0440\u0442\u0435. \u041a\u0430\u043a \u0435\u0433\u043e \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c?<\/p>\n<p>\u041a\u043e\u043c\u0430\u043d\u0434\u0430 \u0434\u043b\u044f gradle \u0438\u0437 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 \u0438\u043b\u0438 \u0432 IDEA:<\/p>\n<pre><code>gradle buildFatJar<\/code><\/pre>\n<p>\u041e\u043d\u0430 \u0441\u043e\u0431\u0435\u0440\u0435\u0442 <em>com.site-example.your_server_app-all.jar \u0432 \u043f\u0430\u043f\u043a\u0443:<\/em><\/p>\n<pre><code>\/Users\/user1\/IdeaProjects\/your_server_app\/build\/libs\/<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a:<\/p>\n<pre><code>java -jar \/path\/to\/server\/app\/site-example.com\/com.site-example.your_server_app-all.jar&amp;<\/code><\/pre>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 &#171;&amp;&#187; \u043d\u0430 \u043a\u043e\u043d\u0446\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u0444\u043e\u043d\u0435. \u0418 \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0431\u0443\u0434\u0435\u0442\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043d\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u0438 \u0432\u044b\u0439\u0434\u0438\u0442\u0435 \u0438\u0437 \u043a\u043e\u043d\u0441\u043e\u043b\u0438, \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c. \u0411\u0435\u0437 &#171;&amp;&#187; \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442 \u043e\u0442 \u0438\u043c\u0435\u043d\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043f\u0440\u0438 \u0432\u044b\u0445\u043e\u0434\u0435 \u0437\u0430\u043a\u0440\u043e\u0435\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438 \u043e\u043d\u043e \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043d\u0435\u0442 \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c.<\/p>\n<h3>\u0413\u0434\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c? \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0432 \u0410\u043c\u0441\u0442\u0435\u0440\u0434\u0430\u043c\u0435<\/h3>\n<p>\u0410\u0440\u0435\u043d\u0434\u0443\u0435\u043c \u0441\u0435\u0440\u0432\u0435\u0440 \u0441 \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c \u043f\u043e ssh \u0433\u0434\u0435-\u0442\u043e \u0437\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u0435\u0439, \u043a\u043e\u043c\u0443 \u043c\u044b \u0441\u043c\u043e\u0436\u0435\u043c \u043e\u043f\u043b\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f. \u041d\u0443 \u0438\u043b\u0438 \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u044f \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430 \u043d\u0430 \u043d\u0435\u0439. \u041d\u043e \u0420\u0424 ip \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u0441\u0435\u0433\u0434\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b, \u0447\u0442\u043e-\u0442\u043e \u0441 vpn \u0447\u0442\u043e-\u0442\u043e \u0431\u0435\u0437.<\/p>\n<p>\u0418 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0438\u043d\u043e\u0433\u0434\u0430 \u0432\u0438\u0434\u043d\u044b \u0420\u0424-\u043a\u043e\u0440\u043d\u0438 \u0438\u043d\u043e\u0441\u0442\u0440\u0430\u043d\u043d\u044b\u0445 \u0430\u0440\u0435\u043d\u0434\u043e\u0432\u0430\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f Ktor-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0441\u0432\u043e\u0439 \u0430\u0440\u0435\u043d\u0434\u043e\u0432\u0430\u043d\u044b\u0439 vpn-\u0441\u0435\u0440\u0432\u0435\u0440  \u0438 ChatGPT \u043e\u0442\u0431\u0438\u0432\u0430\u0435\u0442 \u043c\u043e\u0439 \u0442\u0440\u0430\u0444\u0438\u043a \u043d\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438.<\/p>\n<p>\u0421\u0435\u0439\u0447\u0430\u0441 \u043c\u043d\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0434\u0430\u044e\u0442 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u043c\u0438 \u041e\u0421 Ubuntu. \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u0441\u044f \u0438 \u0434\u0430\u043b\u044c\u0448\u0435 \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u043e\u0439 \u044d\u0442\u043e\u0433\u043e \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430. \u0426\u0435\u043d\u044b \u0437\u0430 \u0441\u0430\u043c\u044b\u0435 \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 1 \u044f\u0434\u0440\u043e, 2\u0413\u0431 RAM, 32\u0413\u0431 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0438 32\u0422\u0431 \u0442\u0440\u0430\u0444\u0438\u043a \u0437\u0430 15\u0440 \u0432 \u0441\u0443\u0442\u043a\u0438 \u0438\u043b\u0438 450\u0440 \u0432 \u043c\u0435\u0441\u044f\u0446. \u041d\u043e \u0435\u0441\u0442\u044c \u0438 \u043f\u043e\u0436\u0438\u0437\u043d\u0435\u043d\u043d\u044b\u0435 \u0442\u0430\u0440\u0438\u0444\u044b \u0437\u0430 20.000\u0440. \u042f \u0430\u0440\u0435\u043d\u0434\u043e\u0432\u0430\u043b \u043d\u0430 <a href=\"https:\/\/vdsina.ru\/\" rel=\"noopener noreferrer nofollow\">VDSina<\/a>, \u043d\u043e \u0444\u0430\u0439\u043b\u044b \u0443 \u043c\u0435\u043d\u044f \u043b\u0435\u0436\u0430\u0442 \u0432 <a href=\"https:\/\/selectel.ru\/\" rel=\"noopener noreferrer nofollow\">Selectel<\/a> \u043d\u0430 1.2\u0413\u0431 \u0437\u0430 \u043c\u0435\u043d\u044c\u0448\u0435 \u0447\u0435\u043c 100\u0440 \u0432 \u043c\u0435\u0441\u044f\u0446. \u0423 \u0421\u0435\u043b\u0435\u043a\u0442\u0435\u043b \u0442\u043e\u0436\u0435 \u0435\u0441\u0442\u044c \u0438\u043d\u043e\u0441\u0442\u0440\u0430\u043d\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0432 \u041a\u0430\u0437\u0430\u0445\u0441\u0442\u0430\u043d\u0435 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u043e \u043e\u043d\u0438 \u043c\u043e\u0449\u043d\u0435\u0435 \u0438 \u0434\u043e\u0440\u043e\u0436\u0435, \u0430 \u0434\u0435\u0448\u0435\u0432\u043b\u0435 \u043d\u0435\u0442.<\/p>\n<figure class=\"float\"><\/figure>\n<p>\u041f\u043b\u044e\u0441 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u043f\u0430\u043d\u0435\u043b\u044c \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <a href=\"https:\/\/kb.fastpanel.direct\/quick_start\/how-to-install-fastpanel\" rel=\"noopener noreferrer nofollow\">Fastpanel<\/a>. \u0421 \u043d\u0435\u0439 \u043c\u043e\u0436\u043d\u043e \u0443\u0434\u043e\u0431\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432. \u041c\u043e\u0436\u043d\u043e \u0438 \u0431\u0435\u0437 \u043d\u0435\u0435, \u0438 \u0432\u0441\u0451 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443, \u043d\u043e \u0441 \u043d\u0435\u0439 \u0443\u0434\u043e\u0431\u043d\u0435\u0435<\/p>\n<p>\u041e\u043d\u0430 \u0442\u043e\u0436\u0435 \u0447\u0430\u0441\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0438\u0434\u0442\u0438 \u043e\u0442 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u043d\u0430 \u043f\u0440\u0435\u0434\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435. Fastpanel \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u0430\u044f, \u043d\u043e \u043d\u0443\u0436\u043d\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f.<\/p>\n<p>\u041e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0431\u0443\u0434\u0435\u0442 FTP. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c <a href=\"https:\/\/filezilla.ru\/get\/\" rel=\"noopener noreferrer nofollow\">Filezilla<\/a> \u0438 \u043f\u043e\u0442\u043e\u043c \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0435 \u0443\u0434\u043e\u0431\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043b\u0438\u0432\u0430\u0442\u044c \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u0432\u0430\u0448\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435. <strong>\u041f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u043a\u0438\u0434\u044b\u0432\u0430\u0435\u0442\u0435 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440 fatJar-\u0444\u0430\u0439\u043b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<\/strong><\/p>\n<p>\u0412 \u043f\u0430\u043d\u0435\u043b\u0438 \u0432\u0430\u043c \u043f\u043e\u0447\u0442\u0438 \u043d\u0435 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u043e\u0439 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u043e\u0439 \u0411\u0414 Postgres.<\/p>\n<p>\u0418\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438 \u0438\u0434\u0435\u0442 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u0437\u0430\u0434\u0430\u043d\u0438\u0439, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0435 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0411\u0414 \u0440\u0430\u0437 \u0432 \u0441\u0443\u0442\u043a\u0438 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440.<\/p>\n<p>\u041f\u043b\u044e\u0441 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u043e\u0442 <a href=\"https:\/\/letsencrypt.org\/ru\/\" rel=\"noopener noreferrer nofollow\">LetsEncrypt<\/a> \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u043b\u043e\u0436\u0438\u0442\u044c \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440. \u0418 Google \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043d\u0435\u0442 \u043f\u043e\u0434\u043e\u0437\u0440\u0435\u0432\u0430\u0442\u044c \u0432\u0430\u0448 \u0441\u0430\u0439\u0442 \u0432 \u043c\u043e\u0448\u0435\u043d\u043d\u0438\u0447\u0435\u0441\u0442\u0432\u0435.<\/p>\n<p>\u0412\u0430\u0448\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435. \u0427\u0435\u0440\u0435\u0437 ssh \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0435\u0433\u043e \u0438 \u0434\u043e\u0441\u0442\u0443\u043a\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043e \u0440\u0443\u0447\u0435\u043a \u043f\u043e ip \u043e\u0442 \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u0438\u043b\u0438 ip \u0432\u0430\u0448\u0435\u0433\u043e \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430.<\/p>\n<p>Fastpanel \u043f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u043d\u0430 \u0430\u0434\u0440\u0435\u0441\u0435 <em>http:\/\/123.123.123.123:8888<\/em>, \u043b\u043e\u0433\u0438\u043d \u0438 \u043f\u0430\u0440\u043e\u043b\u044c \u043f\u0440\u0438\u0448\u043b\u0435\u0442 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440 \u0438\u043b\u0438 \u0432\u044b \u0441\u0430\u043c\u0438 \u0437\u0430\u0434\u0430\u0434\u0438\u0442\u0435 \u043f\u0440\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435.<\/p>\n<p>\u041d\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u044d\u0442\u0438\u043c \u043c\u043e\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b \u043f\u043e\u0440\u0442\u044b \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f.<\/p>\n<h3>\u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0438 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0438 \u043f\u043e\u0440\u0442\u044b<\/h3>\n<p>\u0421\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0432\u0441\u0435 \u043f\u043e\u0440\u0442\u044b \u043d\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u0420\u0430\u0437\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c\u0438. \u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043f\u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u043f\u043e\u0440\u0442\u0430\u043c\u0438:<\/p>\n<pre><code class=\"bash\">sudo ufw enable \/\/ \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c Firewall sudo ufw disable \/\/ \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c Firewall sudo ufw allow 8080 \/\/ \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u043f\u043e\u0440\u0442 8080 Firewall sudo ufw status \/\/ \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043d\u044b\u0435 \u043f\u043e\u0440\u0442\u044b<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043f\u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c \u043a \u043f\u043e\u0440\u0442\u0430\u043c <a href=\"https:\/\/www.digitalocean.com\/community\/tutorials\/how-to-set-up-a-firewall-with-ufw-on-ubuntu-18-04-ru\" rel=\"noopener noreferrer nofollow\">\u0432\u043e\u0442 \u043e\u043d\u0430<\/a>. \u0410 \u0435\u0441\u043b\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043f\u043e\u0440\u0442 \u0438 \u0443\u0437\u043d\u0430\u0442\u044c \u0437\u0430 \u0447\u0442\u043e \u043e\u043d \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0442\u043e <a href=\"https:\/\/ru.adminsub.net\/tcp-udp-port-finder\/443\" rel=\"noopener noreferrer nofollow\">\u0441\u044e\u0434\u0430<\/a>. \u041d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0439\u0442\u0435, \u0447\u0442\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u0430\u043c \u043d\u0443\u0436\u0435\u043d UDP.<\/p>\n<pre><code class=\"bash\">21\/tcp - ftp 22\/tcp - ssh 25\/tcp - smtp 2525\/tcp - smtp 53\/tcp - DNS 80\/tcp - http 8080\/tcp - http 110\/tcp - pop 143\/tcp - imap 443\/tcp - https 465\/tcp - ssh smtp 587\/tcp - ssh smtp 993\/tcp - imap 995\/tcp - pop 5432 - \u043f\u043e\u0440\u0442 postgres, \u0435\u0433\u043e \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0442\u044c,        \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438 \u0411\u0414 \u0431\u0443\u0434\u0443\u0442 \u043e\u0431\u0449\u0430\u0442\u044c\u0441\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e 8888\/tcp - fastpanel 51820\/tcp - wireguard<\/code><\/pre>\n<p>\u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0432\u0441\u0435 \u043d\u0443\u0436\u043d\u044b\u0435 \u043f\u043e\u0440\u0442\u044b, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u0432\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u043f\u043e\u0440\u0442\u044b \u0434\u043b\u044f http, https, smtp, smtps, ssh, pop3, WireGuard, FTP.<\/p>\n<p>\u0412\u0441\u0435 \u043e\u0442\u043a\u0440\u044b\u0442\u043e. \u0418\u043b\u0438 \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0430 \u0432\u0441\u0435 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u043e: <em>sudo ufw disable<\/em><\/p>\n<h3>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u0441\u044f \u043a \u0432\u0430\u0448\u0435\u043c\u0443 \u043f\u043e\u043a\u0430 \u043f\u0443\u0441\u0442\u043e\u043c\u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u0443<\/h3>\n<p>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u0441\u044f \u043f\u043e ip \u0447\u0435\u0440\u0435\u0437 ssh \u0441 \u043f\u0430\u0440\u043e\u043b\u0435\u043c \u043e\u0442 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0447\u0435\u0440\u0435\u0437 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b. \u041f\u0430\u0440\u043e\u043b\u044c \u0432\u0430\u043c \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u043e\u0431\u0449\u0438\u0442\u044c \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440. \u0418 \u0434\u0430\u043b\u044c\u0448\u0435 \u0431\u0443\u0434\u0435\u043c \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u043e\u0439 \u044d\u0442\u043e\u0433\u043e \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430. \u0415\u0441\u043b\u0438 \u0447\u0442\u043e, \u0435\u0441\u0442\u044c <a href=\"https:\/\/habr.com\/ru\/companies\/ruvds\/articles\/445270\/\" rel=\"noopener noreferrer nofollow\">\u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b<\/a> \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u043e\u043c.<\/p>\n<pre><code class=\"bash\">ssh root@123.123.123.123<\/code><\/pre>\n<p>\u041d\u0443 \u0438 \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 java <a href=\"https:\/\/selectel.ru\/blog\/tutorials\/how-to-install-java-on-ubuntu-20-04\/\" rel=\"noopener noreferrer nofollow\">\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0435\u0435<\/a>.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043d\u0435 \u0432\u0432\u043e\u0434\u0438\u0442\u044c \u043f\u0430\u0440\u043e\u043b\u044c \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0443 \u0441\u0435\u0431\u044f \u043d\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435 \u043a\u043b\u044e\u0447\u0438 \u0438 \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0438\u0445 \u043d\u0430 \u0441\u0430\u0439\u0442 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430. \u0415\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u043a\u043b\u044e\u0447\u0435\u0439 \u0434\u043b\u044f ssh-\u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0435\u0441\u0442\u044c \u0445\u043e\u0440\u043e\u0448\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0434\u043b\u044f <a href=\"https:\/\/docs.github.com\/ru\/authentication\/connecting-to-github-with-ssh\/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent\" rel=\"noopener noreferrer nofollow\">\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043a\u043b\u044e\u0447\u0430<\/a> \u0438 <a href=\"https:\/\/docs.github.com\/ru\/authentication\/connecting-to-github-with-ssh\/adding-a-new-ssh-key-to-your-github-account\" rel=\"noopener noreferrer nofollow\">\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u043a\u043b\u044e\u0447\u0430<\/a> \u043d\u0430 Github. \u041f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u043d\u0430 \u0432\u0430\u0448 \u0441\u0435\u0440\u0432\u0435\u0440, \u0442\u0430\u043a \u043e\u043d \u0441\u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043d\u044f\u0442\u044c \u0447\u0442\u043e \u0432\u044b \u044d\u0442\u043e \u0432\u044b. \u042d\u0442\u043e \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430\u0445 \u043f\u043e \u0440\u0430\u0437\u043d\u043e\u043c\u0443, \u043d\u043e \u0432\u0441\u0435\u0433\u0434\u0430 \u0435\u0441\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0435\u0441\u043b\u0438 \u043d\u0435 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e. <\/p>\n<p>\u0414\u043e\u0441\u0442\u0443\u043f \u043a \u0411\u0414 Postgres \u043e\u0442 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0447\u0435\u0440\u0435\u0437 localhost, \u043e\u043d\u0438 \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435.<\/p>\n<p>\u0410 \u0432\u0430\u0448\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u044b, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0447\u0442\u043e \u0442\u0430\u043c \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0432 \u0431\u0430\u0437\u0435 \u0438\u0437 \u043b\u044e\u0431\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u043e\u0449\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 <a href=\"https:\/\/www.pgadmin.org\/download\/pgadmin-4-macos\/\" rel=\"noopener noreferrer nofollow\">pgAdmin4<\/a> \u0438 \u043f\u043e ssh.<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440, \u043c\u044b \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u043d\u0430 \u043d\u0435\u0433\u043e fatJar,<\/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-356415","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/356415","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=356415"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/356415\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=356415"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=356415"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=356415"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}