自建 Bitwarden 密码管理服务
以前一直用的 Keepass + Dropbox 同步,手机上使用起来还是不太麻烦。
前一阵子看见别人分享了 Bitwarden 这个密码管理软件,服务端都是开源的,所以可以自建。
自己搭了一下,用起来还可以。
- 不用花钱,自建的服务端高级功能都是免费的
- 全平台的客户端、浏览器扩展支持
- 密码管理中支持 TOTP
- 使用 Docker 搭建起来还挺简单的
- Keepass 的数据可以通过导出 xml 文件导入 Bitwarden,不过不能导入附件
这里备份一下安装过程
安装 docker
1 | # 1. 执行官方的安装脚本 |
安装 Bitwarden
1.获取 bitwarden_rs 镜像
1 | docker pull bitwardenrs/server:latest |
Update 2023.01.09:
解决自建 Bitwarden 服务端在 Chrome 扩展更新后无法登陆的问题
1 | docker pull vaultwarden/server:latest |
参考 Chrome 商店评论:
“the bitwardenrs/server docker image is DEPRECATED, use vaultwarden/server image with the 1.27.0 version, it’s working.” by Xiao Yu
后续运行命令也要修改为对应的镜像
2.运行服务端
Tips: 建议使用 docker compose
运行与管理
1 | docker run -d --name bitwarden -v [Bitwarden 的数据存储路径]:/data/ -p 6666:80 vaultwarden/server:latest |
默认会开启用户注册,毕竟自己使用时也要注册一个用户,自己注册完了之后可以在命令中加入下面的内容关闭注册
1 | -e SIGNUPS_ALLOWED=false |
3.设置 Nginx 反代
1 | location / { |
4.启动、停止服务端
1 | docker start/stop bitwarden |
Docker 命令
1 | # $name 为 docker run 中定义的 name |
更新
1 | # 1. 重新获取镜像 |
设置 docker 容器开机自启:
1 | # 设置 docker 开机启动 |
- no //默认,容器退出后不重启
- on-failure //非正常退出后重启
- on-failure:3 // 非正常退出时重启,最多三次
- always //无论退出状态如何,都会重启
- unless-stopped //在容器退出时总是重启容器,但是不考虑在 Docker 守护进程启动时就已经停止了的容器
更新已有容器:
1 | docker update --restart=always 容器 ID / 容器名称 |
使用 docker compose
每次更新都需要删除再重建,确实不便,尤其是使用了多个 docker 服务的时候,可以使用 docker compose
管理。
现在 docker compose
已内置进 docker cli 命令中,无需手动安装
创建 docker-compose.yaml
文件,填入下面的内容
1 | version: '3' |
随后运行启动命令就可以了
docker-compose build
: 启动构建,构建在 yml 文件中定义的所有镜像docker compose up
: 启动容器docker compose up -d
: 启动容器并后台运行docker compose down
: 停止由 up 命令启动的所有容器docker compose ps
: 列出由 up 命令启动的所有容器docker compose images
: 由 build 命令构建的所有镜像docker compose logs
: 查询日志docker compose start <service>
: 启动 yml 中定义的单个服务,使用服务名,不是容器名docker compose stop <service>
: 停止 yml 中定义的单个服务docker compose rm <service>
: 删除已停止的某个服务docker compose config
: 验证 yml 文件有效性
docker-compose.yaml
文件中可以同时填写多个容器,更新单个容器可以执行下面的操作
1 | # 更新所有镜像 |
如果运行 docker compose pull
时报下面错误
1 | error getting credentials - err: exit status 1, out: `GDBus.Error:org.freedesktop.DBus.Error. |
安装下面软件包即可
1 | apt install gnupg2 pass |