自建 Bitwarden 密码管理服务
目前项目名称已更换为
vaultwarden
前言
如今越来越多的账号使得我们拥有非常多的密码,密码多起来难免会出现忘记、记错等情况。有的朋友像我一样密码全都设成同一个,虽然好记,但是如果一个密码泄露,那么你就需要花时间修改所有的密码,而且也非常不安全。
另外有的朋友设置密码会采用 “平台名 + 自己独有的加密方式”,这样确实相对安全好记,但是每次输密码需要再加工一下,对我来说有点麻烦。
最后就是使用密码管理软件,省心又方便,使用密码管理软件的好处如下:
- 一键生成复杂密码,提高安全度
- 自动填充密码,比较方便
- 多设备同步
- 可检测密码是否已经泄露
而这样的管理软件也非常多,又需要进行选择。
选择过程
最开始在 Android 上使用的一个 APP
名为账号本子,但没法满足自己的要求。
后来发现了 Keepass,使用了很长一段时间。
这里稍微介绍一下
Keepass
Keepass
是一款开源、免费的密码管理软件,同时拥有众多插件。Keepass
将密码存储到一个数据库,同时设置一个主密码或是密钥文件,只需要记住主密码或者传入密钥文件即可解锁数据库,目前的密码管理软件基本也都是这种方式。
我使用的时候采用的是使用 坚果云
同步备份,同时设置 WebDAV
密码,在手机上通过 Keepass2Android
应用 以 WebDAV
方式登陆。这样做当你修改了数据库,会立马同步到 坚果云
,也是比较方便的。
之后更换了设备,iOS
上支持 Keepass
的客户端也有很多,但大多不再更新,只有一款名为奇密的 APP
使用起来非常顺手。
但是 Keepass
的桌面端使用起来不是很方便,加上浏览器插件支持也不是很好,因此开始更换软件。
中途使用 Google
的密码管理,但是更换手机后不太方便,而我的电脑又不是 Mac
,因此 钥匙串
也不适合我。
同类软件中如 1Password
, Lastpass
都有很大的用户群体,其中 1Password
全平台支持优秀,但是花费不小,而 Lastpass
前几日公布免费用户只支持一种类型的设备间同步,因此 Bitwarden
的优势则体现了出来。
Bitwarden 简介
Bitwarden 是一款免费开源的密码管理软件,同时官方提供了 docker
镜像,将服务端部署在自己的设备上,正好前段时间的腾讯云轻量活动机用得上。遂选择自建 Bitwarden
。
Bitwarden
官方 docker
要求服务器内存在 2G
以上,但有大佬使用 Rust
进行重写,项目名为 vaultwarden,降低了配置要求。
最近把原作者的项目Wiki,由英文翻译到中文,详细内容可以看Vaultwarden Wiki 中文版
部署
这里通过 宝塔面板
和 Docker
共同完成。
准备工作
- 首先安装好
宝塔面板
并配置好环境,这里采用的是LNMP
,PHP
版本7.4
如果不是特别担心密码安全,还是建议使用官方服务端,自建和官方并没有什么差别
勤备份也会避免很多问题
- 解析好一个二级域名,并且创建一个站点,配置好
SSL
证书 - 安装好
docker
,也可直接使用下面的Docker 管理器
安装 Docker 管理器
在软件商店第 3
页 找到 Docker 管理器
并安装。
获取镜像
打开 Docker 管理器
,点击 镜像管理
,再点击 获取镜像
,如果是国内机器可以使用镜像加速
这里使用的镜像加速地址如下:
https://docker.mirrors.ustc.edu.cn/
# 也可自行寻找其他地址
然后将以下镜像名称填入输入框:vaultwarden/server
,之后点击 获取镜像
。
创建容器
- 点击
容器列表
→创建容器
,弹出创建容器界面后按如下填写四部分内容:
- 容器端口为
80
- 服务器 (TCP) 端口可以自定义,这里使用
6789
- 服务器目录自定义,这里使用站点目录
- 容器目录填写
/data
- 内存配额按照自己服务器配置填写
端口映射和目录映射填写完成记得点击
+
添加,否则无效
- 点击提交按钮创建容器
- 修改容器名称以便之后操作,这里使用
vaultwarden
上述步骤也可直接使用命令安装(前提已安装 docker
)
# 安装 vaultwarden/拉取镜像
docker pull vaultwarden/server:latest
# 创建容器
docker run -d --name vaultwarden -v /www/wwwroot/domain.com/:/data/ -p 6789:80 bitwardenrs/server:latest
添加反向代理
在站点设置添加反向代理
目标 URL
填写 http://127.0.0.1:6789
,端口即为上边服务器的端口,之后点击提交
创建账号
此时即可通过域名访问服务
点击创建账号,填写相应信息即可完成注册
开始使用
- 在官网下载页面下载相应的客户端或者浏览器插件
- 在设置中填写服务端地址
- 登陆账号
关闭注册
如果不希望别人注册账号可通过如下操作
- 首先在管理器中停止容器
- 删除容器
一定先停止再删除
- 运行如下命令再次创建容器
docker run -d --name vaultwarden -e SIGNUPS_ALLOWED=false -v /www/wwwroot/domain.com/:/data/ -p 6789:80 vaultwarden/server:latest
# name 后参数为容器名称
# v 后参数为上边填写的容器目录
# p 后参数为`服务器端口:容器端口`
- 重新启动一下容器
docker stop vaultwarden
docker start vaultwarden
完成后就关闭了注册功能,所以一定要在这步之前注册账号
如果重新创建容器后登陆出现问题,记得重启一下容器
如果出现重新创建容器后注册的账号无法登录的情况,在命令行上进行相关操作 (停止、删除、创建) 即可解决
更新
如果需要更新,直接拉取最新镜像,停止并删除旧容器,创建新容器
# 拉取最新镜像
docker pull vaultwarden/server:latest
# 停止旧容器
docker stop vaultwarden
# 删除旧容器
docker rm vaultwarden
# 创建新容器
docker run -d --name vaultwarden -e SIGNUPS_ALLOWED=false -v /www/wwwroot/domain.com/:/data/ -p 6789:80 vaultwarden/server:latest