使用自建的Bitwarden密码服务器管理密码

平常我们都会使用大量的网站、app等服务,绝大部分网站都需要我们注册账号才可以使用。但太多的网站管理起来很不方便,尤其是现在数据泄露越发普遍,各个大厂密码泄露服务频发。使用单一的通用密码会给我们带来极大的风险。我使用对比了众多密码软件。最终选择了Bitwaden作为我的密码管理服务。

搭建前的准备

服务器

首先需要一台稳定运行的服务器或NAS,bitwarden对服务器的要求很小,国内很便宜的服务器即可轻松运行。当然,你不需要担心服务器宕机或者数据丢失后的处理。bitwarden采用的是拉取服务器密码库存入本地设备的存储设备中。服务器宕机或者网络无法连接仅仅会造成无法新增密码,但本地app的登录,密码填充等服务均可正常使用

域名

bitwarden强制要求需要ssl加密登录,http会以明文传出数据。所以我们需要一个自己的域名和对应的证书,来实现正常的ssl加密。

(如未有请自行购买,国内推荐阿里云腾讯云,国外推荐namesilo等)

反向代理

bitwarden不提供ssl服务,所以我们需要nginx来进行反向代理。很幸运,众多大神开发了很多好用的nginx服务。这里我推荐Nginx Proxy Manager,这里简称NPM。关于npm,我也写了关于npm的使用方法,如果有兴趣,可以直接点击这篇文章 - Nginx Proxy Manager反代实现HTTPS

docker

bitwarden提供了众多的安装方式,这里选用了docker安装,是因为docker简单,易用,不需要考虑软件所需环境,即可轻松安装。如果有兴趣,可以看下这篇文章-涉及docker的一点点知识

ddns

搭建bitwarden需要公网ip进行访问,如果像家庭nas没有固定的公网ip,那么你就需要ddns,让ddns帮助你获取当前设备的动态公网ip。另外提一句,当前三大运营商IPV6建设已经很充足了,各个地区几乎都有公网ipv6。没有v4的可以开启ipv6服务。如果你对ddns感兴趣,你可以看一下这篇文章-docker安装ddns-go

安装Bitwarden

Bitwarden-docker镜像安装地址

登录到服务器命令后台,直接复制下方命令即可正常安装。

生成token密钥,或自定义Admin_Token密码

openssl rand -base64 48

示例:

# 例如
root@debian:~# openssl rand -base64 48
n0VnkawRyIOq+iTf11DPFDxepx7pfiRvGzoYxYeY2xVEYnjMGYSYhBbuQm7g2+m7

Admin_Token加密

⚠ 要使用此功能,您的vaultwarden必须要在1.28.0+以上

# 使用 Bitwarden 的默认设置

# 有正在运行的vaultwarden容器时
docker exec -it key /vaultwarden hash

# 通过Docker并创建一个临时容器
docker run --rm -it vaultwarden/server /vaultwarden hash

# 输入前面生成的token(输入不显示):
Password:
# 再次输入
Confirm Password:
#生成加密token
ADMIN_TOKEN='$argon2id$v=19$m=65540,t=3,p=4$wnSRpET9lhM+jzRbyX3ohHA936gYkbU8od1gyE0aFWw$XVfSWC/nrTy0KRGDS4lsEebczctIw7BewBuuStvOgng'

运行命令 - 注意:请在中文位置添加正确的参数

docker run -d \
  --name=bitwarden \
  --restart unless-stopped \
  -e PGID=1000 \
  -e PUID=100 \
  -e TZ=Asia/Shanghai \
  -e SERVER_ADMIN_EMAIL=邮箱 \
  -e SIGNUPS_ALLOWED=false \
  -e INVITATIONS_ALLOWED=true \
  -e WEBSOCKET_ENABLED=true \
  -e ADMIN_TOKEN=token密钥,任意生成 \
  -p 35688:80 \
  -v /vaultwarden/data:/data:rw \
vaultwarden/server:latest

各个环境变量意义

docker run -d \
  --name=bitwarden \  ## 容器名称
  --net=xxx \         ## 网络名称,可选项
  --restart unless-stopped \   ## 重启设置,默认
  -e PGID=1000 \      ## 用户id,根据实际情况选择
  -e PUID=1000 \      ## 用户组 id根据实际情况选择
  -e TZ=Asia/Shanghai \   ## 时区
  -e SERVER_ADMIN_EMAIL=邮箱 \  ## 管理员邮箱
  -e SIGNUPS_ALLOWED=false \    ## 是否允许注册-否
  -e INVITATIONS_ALLOWED=true \  ## 是否允许邀请注册-是
  -e WEBSOCKET_ENABLED=true \
  -e ADMIN_TOKEN=token密钥,任意生成  \  ## 后台密钥
  -p 35688:80 \   ## 端口号
  -v /data:/data:rw \  ## 容器映射端口
vaultwarden/server:latest

配置反向代理

⚠ vaultwarden不支持http运行,必须配置https

这里我们使用Nginx Proxy Manager来配置反向代理,具体可以参考这篇文章 - - Nginx Proxy Manager反代实现HTTPS

配置Bitwarden

初始化Bitwarden,在设置的域名后加入admin,回车,进入后台管理页面,例如这里是https://bit.xxxx.com:12345/admin

使用ADMIN_TOKEN登录管理员账号,token为docker环境变量设置的 -e ADMIN_TOKEN= your token参数

这里我们的密钥就是n0VnkawRyIOq+iTf11DPFDxepx7pfiRvGzoYxYeY2xVEYnjMGYSYhBbuQm7g2+m7

image-20220901103729324

General settings选项卡下找到Domian URL,填入自己的域名和端口号

General settings选项卡下找到Invitation organization name,填入自己喜欢的名字(可选)。

image-20220901103913777

SMTP Email Settings 选项卡下找到Host Port ,按下列信息填写

SMTP发件服务器在你使用的邮箱获取,经测试,qq、163等国内邮箱均可以,邮箱不同具体的配置也不同。其中163邮箱,qq邮箱使用SMTP发信需要设置单独的密码。

bitwarden1

在页面底部点击保存

image-20220901092003851

保存完成后所有参数,这里以163邮箱为例

image-20220912083843170

回到SMTP Email Settings 选项卡,在Test SMTP输入被测试邮箱,点击Send test email测试SMTP发件服务是否正常运行。

image-20220901092146567

如果测试正常,将会显示SMTP Test email sent correctly

切换到USER选项卡,发送邀请注册链接给自己将要使用的邮箱,如下图所示

image-20220901093122542

注册Bitwarden

登录刚刚发送邀请邮件的邮箱,你会发现有一条邀请邮件,如未收到,请仔细检查垃圾箱等

点击Join Organization Now ,会自动跳转到邀请页面

image-20220901104835799

点击Create Account,进入注册页面

image-20220901105147801

依次填写用户名密码确认密码密码忘记提醒,请注意,bitwarden的主密码非常重要,请妥善保管

注册完成后,登录Bitwarden网页端,在网页端的右侧,有一个验证邮箱提升框,请按照提示验证邮箱

image-20220901110219372

使用Bitwarden

Bitwarden在各个平台上均有对应的客户端,可以去官网下载,这里仅以网页插件为例来进行示范

下载对应浏览器的插件,这里我使用的是Edge,下载地址。安装完成后打开此插件

image-20220901110928825

自托管环境输入上面设置的域名及其端口号,点击保存

image-20220901111037679

当显示保存成功时,输入刚刚注册的邮箱和密码,点击登录。

点击设置-选项-

image-20220901111538063

勾选自动填充密码

image-20220901111659842

下面就开始优雅的管理密码吧