{"id":6475,"date":"2023-06-23T22:18:40","date_gmt":"2023-06-23T14:18:40","guid":{"rendered":"https:\/\/i007.vip:15443\/wordpress\/?p=6475"},"modified":"2023-06-23T22:18:40","modified_gmt":"2023-06-23T14:18:40","slug":"%e6%8a%80%e6%9c%af%e5%90%91-%e7%94%a8docker%e8%87%aa%e5%bb%ba-vaultwarden-bitwarden_rs","status":"publish","type":"post","link":"https:\/\/i007.cc\/wordpress\/archives\/6475","title":{"rendered":"[\u6280\u672f\u5411] \u7528Docker\u81ea\u5efa Vaultwarden (Bitwarden_rs)"},"content":{"rendered":"<div class=\"mod-header\">\n<div class=\"mod-header__top\">\n<div class=\"mod-header__title\">\n<p class=\"title-text\"><a href=\"https:\/\/cloud.tencent.com\/developer\/article\/1918208\">original content<\/a><\/p>\n<\/div>\n<\/div>\n<div class=\"mod-header__bottom\">\n<div class=\"mod-header__operates\">\n<div class=\"mod-header__operate\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"mod-content\">\n<div class=\"cdc-expand-area mod-content__markdown\">\n<div class=\"cdc-expand-area__main\">\n<div>\n<div>\n<div class=\"rno-markdown undefined rno-\">\n<p>Bitwarden\u662f\u4e00\u4e2a\u514d\u8d39\u3001\u81ea\u7531\u4e14\u5f00\u6e90\u7684\u7684\u5bc6\u7801\u7ba1\u7406\u5668\uff0c\u670d\u52a1\u7aef\u4e5f\u5b8c\u5168\u5f00\u6e90\uff0c\u53ef\u4ee5\u81ea\u5df1\u642d\u5efa\u3002 \u672c\u6587\u5c06\u54b1\u81ea\u5efabitwarden\u7684\u8fc7\u7a0b\u8bb0\u5f55\u4e0b\u6765\u3002<\/p>\n<h2 id=\"%E6%9B%B4%E6%96%B0-Updates\">\u66f4\u65b0 Updates<\/h2>\n<p>2021-09-30 \uff1a\u4e86\u89e3\u66f4\u591anginx\u4e4b\u540e\u91cd\u65b0\u5199\u4e86\u4e00\u904dconfig\uff0c\u800c Bitwarden_RS \u5df2\u7ecf\u6539\u540d\u6210 Vaultwarden \u4e86<\/p>\n<p>2021-11-03 \uff1a\u589e\u52a0\u4e86\u4f7f\u7528<a href=\"https:\/\/cloud.tencent.com\/product\/cdn?from=20065&#038;from_column=20065\" target=\"_blank\" rel=\"noopener\" data-text-link=\"14_1918208\" data-from=\"20065\">CDN<\/a>\u8bbf\u95ee\u65f6\u83b7\u53d6\u8bbf\u5ba2\u771f\u5b9eip\u7684\u65b9\u6cd5<\/p>\n<h2 id=\"%E5%89%8D%E8%A8%80\">\u524d\u8a00<\/h2>\n<p><del>\u90a3\u4e2a\u7537\u5b69\u4e0d\u60f3\u62e5\u6709\u81ea\u5df1\u7684\u5bc6\u7801\u7ba1\u7406\u5668\u5462<\/del>\uff0c\u4e4b\u524d\u6b27\u5f0f\u90fd\u662f Google \u5bc6\u7801\u548c iCloud keychain \u4e00\u8d77\u7528\u7684\uff0c\u6df7\u5408\u4f7f\u7528\u4e0d\u4ec5\u96be\u4e8e\u8de8\u5e73\u53f0\u540c\u6b65\uff08\u975echrome\/apple\u8bbe\u5907\u7684\u5bc6\u7801\u66f4\u662f\u65e0\u6cd5\u586b\u5145\uff09\uff0c\u800c\u4e14\u6570\u636e\u4e5f\u65e0\u6cd5\u81ea\u5df1\u638c\u63a7\u3002\u4e0a\u4e86\u5927\u5b66\u4e4b\u540e\uff0c\u6211\u4e86\u89e3\u5230\u4e86\u5168\u5e73\u53f0\u5f00\u6e90\u5bc6\u7801\u7ba1\u7406\u5668bitwarden\u3002\u7ecf\u8fc7\u4e86\u5c06\u8fd1\u534a\u5e74\u7684\u6298\u817e\uff0c\u7ec8\u4e8e\u505a\u5f97\u597d\u7528\u70b9\u4e86\uff0c\u73b0\u5728\u8bb0\u5f55\u4e00\u4e0b\u3002<\/p>\n<h2 id=\"%E5%87%86%E5%A4%87%E7%9A%84%E4%B8%9C%E8%A5%BF\">\u51c6\u5907\u7684\u4e1c\u897f<\/h2>\n<p>\u4e00\u4e2a<a href=\"https:\/\/cloud.tencent.com\/product\/cvm?from=20065&#038;from_column=20065\" target=\"_blank\" rel=\"noopener\" data-text-link=\"375_1918208\" data-from=\"20065\">\u670d\u52a1\u5668<\/a>\uff0c\u81f3\u5c11200MB RAM<\/p>\n<p>\u4e00\u4e2a\u57df\u540d\uff0c\u8fd9\u91cc\u5c31\u7528\u4e86\u81ea\u5df1\u5728\u4f7f\u7528\u7684<strong><em>(\u4ee5 bitwarden.example.com \u4e3a\u4f8b)<\/em><\/strong><\/p>\n<p><del>\u8fd8\u6709\u4ebf\u70b9\u70b9\u8010\u5fc3\u548c\u5b66\u4e60\u642d\u5efa\u5bc6\u7801\u7ba1\u7406\u5668\u7684\u5174\u8da3<\/del><\/p>\n<h2 id=\"%E4%B8%8B%E8%BD%BDdocker%E9%95%9C%E5%83%8F\">\u4e0b\u8f7ddocker\u955c\u50cf<\/h2>\n<p>\u8fd9\u91cc\u6211\u4f7f\u7528\u7684\u662fvaultwarden\uff08\u524d\u79f0Bitwarden_RS\uff09\uff0c\u867d\u7136\u5b83\u662f\u7b2c\u4e09\u65b9\u7528Rust\u91cd\u5199\u7684\uff0c\u4f46\u662f\u9700\u8981\u7684\u8d44\u6e90\u66f4\u5c11\uff0c\u800c\u4e14\u9ed8\u8ba4\u5f00\u542f\u9ad8\u7ea7\u4f1a\u5458\u7684\u529f\u80fd <del>\u8c01\u4e0d\u60f3\u767d\u5ad6\u5462<\/del>\u3002<\/p>\n<div class=\"developer-code-block\">\n<pre class=\"prism-token token line-numbers language-javascript\" tabindex=\"0\"><code class=\"language-javascript\">docker pull vaultwarden<span class=\"token operator\">\/<\/span>server<\/code><\/pre>\n<p><button class=\"copy\">\u590d\u5236<\/button><\/div>\n<p>\u6253\u5f00\u4f60\u7684\u57df\u540ddns\u7ba1\u7406\u754c\u9762\uff0c\u6dfb\u52a0bitwarden\u7684dns\u8bb0\u5f55\u3002<\/p>\n<h2 id=\"%E9%85%8D%E7%BD%AE%E5%8F%8D%E4%BB%A3\">\u914d\u7f6e\u53cd\u4ee3<\/h2>\n<h3 id=\"%E6%83%85%E5%86%B51:bitwarden%E5%8D%95%E7%8B%AC%E6%94%BE%E5%9C%A8%E4%B8%80%E4%B8%AA%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A\">\u60c5\u51b51:bitwarden\u5355\u72ec\u653e\u5728\u4e00\u4e2a\u670d\u52a1\u5668\u4e0a<\/h3>\n<p>\u76f4\u63a5\u8df3\u5230<a href=\"https:\/\/www.idc.moe\/go\/I-WIneWni-WMlui_kOihjA\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\u521d\u59cb\u5316\u914d\u7f6e<\/a>,\u7136\u540e<strong>\u5c06\u8bbe\u7f6e\u6539\u4e3a -p 80:80 -p 3012:3012<\/strong><\/p>\n<h3 id=\"%E6%83%85%E5%86%B52:bitwarden%E4%B8%8E%E5%A4%9A%E4%B8%AA%E5%AF%B9%E5%A4%96%E6%9C%8D%E5%8A%A1%E5%85%B1%E5%AD%98\">\u60c5\u51b52:bitwarden\u4e0e\u591a\u4e2a\u5bf9\u5916\u670d\u52a1\u5171\u5b58<\/h3>\n<p>\u914d\u7f6eNginx\u53cd\u4ee3,\u6839\u636e\u5177\u4f53\u60c5\u51b5\u4fee\u6539 \u4fee\u6539\/etc\/nginx\/nginx.conf\uff0c\u6dfb\u52a0\u5982\u4e0b\uff1a<\/p>\n<div class=\"developer-code-block\">\n<pre class=\"prism-token token line-numbers language-javascript\" tabindex=\"0\"><code class=\"language-javascript\"># http\r\n    server <span class=\"token punctuation\">{<\/span>\r\n        listen       <span class=\"token number\">80<\/span><span class=\"token punctuation\">;<\/span>\r\n        listen  <span class=\"token punctuation\">[<\/span><span class=\"token operator\">:<\/span><span class=\"token operator\">:<\/span><span class=\"token punctuation\">]<\/span><span class=\"token operator\">:<\/span><span class=\"token number\">80<\/span><span class=\"token punctuation\">;<\/span>\r\n        server_name  bitwarden<span class=\"token punctuation\">.<\/span>example<span class=\"token punctuation\">.<\/span>com<span class=\"token punctuation\">;<\/span>\r\n       ##\u9632\u6b62\u641c\u7d22\u5f15\u64ce\u6536\u5f55\r\n       <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>$http_user_agent <span class=\"token operator\">~<\/span><span class=\"token operator\">*<\/span> <span class=\"token string\">\"qihoobot|Baiduspider|Googlebot|Googlebot-Mobile|Googlebot-Image|Mediapartners-Google|Adsbot-Google|Feedfetcher-Google|Yahoo! Slurp|Yahoo! Slurp China|YoudaoBot|Sosospider|Sogou spider|Sogou web spider|MSNBot|ia_archiver|Tomato Bot|^$\"<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>  \r\n        <span class=\"token keyword\">return<\/span> <span class=\"token number\">404<\/span><span class=\"token punctuation\">;<\/span>\r\n            <span class=\"token punctuation\">}<\/span>\r\n        location <span class=\"token operator\">\/<\/span> <span class=\"token punctuation\">{<\/span> # \u8bbf\u95ee<span class=\"token number\">80<\/span>\u7aef\u53e3\u540e\u7684\u6240\u6709\u8def\u5f84\u90fd\u8f6c\u53d1\u5230 proxy_pass \u914d\u7f6e\u7684ip\u4e2d\r\n            root   <span class=\"token operator\">\/<\/span>usr<span class=\"token operator\">\/<\/span>share<span class=\"token operator\">\/<\/span>nginx<span class=\"token operator\">\/<\/span>html<span class=\"token punctuation\">;<\/span>\r\n            index  index<span class=\"token punctuation\">.<\/span>html index<span class=\"token punctuation\">.<\/span>htm<span class=\"token punctuation\">;<\/span>\r\n\r\n##\u5982\u679c\u4f7f\u7528cf\u52a0\u901f\u5c31\u6362\u6210<span class=\"token number\">302<\/span>\r\n         <span class=\"token keyword\">return<\/span> <span class=\"token number\">301<\/span> <span class=\"token literal-property property\">https<\/span><span class=\"token operator\">:<\/span><span class=\"token operator\">\/<\/span><span class=\"token operator\">\/<\/span>bitwarden<span class=\"token punctuation\">.<\/span>example<span class=\"token punctuation\">.<\/span>com<span class=\"token punctuation\">;<\/span>\r\n            \r\n        <span class=\"token punctuation\">}<\/span>\r\n    <span class=\"token punctuation\">}<\/span>\r\n\r\n\r\n# https\r\n server <span class=\"token punctuation\">{<\/span>\r\n        listen       <span class=\"token number\">443<\/span> ssl http2<span class=\"token punctuation\">;<\/span>\r\n        listen  <span class=\"token punctuation\">[<\/span><span class=\"token operator\">:<\/span><span class=\"token operator\">:<\/span><span class=\"token punctuation\">]<\/span><span class=\"token operator\">:<\/span><span class=\"token number\">443<\/span> ssl http2<span class=\"token punctuation\">;<\/span>\r\n        server_name  bitwarden<span class=\"token punctuation\">.<\/span>example<span class=\"token punctuation\">.<\/span>com<span class=\"token punctuation\">;<\/span>\r\n           <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>$http_user_agent <span class=\"token operator\">~<\/span><span class=\"token operator\">*<\/span> <span class=\"token string\">\"qihoobot|Baiduspider|Googlebot|Googlebot-Mobile|Googlebot-Image|Mediapartners-Google|Adsbot-Google|Feedfetcher-Google|Yahoo! Slurp|Yahoo! Slurp China|YoudaoBot|Sosospider|Sogou spider|Sogou web spider|MSNBot|ia_archiver|Tomato Bot|^$\"<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>  \r\n        <span class=\"token keyword\">return<\/span> <span class=\"token number\">404<\/span><span class=\"token punctuation\">;<\/span>\r\n        <span class=\"token punctuation\">}<\/span>\r\n        #\u542f\u7528<span class=\"token constant\">HSTS<\/span>    \r\n    add_header Strict<span class=\"token operator\">-<\/span>Transport<span class=\"token operator\">-<\/span>Security <span class=\"token string\">\"max-age=31536000; includeSubDomains\"<\/span> always<span class=\"token punctuation\">;<\/span> \r\n\r\n        ssl_certificate <span class=\"token operator\">\/<\/span>path<span class=\"token operator\">\/<\/span>to<span class=\"token operator\">\/<\/span>ssl<span class=\"token operator\">\/<\/span>cert<span class=\"token punctuation\">;<\/span>\r\n\r\n        ssl_certificate_key <span class=\"token operator\">\/<\/span>path<span class=\"token operator\">\/<\/span>to<span class=\"token operator\">\/<\/span>cert<span class=\"token operator\">\/<\/span>key<span class=\"token punctuation\">;<\/span>\r\n\r\n        keepalive_timeout   <span class=\"token number\">70<\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n        # <span class=\"token constant\">OCSP<\/span> stapling\r\n        ssl_stapling        on<span class=\"token punctuation\">;<\/span>\r\n\r\n        ssl_stapling_verify on<span class=\"token punctuation\">;<\/span>\r\n##\u586b\u5165\u4f60\u673a\u5668\u7684<span class=\"token constant\">DNS<\/span>\r\n        resolver <span class=\"token number\">8.8<\/span><span class=\"token number\">.8<\/span><span class=\"token number\">.8<\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n        ssl_protocols TLSv1 TLSv1<span class=\"token punctuation\">.<\/span><span class=\"token number\">1<\/span> TLSv1<span class=\"token punctuation\">.<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n             location <span class=\"token operator\">\/<\/span> <span class=\"token punctuation\">{<\/span>\r\n             root   <span class=\"token operator\">\/<\/span>usr<span class=\"token operator\">\/<\/span>share<span class=\"token operator\">\/<\/span>nginx<span class=\"token operator\">\/<\/span>html<span class=\"token punctuation\">;<\/span>\r\n#            index  index<span class=\"token punctuation\">.<\/span>html index<span class=\"token punctuation\">.<\/span>htm<span class=\"token punctuation\">;<\/span>\r\n\r\n\r\n\r\n               proxy_set_header Host $host<span class=\"token punctuation\">;<\/span>\r\n\r\n               proxy_set_header <span class=\"token constant\">X<\/span><span class=\"token operator\">-<\/span>Real<span class=\"token operator\">-<\/span><span class=\"token constant\">IP<\/span> $remote_addr<span class=\"token punctuation\">;<\/span>\r\n\r\n               proxy_set_header <span class=\"token constant\">X<\/span><span class=\"token operator\">-<\/span>Forwarded<span class=\"token operator\">-<\/span>For $proxy_add_x_forwarded_for<span class=\"token punctuation\">;<\/span>\r\n\r\n               proxy_set_header <span class=\"token constant\">X<\/span><span class=\"token operator\">-<\/span>Forwarded<span class=\"token operator\">-<\/span>Proto $scheme<span class=\"token punctuation\">;<\/span>\r\n\r\n               proxy_set_header <span class=\"token constant\">X<\/span><span class=\"token operator\">-<\/span>Forwarded<span class=\"token operator\">-<\/span>Port $server_port<span class=\"token punctuation\">;<\/span>\r\n\r\n               proxy_pass http<span class=\"token operator\">:<\/span><span class=\"token operator\">\/<\/span><span class=\"token operator\">\/<\/span>localhost<span class=\"token operator\">:<\/span>xxxx<span class=\"token punctuation\">;<\/span>\r\n              \r\n      <span class=\"token punctuation\">}<\/span>\r\n  <span class=\"token punctuation\">}<\/span><\/code><\/pre>\n<p><button class=\"copy\">\u590d\u5236<\/button><\/div>\n<p>\u4fdd\u5b58\u5e76\u9000\u51fa\uff0c\u91cd\u542fnginx\uff1a<\/p>\n<div class=\"developer-code-block\">\n<pre class=\"prism-token token line-numbers language-javascript\" tabindex=\"0\"><code class=\"language-javascript\">systemctl restart nginx<\/code><\/pre>\n<p><button class=\"copy\">\u590d\u5236<\/button><\/div>\n<h2 id=\"%E9%85%8D%E7%BD%AEvaultwarden\">\u914d\u7f6evaultwarden<\/h2>\n<h3 id=\"%E5%88%9D%E5%A7%8B%E5%8C%96%E8%BF%90%E8%A1%8C\">\u521d\u59cb\u5316\u8fd0\u884c<\/h3>\n<p>\u5728\u547d\u4ee4\u884c\u6839\u636e\u5b9e\u9645\u60c5\u51b5\uff08\u9700\u6c42\uff09\u6267\u884c<\/p>\n<div class=\"developer-code-block\">\n<pre class=\"prism-token token line-numbers language-javascript\" tabindex=\"0\"><code class=\"language-javascript\">docker run <span class=\"token operator\">-<\/span>d <span class=\"token operator\">--<\/span>name<span class=\"token operator\">=<\/span>bitwarden_rs <span class=\"token operator\">-<\/span>e <span class=\"token constant\">WEBSOCKET_ENABLED<\/span><span class=\"token operator\">=<\/span><span class=\"token boolean\">true<\/span> <span class=\"token operator\">-<\/span>e <span class=\"token constant\">LOG_FILE<\/span><span class=\"token operator\">=<\/span><span class=\"token operator\">\/<\/span>data<span class=\"token operator\">\/<\/span>bitwarden<span class=\"token punctuation\">.<\/span>log <span class=\"token operator\">-<\/span>p xxxx<span class=\"token operator\">:<\/span><span class=\"token number\">80<\/span> <span class=\"token operator\">-<\/span>p <span class=\"token constant\">XXXX<\/span><span class=\"token operator\">:<\/span><span class=\"token number\">3012<\/span> <span class=\"token operator\">-<\/span>v <span class=\"token operator\">\/<\/span>data<span class=\"token operator\">-<\/span>directory<span class=\"token operator\">-<\/span>you<span class=\"token operator\">-<\/span>want<span class=\"token operator\">\/<\/span><span class=\"token operator\">:<\/span><span class=\"token operator\">\/<\/span>data<span class=\"token operator\">\/<\/span> <span class=\"token operator\">--<\/span>restart<span class=\"token operator\">=<\/span>always  vaultwarden<span class=\"token operator\">\/<\/span>server<span class=\"token operator\">:<\/span>latest<\/code><\/pre>\n<p><button class=\"copy\">\u590d\u5236<\/button><\/div>\n<p>\u6ce8\uff1a<\/p>\n<ol class=\"ol-level-0\">\n<li>&#8211;name=\u4f60\u60f3\u8981\u5728<a href=\"https:\/\/cloud.tencent.com\/product\/tke?from=20065&#038;from_column=20065\" target=\"_blank\" rel=\"noopener\" data-text-link=\"445_1918208\" data-from=\"20065\">docker<\/a>\u91cc\u9762\u663e\u793a\u7684\u540d\u5b57 <strong><em>\uff08\u53ef\u9009\uff0c\u65b9\u4fbf\u540e\u7eed\u7ba1\u7406\uff09<\/em><\/strong><\/li>\n<li>80\u548c3012\u7684\u8bbe\u7f6e\u7aef\u53e3\u4e0d\u80fd\u51b2\u7a81<del>\u6b64\u4e43\u5e9f\u8bdd<\/del><\/li>\n<li>&#8211;restart=always \u81ea\u52a8\u91cd\u542f<\/li>\n<li>-v \/data-directory-you-want\/:\/data\/ \u6ce8\u610f\u8fd9\u662f\u4ece\u6839\u76ee\u5f55\u5f00\u59cb\u7684,<del>\u5e9f\u5e9f\u6b27\u5f0f\u5c31\u662f\u6ca1\u4e3b\u610f\u5230\u5bfc\u81f4\u73b0\u5728\u6574\u4e2a\u6587\u4ef6\u5939\u90fd\u5728\u6839\u76ee\u5f55\u8fd8\u627e\u4e861\u4e2a\u661f\u671f\u90fd\u6ca1\u6709\u627e\u5230<\/del> <strong>\u6ce8\u610f\u6743\u9650<\/strong><\/li>\n<\/ol>\n<h3 id=\"%E7%99%BB%E5%BD%95%E7%BD%91%E9%A1%B5%E5%B9%B6%E8%AE%BE%E7%BD%AE%E5%88%9D%E5%A7%8B%E8%B4%A6%E6%88%B7\">\u767b\u5f55\u7f51\u9875\u5e76\u8bbe\u7f6e\u521d\u59cb\u8d26\u6237<\/h3>\n<p>\u76f4\u63a5\u6253\u5f00 [bitwarden.example.com]() \uff0c\u5c31\u51fa\u73b0\u5982\u4e0b\u56fe\u6240\u793a\u754c\u9762\uff08\u5f53\u7136\u8fd9\u662f\u652f\u6301\u4e2d\u6587\u7684\uff09<\/p>\n<figure class=\"\">\n<div class=\"image-block\">\n<div><img decoding=\"async\" src=\"https:\/\/ask.qcloudimg.com\/http-save\/yehe-1201223\/6e1935a39a1e0413437b5c724bb2fc29.png?imageView2\/2\/w\/1200\" \/><\/div>\n<\/div>\n<\/figure>\n<p>\u76f4\u63a5\u6309\u7740\u5f15\u5bfc\u8d70\u5c31\u662f\u4e86\u3002<\/p>\n<h2 id=\"%E9%AB%98%E7%BA%A7%E8%AE%BE%E5%AE%9A\">\u9ad8\u7ea7\u8bbe\u5b9a<\/h2>\n<h3 id=\"%E5%BC%80%E5%90%AF%E7%AE%A1%E7%90%86%E7%95%8C%E9%9D%A2\">\u5f00\u542f\u7ba1\u7406\u754c\u9762<\/h3>\n<p>\u6dfb\u52a0\u73af\u5883\u53d8\u91cf-e ADMIN_TOKEN=XXXX\uff08XXXX\u4e3a\u7ba1\u7406\u754c\u9762\u5bc6\u7801\uff09<\/p>\n<p>\u6253\u5f00bitwarden.example.com\/admin\uff0c\u7528\u4f60\u8bbe\u7f6e\u597d\u7684token\u767b\u5165<\/p>\n<p>\u767b\u5165\u540e\u5728general settings\u90a3\u91cc\u628adomain url\u6539\u6210\u4f60\u7684\u57df\u540d<a href=\"https:\/\/www.idc.moe\/go\/aHR0cHM6Ly9iaXR3YXJkZW4uZXhhbXBsZS5jb20\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/bitwarden.example.com<\/a> (\u6ce8\u610f\u8981\u52a0<a href=\"https:\/\/www.idc.moe\/go\/aHR0cHM6Ly8p\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/)<\/a><\/p>\n<p>allow new signups\u5c31\u662f\u65b0\u7528\u6237\u6ce8\u518c\u8bb8\u53ef\u7684\u5f00\u5173\u5566\uff08<\/p>\n<figure class=\"\">\n<div class=\"image-block\">\n<div><img decoding=\"async\" src=\"https:\/\/ask.qcloudimg.com\/http-save\/yehe-1201223\/c32b8a34ca7351165eca956fc1b7ddaa.png?imageView2\/2\/w\/1200\" \/><\/div>\n<\/div>\n<\/figure>\n<h3 id=\"%E6%B7%BB%E5%8A%A0-SMTP-%E6%9C%8D%E5%8A%A1\">\u6dfb\u52a0 SMTP \u670d\u52a1<\/h3>\n<p>\u914d\u7f6e SMTP \u670d\u52a1\u53ef\u4ee5\u5f00\u542fbitwarden\u7684\u90ae\u4ef6\u4f20\u9001\u529f\u80fd\uff0c\u80fd\u5f00\u542f\u4e8c\u6b65\u9a8c\u8bc1(2FA)\uff0c\u80fd\u53d1\u9001\u9080\u8bf7\uff0c<del><strong>\u8fd8\u80fd\u7ed9\u81ea\u5df1\u90ae\u7bb1\u53d1\u9001password hint(\u7ba1\u7406\u5bc6\u7801\u63d0\u793a)\u9632\u6b62\u81ea\u5df1\u8111\u6b8b\u5fd8\u6389master password<\/strong><\/del><\/p>\n<p>\u8fd9\u91cc\u54b1\u7528\u7684\u662fyandex\u7684self-host email\uff0c\u914d\u7f6e\u6559\u7a0b\u53ef\u4ee5\u770b<a href=\"https:\/\/www.idc.moe\/go\/aHR0cHM6Ly93d3cubmV3bGVhcm5lci5zaXRlLzIwMTkvMDgvMDUveWFuZGV4LWRvbWFpbi1tYWlsLmh0bWw\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">newslearner\u7684\u6559\u7a0b\uff08\u6709\u4e9b\u5185\u5bb9\u6709\u53ef\u80fd\u8fc7\u65f6\uff09<\/a>\u6216\u8005<a href=\"https:\/\/www.idc.moe\/go\/aHR0cHM6Ly95YW5kZXguY29tL3N1cHBvcnQvY29ubmVjdC9hZGQtZG9tYWluLmh0bWw\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">yandex\u81ea\u5df1\u7684\u6559\u7a0b(EN)<\/a>\u3002<\/p>\n<ol class=\"ol-level-0\">\n<li>\u521b\u5efa\u65b0\u7684\u6210\u5458\u8d26\u6237\uff0c\u5373\u9700\u8981\u7528\u7684\u6536\u53d1\u4fe1\u8d26\u6237\u3002<\/li>\n<li>\u767b\u5165\u5e76\u5b8c\u6210\u6ce8\u518c\u3002<\/li>\n<li>\u6253\u5f00<a href=\"https:\/\/www.idc.moe\/go\/bWFpbC55YW5kZXguY29t\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">yandex mail<\/a>\u767b\u5165\uff0c\u6253\u5f00\u8bbe\u7f6e<\/li>\n<\/ol>\n<figure class=\"\">\n<div class=\"image-block\">\n<div><img decoding=\"async\" src=\"https:\/\/ask.qcloudimg.com\/http-save\/yehe-1201223\/87b8a4892e751412fcfee4454f2af9e1.png?imageView2\/2\/w\/1200\" \/><\/div>\n<\/div>\n<\/figure>\n<ol class=\"ol-level-0\">\n<li>\u9009other\uff0c\u7136\u540e\u5de6\u8fb9\u9009email client\uff0c\u5f00\u542f\u7b2c\u4e09\u65b9\u5ba2\u6237\u7aef\u8bbf\u95ee\u6743\u9650<\/li>\n<\/ol>\n<figure class=\"\">\n<div class=\"image-block\">\n<div><img decoding=\"async\" src=\"https:\/\/ask.qcloudimg.com\/http-save\/yehe-1201223\/eb1d0b3eb6b9f11353622dd91cd9e233.png?imageView2\/2\/w\/1200\" \/><\/div>\n<\/div>\n<\/figure>\n<ol class=\"ol-level-0\">\n<li>\u5230security\u90a3\u91cc\uff0c\u751f\u6210app password\u5e76\u590d\u5236\u3002<\/li>\n<li>\u56de\u5230\u7ba1\u7406\u754c\u9762\uff0c\u5728smtp Email settings\u90a3\u91cc\u5982\u56fe\u586b(\u6216\u8005\u53ebStarttls on\uff0c port 587)\uff0cpassword\u5c31\u586b\u5165\u521a\u624d\u751f\u6210\u7684app password\u3002<\/li>\n<\/ol>\n<figure class=\"\">\n<div class=\"image-block\">\n<div><img decoding=\"async\" src=\"https:\/\/ask.qcloudimg.com\/http-save\/yehe-1201223\/c315015046e44b6ad25a56c962d7a9bf.png?imageView2\/2\/w\/1200\" \/><\/div>\n<\/div>\n<\/figure>\n<ol class=\"ol-level-0\">\n<li>\u4fdd\u5b58\uff0c\u5e76\u5230\u4e0b\u65b9\u7684send test email\u6d4b\u8bd5<\/li>\n<li>\u5982\u679c\u770b\u5230\u8fd9\u4e2abanner\u51fa\u6765\u5e76\u6536\u5230\u5982\u4e0b\u6d4b\u8bd5\u90ae\u4ef6\u7684\u8bdd\uff0cYattase\uff01\u914d\u7f6e\u6210\u529f\u4e86w\uff01<\/li>\n<\/ol>\n<figure class=\"\">\n<div class=\"image-block\">\n<div><img decoding=\"async\" src=\"https:\/\/ask.qcloudimg.com\/http-save\/yehe-1201223\/7c6d0da12fb610070d282bbe0edda991.png?imageView2\/2\/w\/1200\" \/><\/div>\n<\/div>\n<\/figure>\n<ol class=\"ol-level-0\">\n<li>Enjoy~<\/li>\n<\/ol>\n<h3 id=\"%E4%BD%BF%E7%94%A8CDN%E6%97%B6%E8%AE%A9%E5%AE%9E%E4%BE%8B%E8%8E%B7%E5%8F%96%E8%AE%BF%E5%AE%A2%E7%9C%9F%E5%AE%9Eip\">\u4f7f\u7528CDN\u65f6\u8ba9\u5b9e\u4f8b\u83b7\u53d6\u8bbf\u5ba2\u771f\u5b9eip<\/h3>\n<p>\u4e00\u822c\u6765\u8bb2\u6211\u4eec\u90fd\u4f1a\u4f7f\u7528CDN\u6765\u63d0\u9ad8\u670d\u52a1\u53ef\u7528\u6027\u3002\u4f46\u662f\u9ed8\u8ba4\u8bbe\u7f6e\u4e2dVaultwarden\u8bfb\u53d6 X-Real-IP \u7684header\uff0c\u8fd9\u6837\u4f1a\u8bfb\u5230\u7684\u5168\u662fCDN\u7684\u8282\u70b9IP\u3002<\/p>\n<p>\u8981\u505a\u5230\u83b7\u53d6\u8bbf\u5ba2\u771f\u5b9eIP\uff0c\u53ef\u4ee5\u76f4\u63a5\u5728Admin Panel \u4e2d\u627e\u5230 Read Client Header\uff0c\u6539\u6210 X-Forwarded-For \u4fdd\u5b58\u5373\u53ef\u3002<\/p>\n<h2 id=\"Links:\">Links:<\/h2>\n<p>Bitwarden\u5b98\u7f51:<a href=\"https:\/\/www.idc.moe\/go\/aHR0cHM6Ly9iaXR3YXJkZW4uY29tLw\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/bitwarden.com\/<\/a> Vaultwarden Github\u9875\u9762\uff08\u6709\u4efb\u4f55\u95ee\u9898\u8bb0\u4f4f\u8981<strong>\u5f80\u8fd9\u8fb9\u53cd\u6620<\/strong>\uff09:<a href=\"https:\/\/www.idc.moe\/go\/aHR0cHM6Ly9naXRodWIuY29tL2RhbmktZ2FyY2lhL3ZhdWx0d2FyZGVu\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/github.com\/dani-garcia\/vaultwarden<\/a> Vaultwarden Docker\u9875\u9762: <a href=\"https:\/\/www.idc.moe\/go\/aHR0cHM6Ly9odWIuZG9ja2VyLmNvbS9yL3ZhdWx0d2FyZGVuL3NlcnZlcg\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/hub.docker.com\/r\/vaultwarden\/server<\/a><\/p>\n<h1 id=\"%E7%89%88%E6%9D%83%E5%A3%B0%E6%98%8E\">\u7248\u6743\u58f0\u660e<\/h1>\n<p>\u672c\u6587\u7531\u6b27\u5f0ffifty\uff08ous50\u539f\u521b\uff0c\u91c7\u7528<a href=\"https:\/\/www.idc.moe\/go\/aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnktbmMtc2EvNC4wLw\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Attribution-NonCommercial-ShareAlike 4.0 International<\/a>\u6388\u6743<\/p>\n<p>This work is licensed under a <a href=\"https:\/\/www.idc.moe\/go\/aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnktbmMtc2EvNC4wLw\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License<\/a>. \u8f6c\u8f7d\u8bf7\u9644\u4e0a\u539f\u6587\u5730\u5740 <a href=\"https:\/\/www.idc.moe\/go\/aHR0cHM6Ly9ibG9nLm91czUwLm1vZS8yMDIxLzAzLzEyL3ZhdWx0d2FyZGVuJUU2JTkwJUFEJUU1JUJCJUJBLw\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/blog.ous50.moe\/2021\/03\/12\/vaultwarden%E6%90%AD%E5%BB%BA\/<\/a><\/p>\n<p>\u672c\u6587\u6765\u81ea\u6295\u7a3f\uff0c\u4e0d\u4ee3\u8868\u672c\u7ad9\u7acb\u573a\uff0c\u5982\u82e5\u8f6c\u8f7d\uff0c\u8bf7\u6ce8\u660e\u51fa\u5904\uff1ahttps:\/\/www.idc.moe\/archives\/bitwarden-rs.html<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>original content Bit<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"colormag_page_container_layout":"default_layout","colormag_page_sidebar_layout":"default_layout","footnotes":""},"categories":[24],"tags":[121],"class_list":["post-6475","post","type-post","status-publish","format-standard","hentry","category-value_docs","tag-05-"],"_links":{"self":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/posts\/6475","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/comments?post=6475"}],"version-history":[{"count":0,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/posts\/6475\/revisions"}],"wp:attachment":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/media?parent=6475"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/categories?post=6475"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/tags?post=6475"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}