0. 选择
不想用浏览器自动保存了,比较了1pass,enpass和bitwarden,最后决定自建bitwarden。
我选择bitwarden的理由:
- 自建对我来说0额外成本
- 安全性无忧,数据自己保存可同步,即使数据库、服务器被黑,目前也无法破解得到存储的密码。相比被黑风险,被社工方式获取主密码的风险更高。
- 多平台兼容性好。
使用了用 Rust 编写的非官方 Bitwarden 兼容服务器,相比官方版对资源占用更低,且能白嫖bitwarden付费会员功能。目前24.5k star。
github https://github.com/dani-garcia/vaultwarden
1. 安装docker和docker-compose
1.1 安装docker
sudo apt-get update
sudo apt-get install docker.io
检查安装结果
docker --version
启动docker
systemctl start docker
查看 Docker 启动状态 (绿色 active)
systemctl status docker
如下提示说明正常
输入以下命令让 Docker 开机自启动
systemctl enable docker
最后运行 hello-world 验证 docker 是否安装成功
1.2 安装docker-compose
apt install docker-compose
2. 安装vaultwarden
先创建文件夹
mkdir -p /www/wwwroot/vaultwarden
切换到这个目录下
cd /www/wwwroot/vaultwarden
为了方便,可以先准备好以下配置文件
输入
nano docker-compose.yml
粘贴以下内容:
version: '3'
services:
vaultwarden:
image: vaultwarden/server:latest
restart: always
ports:
- "14090:80"
environment:
DOMAIN: 'https://pass.thsink.com/'
SIGNUPS_ALLOWED: 'true' #开启注册,自己注册后改成fale
WEBSOCKET_ENABLED: 'true'
volumes:
- ./data:/data
详细配置文件参考https://rs.ppgg.in/configuration/configuration-overview
开放端口,如我这里选择14090,将域名解析,并开启ssl,反代127.0.0.1:14090
运行
docker-compose up -d
其他指令
docker-compose down #关闭服务
docker-compose restart #重启服务
3. 配置vaultwarden
访问域名pass.thsink.com
创建账号后登录。
设置二步验证
获取客户端及浏览器插件
4. 导入chrome中的密码到vaultwarden
在chrome设置中搜索密码,选择导出密码(.csv)
在vaultwarden导入,很方便
5. vaultwarden的备份与恢复
5.1 手动备份
vaultwarden备份最关键的就是sqlite3数据库文件了,你可以直接进入到./data目录下,将sqlite3数据库保存下来。当然你也可以将./data目录下所有的包括附件文件夹、图标缓存文件夹、密钥等文件备份下来。
5.2 自动备份
利用定时任务执行bitwarden备份,首先新建一个文件夹:mkdir /bw-data/db-backup
,然后执行数据库备份任务。代码如下(关于定时任务说明参考:Linux Crontab命令定时任务基本语法与操作教程):
sqlite3 /bw-data/db.sqlite3 ".backup '/bw-data/db-backup/backup.sqlite3'"
我选择定时任务每10分钟自动备份到googledrive
5.3 恢复备份
直接将sqlite3数据库重写替换就可以了。如果你的数据库路径与原来的不一致,可以手动指定,代码示例:
docker run -d --name vaultwarden \
-e DATABASE_URL=/database/vaultwarden.sqlite3 \
-v /bw-data/:/data/ \
-v /bw-database/:/database/ \
-p 80:80 \
vaultwarden/server:latest
6. 其他
6.1 vaultwarden发送邮件
vaultwarden可以支持多用户注册使用,如果想要让vaultwarden发送邮件的话,可以使用SMTP发邮件,参考代码如下:
docker run -d --name vaultwarden \
-e SMTP_HOST=<smtp.domain.tld> \
-e SMTP_FROM=<vaultwarden@domain.tld> \
-e SMTP_PORT=587 \
-e SMTP_SSL=true \
-e SMTP_USERNAME=<username> \
-e SMTP_PASSWORD=<password> \
-v /bw-data/:/data/ \
-p 80:80 \
vaultwarden/server:latest
备注:使用非 Docker 在服务器上编译搭建 Vaultwarden (Bitwarden_rs)
参考:
https://wzfou.com/bitwarden-rs/
https://yangyq.net/2022/07/baota-docker-install-bitwarden.html
https://zhujiceping.org/p/16128
https://blog.gimo.me/posts/self-host-vaultwarden/
https://github.com/dani-garcia/vaultwarden/wiki/Using-Docker-Compose