Bitwarden_rs部署

Author Avatar
st 2021年03月18日
  • 在其它设备中阅读本文章

Fuck Lastpass.

背景介绍以及碎碎念

大概一个月前Lastpass发来通知邮件说三月16日开始,免费用户只能在PC或者移动端两个平台二选一了。2211年了,密码管理器没法跨平台同步就跟废了也没啥两样了。

我用Lastpass大概两年左右吧,虽然核心功能没什么问题,但是没见有任何有意义的更新,UI还一直有点小bug。免费用户每次开插件有个会员的广告也算正常,但是直接把免费给砍废了是个什么意思?我管不了别人会不会因为这个开会员,我反正不会,我宁可每个月多花五刀开个服务器自建密码管理器,也不乐意给Lastpass每个月送那2.25。

看了一圈,密码管理器其实也并非没有别的替代选项,像是dashlane之类的,但是既然要换,不如干脆存在自己的服务器上,自己也放心不少。

想了一下自己对于密码管理器的基本要求:开源、全平台、有浏览器插件、网址识别不要太蠢、自己管理、不需要频繁维护
Wikipedia有个不错的页面可以参考List of password managers
再看了圈Reddit,一番犹豫之后我决定试试Bitwarden。

Bitwarden,差点没逼死我个强迫症

原版的Bitwarden部署起来方便的很,按照Docs里来就行了。

部署完我开开心心一看,才发现原版Bitwarden即使是部署在自己服务器上,会员功能也是锁死的。虽然会员功能我一个也用不上,但是有功能不能用真让我贼难受,思想斗争15秒后决定放弃原版Bitwarden。

Bitwarden_rs

搜了一下找到了Bitwarden_rs,是Bitwarden的Rust实现,不仅所有功能全都解锁,兼容官方客户端,占用系统资源还少,岂不美哉?

部署第一步很简单,按照Github页面的方法下载Docker镜像然后运行就行了。

不过设置起来比较麻烦,主要参考wiki

首先最重要的是启用HTTPS,作为密码管理器,如果没有TLS,访问的时候安全性就完全没有保证了。
先把证书签好,我一如既往用acme.sh签的证书,域名就用了个二级域名vault.stsecurity.moe
证书签好过后要配置反代,在Proxy examples里有不同的反代配置举例,我这里用的Apache2,也是个人习惯了。
基本上新建一个配置文件然后按照Apache那个写就可以,我的配置主要是稍微修改了一下证书的部分,按照我平时的习惯来了,另外ProxyPass用的是http://localhost:8080/启动Bitwarden的时候端口也改成了8080
然后修改一下默认的配置,确保强制启用HTTPS,默认配置里加上这段即可

 RewriteEngine On
 RewriteCond %{HTTPS} !=on
 RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]

这样一来TLS就OK了,接下来要启用管理员页面。

基本操作按照Enabling admin page来即可,因为端口已经改了,启动命令的-p 80:80要改成-p 8080:80
完成过后访问/admin即可进入管理页面。
管理页面主要要配置一下smtp,我一直在用mailgun,所以这里也用mailgun配置了。
配置有问题会发不出邮件,调试了好多次才成功,最后Force TLS设置为True,Port选择465才终于成功。

设置完之后我直接写了个启动脚本,省得去记启动命令了。

#!/bin/sh
docker run -d --restart always --name bitwarden -v /bw-data/:/data/ -p 8080:80 bitwardenrs/server:latest

改了一下端口然后设置了一下自动重启。

用脚本启动之后就可以访问服务器然后创建账户了,要改设置可以回/admin去改。
然后就可以装客户端了,第一次启动在左上角设置里填一下服务器地址,然后登陆就行了。

导入Lastpass数据

直接按Import Data from LastPass操作即可。

写在最后

用了一段时间了,基本满足我全部要求,而且客户端有Dark Theme,真的香。
一个问题是同步频率稍微有点慢,经常发现自己需要手动同步,不过使用影响也不大,毕竟不是天天都在注册账号。

本文链接:https://blog.stsecurity.moe/archives/144/
Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.