因为bitwarden的氪金玩家才能使用双因子认证,恰好手上有个vps,搭建个bitwarden服务端来使用2fa
自建bitwarden
vps比较垃圾,所以选用一个资源开销比较小的服务端比较有必要,我这里选择的是 https://github.com/mprasil/bitwarden_rs
这里采用 docker-compose 进行部署
|
|
其中的3012是websocket通知端口
WEBSOCKET_ENABLED
代表启用 websocketSIGNUPS_ALLOWED
代表是否启用注册WEB_VAULT_ENABLED
代表是否启用web界面ADMIN_TOKEN
是管理界面的密码,用来启用管理界面,启用后可通过[https://你的域名/admin](https://你的域名/admin)
进行访问
然后我们需要创建一个反向代理,这里我使用的是 nginx,下面给出 nginx 配置
|
|
你现在可以访问域名看看界面了
当然,现在还只是http,http协议下bitwarden是不允许进行一些密码操作的,你可以配置证书接入ssl,或者使用cloudflare接入ssl
注册完自己的用户后建议修改上面的 SIGNUPS_ALLOWED
然后重启docker关闭注册。
然后你可以使用bitwarden的客户端了
创建挂载目录备份数据
密码数据最好备份一下,要是哪天vps坏了就gg了
bitwarden_rs的数据库是sqlite3,直接打包压缩备份,然后同步到坚果云
坚果云配置webdav
首先我们在坚果云后端创建一个备份应用,点击进入 账户信息 - 安全选项
然后点击下面的添加应用,随便填写一个名字,然后复制生成的应用密码
然后在坚果云根目录下创建一个目录名为 bitwarden_backup
作为我们后续的同步文件夹
服务器挂载webdav
首先安装rclone,为什么使用rclone而不是davfs2,主要是因为davfs2不支持 vfs 缓存(将直接从远程读取并直接写入远程),对于后续的同步会有比较大的问题(主要是同步程序对于文件的操作)
|
|
挂载需要使用fuse,所以需要安装一下
|
|
然后使用 rclone config
配置webdav
然后创建目录进行挂载
|
|
上面的是手动挂载,如果你希望开机自动挂载可以查看 Rclone 使用教程 - 挂载 OneDrive、Google Drive 等网盘(Linux)
监听文件变化进行同步
其实也可以直接将上面的 docker-compose
挂载目录设置到webdav的挂载目录上去,但是icon_cache这个目录下很多文件,调用webdav次数过多会触发坚果云风控,如果不在意的话也可以采取该方案
我这里采用 inotify
进行监控同步的方案
首先安装 rsync
和inotifywait
|
|
然后监控文件变更,同步到webdav的挂载目录
|
|
注意该命令最好使用tmux之类的程序来启动,因为需要跑在后台
后记
发现监听变化就同步,坚果云的上传流量用得太猛了,所以还是采用了crontab定时同步的方案
参考链接
https://rs.bitwarden.in/configuration/enabling-websocket-notifications
https://gythialy.github.io/deploy-bitwarden-rs-with-traefik/
https://github.com/dani-garcia/vaultwarden/wiki/Proxy-examples
https://rclone.org/commands/rclone_mount/#vfs-cache-mode-full
https://www.myfreax.com/how-to-exclude-files-and-directories-with-rsync/