Docker建站(六)Vaultwarden:安全私密的个人密码管理器

1、介绍

Bitwarden

注意:本文所提到的Bitwarden皆为BitWarden_RS,现已更名为Vaultwarden,原因参考:https://github.com/dani-garcia/vaultwarden/discussions/1642

Bitwarden是一款自由且开源的密码管理服务,用户可在加密的保管库中存储敏感信息(例如网站登入凭据)。
Bitwarden平台提供有多种客户端应用程序,包括网页用户界面、桌面应用,浏览器扩展、移动应用以及命令行界面。
Bitwarden提供云端托管服务,并支持自行部署解决方案。
——维基百科

所有的安全科普、讲座都在告诉我们:

  1. 不要在所有网站上使用同样的密码
  2. 不要使用生日、姓名、电话等容易被猜出的要素作为密码

然而,我们生活中要使用的网站没有一百个,也有八十个,设置了不同的密码,都记住显然不太现实。因此,我们可以使用密码管理器软件。

Bitwarden工作原理

著名的密码管理器有:1Password,OneSafe,LastPass,大部分浏览器(Chrome,edge,FireFox)也自带了密码保存功能,但是这些工具部分需要收费,并且密码存储在其提供的服务器上。

引用网友的一句话:无论软件的安全性宣传得再好,把密码交给别人管理,就无所谓什么安不安全了。

因此,我们选择使用Bitwarden自己搭建密码管理器。

Bitwarden具有如下优势:

  1. Bitwarden是一款免费开源的密码管理工具
  2. Bitwarden有Windows,Linux,Mac,iPhone,Android以及Chrome等多种主流浏览器的客户端
  3. Bitwarden允许使用自建的服务器,并且提供了详细的部署教程

2、部署

执行:

(新版)

此处内容需要评论回复(自动审核)或加入 QQ 技术交流群(立即获得内容)后方可阅读。赞助(二维码在文章下方)后联系作者可一次性解锁所有(包括之后的新文章)。

(旧版)

Bash
1
2
3
4
5
6
7
8
9
10
docker run  -d \
            --rm \
            --name bitwarden \
            -p 8080:80 \
            -p 3012:3012 \
            -e SIGNUPS_ALLOWED=true \
            -e WEB_VAULT_ENABLED=true \
            -e DOMAIN=https://mydomain.cn \
            -v ~/bitwarden:/data \
            bitwardenrs/server:latest

上面命令的各个参数含义如下:

  • -d 在后台运行
  • --rm 容器停止运行后,自动删除容器文件
  • --name bitwarden容器的名字为bitwarden
  • -p 8080:80 容器的端口80映射到8080,在Nginx配置
  • -p 3012:3012 容器的端口3012映射到3012
  • -e SIGNUPS_ALLOWED=true 设置环境变量SIGNUPS_ALLOWED=true允许用户注册
  • -e WBE_VAULT_ENABLE=true 设置环境变量WBE_VAULT_ENABLE=true
  • -e DOMAIN=https://mydomain.cn设置域名,需要替换成自己申请的域名
  • -v /data/bitwarden:/data 容器的/data/目录映射到宿主机的/data/bitwarden目录

3、配置

按照老方法,添加反向代理。

注意:需要修改反向代理配置文件为如下!

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#配置反向代理,请求代理发送到8080端口
  location / { 
    proxy_pass http://127.0.0.1:8080; 
    proxy_set_header Host $host; 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header X-Forwarded-Proto $scheme; 
    root /usr/share/nginx/html;
   index index.html index.htm;
 }
  
 location /notifications/hub { 
    proxy_pass http://127.0.0.1:3012; 
    proxy_set_header Upgrade $http_upgrade; 
    proxy_set_header Connection "upgrade"; 
 }
  
 location /notifications/hub/negotiate { 
   proxy_pass http://127.0.0.1:8080; 
 }

}

因为Bitwarden部分服务使用了WebSocket,需要单独配置反代。

4、使用

访问我们的域名就可以访问Bitwarden的主页,接下来我们来介绍一下如何使用自己Bitwarden管理我们各个平台与各个终端上的密码。

4.1、注册

访问反代的网站:

注册页面

使用自己的电子邮件地址注册一个账号。

设置账号密码

点击提交后,即表示注册成功。接下来会返回到登录页面,输入电子邮件地址,和主密码即可登录。下图显示注册账号后为空的密码库。

空密码库

4.2、禁止其他人注册

由于这个bitwarden服务器是供个人使用,我们在注册完账号后,要关闭注册功能,防止他人注册。

执行:

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
# 先停止bitwarden容器
docker stop bitwarden
# 设置环境变量不允许注册用户-e SIGNUPS_ALLOWED=false,再启动bitwarden容器
docker run -d \
 --rm \
 --name bitwarden \
 -p 8080:80 \
 -p 3012:3012 \
 -e SIGNUPS_ALLOWED=false \
 -e WEB_VAULT_ENABLED=true \
 -e DOMAIN=https://mydomain \
 -v ~/bitwarden:/data \
  bitwardenrs/server:latest

此时再注册账号时,会提示Registration not allowed or user already exists.这样的错误。

注册失败

4.3、各客户端配置

Bitwarden基本上支持了所有客户端:

支持的客户端

Chrome

下载浏览器插件:

Bitwarden插件

设置我们自建bitwarden服务器URL的地址。

设置服务器

接下来我们就体验一下,bitwarden自动保存密码的功能。在chrome浏览器中,我们登录果壳网,bitwarden会自动检测需要保存的用户名和密码。点击“是的,现在保存”即可。

自动保存

再次访问网站,密码用户名和密码就会自动填充好。

自动填充

iOS

在AppStore上搜索bitwarden,下载Bitwarden密码管理器。

iOS App Store

打开APP,点击设置图标,设置我们搭建的bitwarden服务器域名。

填入域名

点击“登录”,用注册的bitwarden账号登录到我们搭建的服务器上。

自动填充

Docker建站(六)Vaultwarden:安全私密的个人密码管理器

https://blog.tsinbei.com/archives/731/

文章作者
Hsukqi Lee
发布于

2022-08-28

修改于

2022-12-06

许可协议

CC BY-NC-ND 4.0

评论

昵称
邮箱
网址
3 条

XH

XH

学习了,谢谢分享

  回复

jay

jay

服务端部署完了,但使用谷歌插件登录不上,是不是少部署了什么?报:cannot read property of null reading iteration

  回复

Hsukqi Lee

Hsukqi Lee 作者

服务器在国外吗?要不然咋访问Google,回调是需要服务器从Google获取信息的

  回复