{"id":18378,"date":"2023-04-19T14:03:01","date_gmt":"2023-04-19T10:33:01","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/self-hosted-password-manager-with-dokku-2fjg\/"},"modified":"2023-04-19T14:03:01","modified_gmt":"2023-04-19T10:33:01","slug":"self-hosted-password-manager-with-dokku-2fjg","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/self-hosted-password-manager-with-dokku-2fjg\/","title":{"rendered":"\u0645\u062f\u06cc\u0631\u06cc\u062a \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u062e\u0648\u062f \u0645\u06cc\u0632\u0628\u0627\u0646\u06cc \u0634\u062f\u0647 \u0628\u0627 Dokku"},"content":{"rendered":"<div data-article-id=\"1440584\" id=\"article-body\">\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_84 counter-hierarchy ez-toc-counter-rtl ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/nabfollower.com\/blog\/self-hosted-password-manager-with-dokku-2fjg\/#%DA%86%D8%B1%D8%A7%D8%9F\" >\u0686\u0631\u0627\u061f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/nabfollower.com\/blog\/self-hosted-password-manager-with-dokku-2fjg\/#%D9%BE%DB%8C%D8%B4_%D9%86%DB%8C%D8%A7%D8%B2%D9%87%D8%A7\" >\u067e\u06cc\u0634 \u0646\u06cc\u0627\u0632\u0647\u0627<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/nabfollower.com\/blog\/self-hosted-password-manager-with-dokku-2fjg\/#%DA%AF%D8%A7%D9%85_%D8%A8%D9%87_%DA%AF%D8%A7%D9%85\" >\u06af\u0627\u0645 \u0628\u0647 \u06af\u0627\u0645<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/nabfollower.com\/blog\/self-hosted-password-manager-with-dokku-2fjg\/#%D8%A8%D8%B3%D8%AA%D9%87_%D8%B4%D8%AF%D9%86\" >\u0628\u0633\u062a\u0647 \u0634\u062f\u0646<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"%DA%86%D8%B1%D8%A7%D8%9F\"><\/span>\n<p>  \u0686\u0631\u0627\u061f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0645\u0646 \u062f\u0631 \u0686\u0646\u062f \u0633\u0627\u0644 \u06af\u0630\u0634\u062a\u0647 \u0628\u0647 1Password \u0627\u0639\u062a\u0645\u0627\u062f \u06a9\u0631\u062f\u0645\u060c \u0642\u0648\u06cc \u0627\u0633\u062a \u0648 \u0628\u0633\u06cc\u0627\u0631 \u06a9\u0627\u0631\u0628\u0631 \u067e\u0633\u0646\u062f \u0627\u0633\u062a.  \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u0627\u06cc\u0646 \u0646\u0648\u0639 \u0627\u0632 \u0633\u0631\u0648\u06cc\u0633 \u0647\u0627 \u0627\u0647\u062f\u0627\u0641 \u0627\u0635\u0644\u06cc \u0628\u0631\u0627\u06cc \u062d\u0645\u0644\u0627\u062a \u0647\u0633\u062a\u0646\u062f\u060c \u06cc\u06a9\u06cc \u0627\u0632 \u0646\u0645\u0648\u0646\u0647 \u0647\u0627\u06cc \u0645\u062d\u0628\u0648\u0628 \u0645\u0648\u0631\u062f Lastpass \u0627\u0633\u062a.  \u0645\u0637\u0645\u0626\u0646\u0627\u064b \u06a9\u0627\u0631 \u062c\u0627\u0644\u0628\u06cc \u0646\u06cc\u0633\u062a \u06a9\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062d\u0633\u0627\u0633 \u0634\u0645\u0627 \u062f\u0631 \u06cc\u06a9 \u0646\u0642\u0636 \u062f\u0627\u062f\u0647 \u062f\u06cc\u06af\u0631 \u0645\u0646\u062a\u0634\u0631 \u0634\u0648\u062f.  \u0647\u0645\u0686\u0646\u06cc\u0646\u060c \u0627\u0645\u0631\u0648\u0632\u0647 \u062d\u0631\u06cc\u0645 \u062e\u0635\u0648\u0635\u06cc \u0628\u0633\u06cc\u0627\u0631 \u0627\u0631\u0632\u0634\u0645\u0646\u062f \u0627\u0633\u062a\u060c \u0647\u0631 \u06a9\u0633\u06cc \u06a9\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627 \u0631\u0627 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f\u060c \u0642\u062f\u0631\u062a \u062f\u0627\u0631\u062f.<\/p>\n<p>\u062f\u0631 \u062d\u06cc\u0646 \u0628\u0631\u0631\u0633\u06cc \u06af\u0632\u06cc\u0646\u0647 \u0647\u0627\u06cc \u0645\u062a\u0646 \u0628\u0627\u0632\u060c vaultwarden \u0631\u0627 \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f\u0645\u060c \u0633\u0631\u0648\u0631 \u063a\u06cc\u0631 \u0631\u0633\u0645\u06cc \u0633\u0627\u0632\u06af\u0627\u0631 \u0628\u0627 Bitwarden \u06a9\u0647 \u0628\u0647 \u0632\u0628\u0627\u0646 Rust \u0646\u0648\u0634\u062a\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<p>\u0627\u0646\u062a\u0642\u0627\u0644 \u062f\u0627\u062f\u0647 \u0647\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u062f\u0633\u062a\u06cc \u06cc\u06a9 \u0641\u0631\u0622\u06cc\u0646\u062f \u062e\u0633\u062a\u0647 \u06a9\u0646\u0646\u062f\u0647 \u0627\u0633\u062a\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u0646 \u0627\u0628\u062a\u062f\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0631\u062f\u0645 \u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 \u0628\u0627 Bitwarden \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f.  \u0633\u0648\u0631\u067e\u0631\u0627\u06cc\u0632\u060c \u062a\u0639\u062c\u0628\u060c \u0622\u0646\u0647\u0627 \u0647\u0645\u0647 \u0686\u06cc\u0632 \u0631\u0627 \u062f\u0627\u0631\u0646\u062f!  \u0644\u0627\u0632\u0645 \u0646\u06cc\u0633\u062a \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0628\u0627 \u062f\u0633\u062a \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u062f\u060c \u0627\u06cc\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0632 \u0645\u062d\u0628\u0648\u0628 \u062a\u0631\u06cc\u0646 \u0645\u062f\u06cc\u0631\u0627\u0646 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p><em>\u0648\u0628 &#8211; \u0635\u0641\u062d\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0648\u0627\u0631\u062f\u0627\u062a\u06cc<\/em><br \/><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/04\/\u0645\u062f\u06cc\u0631\u06cc\u062a-\u0631\u0645\u0632-\u0639\u0628\u0648\u0631-\u062e\u0648\u062f-\u0645\u06cc\u0632\u0628\u0627\u0646\u06cc-\u0634\u062f\u0647-\u0628\u0627-Dokku.png\" alt=\"\u0635\u0641\u062d\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0648\u0627\u0631\u062f\u0627\u062a Bitwarden\" loading=\"lazy\" width=\"800\" height=\"779\" title=\"\"><\/p>\n<p>PS: \u06a9\u0634\u0641 \u06cc\u06a9 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0628\u0647 \u062e\u0648\u0628\u06cc \u0627\u0646\u062c\u0627\u0645 \u0634\u062f\u0647 \u0628\u0627\u0639\u062b \u0622\u0631\u0627\u0645\u0634 \u0634\u062f\u060c \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u06cc\u06a9 \u0627\u0633\u067e\u0648\u06cc\u0644\u0631 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f:<\/p>\n<p><em>\u0628\u0631\u0646\u0627\u0645\u0647 macOS<\/em><br \/><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/04\/1681900380_694_\u0645\u062f\u06cc\u0631\u06cc\u062a-\u0631\u0645\u0632-\u0639\u0628\u0648\u0631-\u062e\u0648\u062f-\u0645\u06cc\u0632\u0628\u0627\u0646\u06cc-\u0634\u062f\u0647-\u0628\u0627-Dokku.png\" alt=\"\u0628\u0631\u0646\u0627\u0645\u0647 macos\" loading=\"lazy\" width=\"800\" height=\"552\" title=\"\"><\/p>\n<p>\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0622\u0646 \u0631\u0627 \u0645\u0642\u0631\u0648\u0646 \u0628\u0647 \u0635\u0631\u0641\u0647 \u06a9\u0646\u0645\u060c \u062a\u0635\u0645\u06cc\u0645 \u06af\u0631\u0641\u062a\u0645 \u0627\u0632 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a Dokku \u0641\u0639\u0644\u06cc \u062e\u0648\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u0645 \u06a9\u0647 \u062f\u0631 Google Cloud \u0645\u06cc\u0632\u0628\u0627\u0646\u06cc \u0634\u062f\u0647 \u0648 \u062a\u0648\u0633\u0637 Ubuntu 20.04 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc \u0634\u0648\u062f.  \u0627\u06af\u0631 \u0646\u0627\u0645 Dokku \u0631\u0627 \u0646\u0634\u0646\u06cc\u062f\u0647 \u0627\u06cc\u062f\u060c \u0627\u06cc\u0646 \u0641\u0631\u0635\u062a\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0622\u0646 \u0631\u0627 \u0627\u0645\u062a\u062d\u0627\u0646 \u06a9\u0646\u06cc\u062f https:\/\/dokku.com\/docs\/getting-started\/installation\/.<\/p>\n<p>\u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646\u060c \u0628\u0627 \u062f\u0631 \u0646\u0638\u0631 \u06af\u0631\u0641\u062a\u0646 \u0645\u0632\u0627\u06cc\u0627 \u0648 \u0632\u06cc\u0631\u0633\u0627\u062e\u062a \u0647\u0627\u06cc \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632\u060c \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0646\u062d\u0648\u0647 \u0627\u0646\u062c\u0627\u0645 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0622\u0645\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D9%BE%DB%8C%D8%B4_%D9%86%DB%8C%D8%A7%D8%B2%D9%87%D8%A7\"><\/span>\n<p>  \u067e\u06cc\u0634 \u0646\u06cc\u0627\u0632\u0647\u0627<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0642\u0628\u0644 \u0627\u0632 \u0634\u0631\u0648\u0639\u060c \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0642\u0628\u0644\u0627\u064b \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0631\u0627 \u062f\u0627\u0631\u06cc\u062f:<\/p>\n<ul>\n<li>\u06cc\u06a9 \u0633\u0631\u0648\u0631 \u0628\u0627 Dokku \u0646\u0635\u0628 \u0634\u062f\u0647 \u0627\u0633\u062a<\/li>\n<li>\u06cc\u06a9 \u0646\u0627\u0645 \u062f\u0627\u0645\u0646\u0647 (letsencrypt \u0622\u0646 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc \u06a9\u0646\u062f)<\/li>\n<li>\u0645\u0627\u0634\u06cc\u0646 \u0645\u062d\u0644\u06cc \u0628\u0627 Docker\u060c Git \u0648 \u0647\u0631 \u0645\u0634\u062a\u0631\u06cc SSH<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"%DA%AF%D8%A7%D9%85_%D8%A8%D9%87_%DA%AF%D8%A7%D9%85\"><\/span>\n<p>  \u06af\u0627\u0645 \u0628\u0647 \u06af\u0627\u0645<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><strong>1. \u06af\u0648\u0627\u0647\u06cc\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc TLS \u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f<\/strong><\/p>\n<p>\u0627\u0632 \u0637\u0631\u06cc\u0642 SSH \u0648\u0627\u0631\u062f \u0633\u0631\u0648\u0631 \u062e\u0648\u062f \u0634\u0648\u06cc\u062f \u0648 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<br \/>(\u0628\u0627 \u062a\u0634\u06a9\u0631 \u0627\u0632 \u0627\u06a9\u0648\u0633\u06cc\u0633\u062a\u0645 \u067e\u0644\u0627\u06af\u06cc\u0646 Dokku\u060c \u0641\u0642\u0637 \u06cc\u06a9 \u062e\u0637 \u0627\u0633\u062a)<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code><span class=\"c\"># plugin installation requires root, hence the user change<\/span>\n<span class=\"nb\">sudo <\/span>dokku plugin:install https:\/\/github.com\/dokku\/dokku-letsencrypt.git\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><strong>2. \u0628\u0631\u0646\u0627\u0645\u0647 Dokku \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<\/strong><\/p>\n<p>\u0627\u0641\u0632\u0648\u0646\u0647 Dokku Proxy \u0627\u0632 \u0646\u0633\u062e\u0647 0.5.0 \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>dokku apps:create bitwarden\n\n<span class=\"c\"># example: dokku domains:set bitwarden mypasswords.sjdonado.de<\/span>\ndokku domains:set bitwarden yourdomain.com\n\ndokku letsencrypt:enable bitwarden\n<span class=\"c\"># enable the automatic renewal of certificates <\/span>\ndokku letsencrypt:cron-job <span class=\"nt\">--add<\/span>\n\n<span class=\"c\"># replace default proxy port<\/span>\ndokku config:set bitwarden <span class=\"nv\">DOKKU_PROXY_PORT_MAP<\/span><span class=\"o\">=<\/span><span class=\"s2\">\"http:80:80 https:443:80\"<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><strong>3. \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0631\u0627 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f<\/strong><\/p>\n<p>\u0645\u0627 \u0627\u0632 \u0627\u0641\u0632\u0648\u0646\u0647 PostgreSQL \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code><span class=\"c\"># setup plugin<\/span>\n<span class=\"nb\">sudo <\/span>dokku plugin:install https:\/\/github.com\/dokku\/dokku-postgres.git\n\n<span class=\"c\"># create a new database for our app<\/span>\ndokku postgres:create bitwarden\n\n<span class=\"c\"># link the postgres service to the app, DATABASE_URL will be attached to the ENV variables automatically. <\/span>\ndokku postgres:link bitwarden bitwarden\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><strong>4. \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u062f\u0627\u0626\u0645\u06cc \u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f<\/strong><\/p>\n<p>\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0627\u0632 \u0627\u0641\u0632\u0648\u0646\u0647 \u062f\u0627\u062e\u0644\u06cc Dokku Storage \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>dokku storage:ensure-directory bitwarden\n\ndokku storage:mount bitwarden \/var\/lib\/dokku\/data\/storage\/bitwarden:\/data\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><strong>5. \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc ENV \u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f<\/strong><\/p>\n<p>\u0628\u0647\u200c\u0637\u0648\u0631 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636\u060c Bitwarden \u0628\u0631\u0627\u06cc \u062b\u0628\u062a\u200c\u0646\u0627\u0645\u200c\u0647\u0627\u06cc \u0639\u0645\u0648\u0645\u06cc \u0628\u0627\u0632 \u0627\u0633\u062a\u060c \u0627\u06af\u0631\u0686\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0627 \u062a\u0646\u0638\u06cc\u0645 \u0622\u0646 \u0631\u0627 \u0628\u0647 \u0641\u0642\u0637 \u062f\u0639\u0648\u062a \u0645\u062d\u062f\u0648\u062f \u06a9\u0646\u06cc\u0645. <code>SIGNUPS_ALLOWED<\/code> \u0628\u0647 \u0646\u0627\u062f\u0631\u0633\u062a \u0648 \u0627\u0631\u0627\u0626\u0647 \u0645\u0639\u062a\u0628\u0631 <code>ADMIN_TOKEN<\/code>.<\/p>\n<p>\u0645\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>argon2<\/code> \u0628\u0631\u0627\u06cc \u062a\u0648\u0644\u06cc\u062f \u06cc\u06a9 \u0631\u0634\u062a\u0647 PHC \u0628\u0631\u0627\u06cc <code>ADMIN_TOKEN<\/code> \u0645\u062a\u063a\u06cc\u0631 ENV<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code><span class=\"c\"># skip this line if you are a linux user<\/span>\ndocker run <span class=\"nt\">--rm<\/span> <span class=\"nt\">-it<\/span> ubuntu\n\n<span class=\"nv\">$ <\/span>apt update <span class=\"o\">&amp;&amp;<\/span> apt <span class=\"nb\">install <\/span>openssl argon2\n<span class=\"nv\">$ <\/span><span class=\"nb\">echo<\/span> <span class=\"nt\">-n<\/span> <span class=\"s2\">\"MySecretPassword\"<\/span> | argon2 <span class=\"s2\">\"<\/span><span class=\"si\">$(<\/span>openssl rand <span class=\"nt\">-base64<\/span> 32<span class=\"si\">)<\/span><span class=\"s2\">\"<\/span> <span class=\"nt\">-e<\/span> <span class=\"nt\">-id<\/span> <span class=\"nt\">-k<\/span> 65540 <span class=\"nt\">-t<\/span> 3 <span class=\"nt\">-p<\/span> 4\n<span class=\"c\"># output: $argon2id$v=19$m=65540,t=3,p=4$bXBGMENBZUVzT3VUSFErTzQzK25Jck1BN2Z0amFuWjdSdVlIQVZqYzAzYz0$T9m73OdD2mz9+aJKLuOAdbvoARdaKxtOZ+jZcSL9\/N0<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u0631\u0627\u06cc <code>SMTP_<\/code> \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u060c \u0628\u0627 \u062e\u06cc\u0627\u0644 \u0631\u0627\u062d\u062a \u0627\u0632 \u0633\u0631\u0648\u0631 SMTP \u062e\u0648\u062f \u06cc\u0627 \u0631\u0627\u0647 \u062d\u0644 \u0647\u0627\u06cc \u062a\u062c\u0627\u0631\u06cc \u0628\u0627 \u0644\u0627\u06cc\u0647 \u0622\u0632\u0627\u062f \u0645\u0627\u0646\u0646\u062f sendgrid \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>dokku config:set bitwarden <span class=\"se\">\\<\/span>\n  <span class=\"nv\">DOMAIN<\/span><span class=\"o\">=<\/span>https:\/\/mypasswords.sjdonado.de <span class=\"se\">\\<\/span>\n  <span class=\"nv\">SIGNUPS_ALLOWED<\/span><span class=\"o\">=<\/span><span class=\"nb\">false<\/span> <span class=\"se\">\\<\/span>\n  <span class=\"nv\">ADMIN_TOKEN<\/span><span class=\"o\">=<\/span><span class=\"s1\">'$argon2id...'<\/span> <span class=\"se\">\\<\/span>\n  <span class=\"nv\">SMTP_HOST<\/span><span class=\"o\">=<\/span>smtp.sjdonado.de <span class=\"se\">\\<\/span>\n  <span class=\"nv\">SMTP_FROM<\/span><span class=\"o\">=<\/span>vaultwarden@sjdonado.de <span class=\"se\">\\<\/span>\n  <span class=\"nv\">SMTP_PORT<\/span><span class=\"o\">=<\/span>587 <span class=\"se\">\\<\/span>\n  <span class=\"nv\">SMTP_SECURITY<\/span><span class=\"o\">=<\/span>starttls <span class=\"se\">\\<\/span>\n  <span class=\"nv\">SMTP_USERNAME<\/span><span class=\"o\">=<\/span> <span class=\"se\">\\<\/span>\n  <span class=\"nv\">SMTP_PASSWORD<\/span><span class=\"o\">=<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><strong>6. Dockerfile \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<\/strong><\/p>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u06cc\u06a9 \u067e\u0648\u0634\u0647 \u0628\u0631\u0627\u06cc \u067e\u0631\u0648\u0698\u0647 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645\u060c Dockerfile \u0648 git \u0645\u0642\u062f\u0627\u0631\u062f\u0647\u06cc \u0627\u0648\u0644\u06cc\u0647<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code><span class=\"nb\">mkdir <\/span>yourfolder <span class=\"o\">&amp;&amp;<\/span> <span class=\"nb\">cd <\/span>yourfolder\ngit init\n<span class=\"nb\">touch <\/span>Dockerfile\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><code>yourfolder\/Dockerfile<\/code><\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight docker\"><code><span class=\"k\">FROM<\/span><span class=\"s\"> vaultwarden\/server:latest<\/span>\n\n<span class=\"k\">EXPOSE<\/span><span class=\"s\"> 80<\/span>\n\n<span class=\"k\">ENV<\/span><span class=\"s\"> DB=postgresql<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><strong>7. \u0645\u0633\u062a\u0642\u0631 \u06a9\u0646\u06cc\u062f<\/strong><\/p>\n<p>\u0645\u0627 \u062a\u0642\u0631\u06cc\u0628\u0627\u064b \u0622\u0646\u062c\u0627 \u0647\u0633\u062a\u06cc\u0645!  \u0642\u0628\u0644 \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u0631\u0627 \u0627\u0639\u0645\u0627\u0644 \u06a9\u0646\u06cc\u0645\u060c \u0628\u0627\u06cc\u062f URL \u0631\u0627\u0647 \u062f\u0648\u0631 dokku \u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u0645<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>git remote add dokku-bitwarden dokku@yourdomain.com:bitwarden\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0648 \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>git add -A &amp;&amp; git commit -m \"My bitwarden Dockerfile\"\ngit push dokku master\n\n# output:\ngit push using:  dokku master\nEnumerating objects: 6, done.\nCounting objects: 100% (6\/6), done.\nDelta compression using up to 8 threads\nCompressing objects: 100% (3\/3), done.\nWriting objects: 100% (6\/6), 551 bytes | 551.00 KiB\/s, done.\nTotal 6 (delta 0), reused 0 (delta 0), pack-reused 0\n-----&gt; Cleaning up...\n-----&gt; Building bitwarden from Dockerfile\nremote: #1 [internal] load build definition from Dockerfile\nremote: #1 transferring dockerfile: 65B done\nremote: #1 DONE 0.0s\nremote: \nremote: #2 [internal] load .dockerignore\nremote: #2 transferring context: 2B done\nremote: #2 DONE 0.1s\n...\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><strong>8. \u0647\u0645\u06cc\u0646<\/strong><\/p>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0637\u0631\u06cc\u0642 https:\/\/yourdomain.com\/admin \u0628\u0647 \u067e\u0646\u0644 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f <code>MySecretPassword<\/code> (\u0627\u0632 \u0645\u0631\u062d\u0644\u0647 5) \u0648 \u062f\u0639\u0648\u062a \u0646\u0627\u0645\u0647 \u0647\u0627 \u0631\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0627\u06cc\u0645\u06cc\u0644 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u062f.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/04\/1681900380_580_\u0645\u062f\u06cc\u0631\u06cc\u062a-\u0631\u0645\u0632-\u0639\u0628\u0648\u0631-\u062e\u0648\u062f-\u0645\u06cc\u0632\u0628\u0627\u0646\u06cc-\u0634\u062f\u0647-\u0628\u0627-Dokku.png\" alt=\"\u067e\u0648\u0631\u062a\u0627\u0644 \u0645\u062f\u06cc\u0631\u06cc\u062a\" loading=\"lazy\" width=\"800\" height=\"324\" title=\"\"><\/p>\n<p><strong>\u062a\u0648\u062c\u0647 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f:<\/strong> \u0647\u0646\u06af\u0627\u0645 \u0646\u0635\u0628 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\/\u0627\u0641\u0632\u0648\u0646\u0647\u200c\u0647\u0627\u06cc \u0631\u0633\u0645\u06cc Bitwarden \u062d\u062a\u0645\u0627 \u062f\u0627\u0645\u0646\u0647 \u062e\u0648\u062f \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<p><em>\u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0641\u0632\u0648\u062f\u0646\u06cc \u06a9\u0631\u0648\u0645<\/em><br \/><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/04\/1681900381_934_\u0645\u062f\u06cc\u0631\u06cc\u062a-\u0631\u0645\u0632-\u0639\u0628\u0648\u0631-\u062e\u0648\u062f-\u0645\u06cc\u0632\u0628\u0627\u0646\u06cc-\u0634\u062f\u0647-\u0628\u0627-Dokku.png\" alt=\"\u0646\u0645\u0648\u0646\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0641\u0632\u0648\u062f\u0646\u06cc \u06a9\u0631\u0648\u0645\" loading=\"lazy\" width=\"800\" height=\"1294\" title=\"\"><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A8%D8%B3%D8%AA%D9%87_%D8%B4%D8%AF%D9%86\"><\/span>\n<p>  \u0628\u0633\u062a\u0647 \u0634\u062f\u0646<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0645\u0627 \u0631\u0648\u0646\u062f \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06cc\u06a9 \u0645\u062f\u06cc\u0631 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u062e\u0648\u062f \u0645\u06cc\u0632\u0628\u0627\u0646 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Dokku \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0631\u062f\u0647 \u0627\u06cc\u0645.  \u0627\u06cc\u0646 \u0631\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646 \u0628\u0647 \u0631\u0627\u062d\u062a\u06cc \u062f\u0631 \u0647\u0631 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f\u0647 IaaS \u062a\u06a9\u0631\u0627\u0631 \u06a9\u0631\u062f.<\/p>\n<p>\u0627\u06a9\u0646\u0648\u0646\u060c \u0628\u0627 \u062f\u0627\u0646\u0633\u062a\u0646 \u0627\u06cc\u0646\u06a9\u0647 \u0631\u0645\u0632\u0647\u0627\u06cc \u0639\u0628\u0648\u0631 \u0634\u0645\u0627 \u0628\u0647 \u0637\u0648\u0631 \u0627\u06cc\u0645\u0646 \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc \u0634\u0648\u0646\u062f \u0648 \u062f\u0631 \u0647\u0631 \u0632\u0645\u0627\u0646 \u0648 \u0647\u0631 \u06a9\u062c\u0627 \u06a9\u0647 \u0628\u0647 \u0622\u0646\u0647\u0627 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f\u060c \u0628\u0647 \u0631\u0627\u062d\u062a\u06cc \u0642\u0627\u0628\u0644 \u062f\u0633\u062a\u0631\u0633\u06cc \u0647\u0633\u062a\u0646\u062f\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u062e\u06cc\u0627\u0644\u062a\u0627\u0646 \u0631\u0627\u062d\u062a \u0628\u0627\u0634\u062f.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/i.giphy.com\/media\/EJMyMO22UxP68\/giphy.gif\" alt=\"gif\" loading=\"lazy\" width=\"250\" height=\"250\" data-animated=\"true\" title=\"\"><\/p>\n<p>\u06a9\u062f \u0645\u0646\u0628\u0639 \u0645\u0648\u062c\u0648\u062f \u062f\u0631 Github.<\/p>\n<hr\/>\n<p>\u0628\u0631\u0648 \u0648\u0628 \u0633\u0627\u06cc\u062a \u0645\u0646 https:\/\/sjdonado.de \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u060c \u06cc\u06a9 \u062e\u0637 \u0628\u0647 \u0645\u0646 \u0628\u0632\u0646.  \u0627\u06af\u0631 \u0646\u0638\u0631 \u06cc\u0627 \u067e\u06cc\u0634\u0646\u0647\u0627\u062f\u06cc \u062f\u0627\u0631\u06cc\u062f \u062f\u0631 \u0646\u0638\u0631\u0627\u062a \u0628\u0627 \u0645\u0627 \u062f\u0631 \u0645\u06cc\u0627\u0646 \u0628\u06af\u0630\u0627\u0631\u06cc\u062f \ud83d\ude42<\/p>\n<p>\u0647\u06a9 \u0645\u0628\u0627\u0631\u06a9!<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u0686\u0631\u0627\u061f \u0645\u0646 \u062f\u0631 \u0686\u0646\u062f \u0633\u0627\u0644 \u06af\u0630\u0634\u062a\u0647 \u0628\u0647 1Password \u0627\u0639\u062a\u0645\u0627\u062f \u06a9\u0631\u062f\u0645\u060c \u0642\u0648\u06cc \u0627\u0633\u062a \u0648 \u0628\u0633\u06cc\u0627\u0631 \u06a9\u0627\u0631\u0628\u0631 \u067e\u0633\u0646\u062f \u0627\u0633\u062a. \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u0627\u06cc\u0646 \u0646\u0648\u0639 \u0627\u0632 \u0633\u0631\u0648\u06cc\u0633 \u0647\u0627 \u0627\u0647\u062f\u0627\u0641 \u0627\u0635\u0644\u06cc \u0628\u0631\u0627\u06cc \u062d\u0645\u0644\u0627\u062a \u0647\u0633\u062a\u0646\u062f\u060c \u06cc\u06a9\u06cc \u0627\u0632 \u0646\u0645\u0648\u0646\u0647 \u0647\u0627\u06cc \u0645\u062d\u0628\u0648\u0628 \u0645\u0648\u0631\u062f Lastpass \u0627\u0633\u062a. \u0645\u0637\u0645\u0626\u0646\u0627\u064b \u06a9\u0627\u0631 \u062c\u0627\u0644\u0628\u06cc \u0646\u06cc\u0633\u062a \u06a9\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062d\u0633\u0627\u0633 \u0634\u0645\u0627 \u062f\u0631 \u06cc\u06a9 \u0646\u0642\u0636 \u062f\u0627\u062f\u0647 \u062f\u06cc\u06af\u0631 \u0645\u0646\u062a\u0634\u0631 \u0634\u0648\u062f. \u0647\u0645\u0686\u0646\u06cc\u0646\u060c \u0627\u0645\u0631\u0648\u0632\u0647 &hellip;<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-18378","post","type-post","status-publish","format-standard","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/18378","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=18378"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/18378\/revisions"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=18378"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=18378"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=18378"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}