简介

vaultwarden是一个开源的密码管理工具,目前这个项目收藏有50.9K,是一个很出名的密码管理工具了

这时候有同学可能会有个疑问,那就是我们的浏览器以及自带密码管理了,还有比较部署这个吗?

接下来说一下我对这个工具的理解

首先这个是自托管的,也就是意味着数据掌握在自己手里

其次就是实用性,我感觉这个比浏览器自带的密码管理好用多了,浏览器自带的密码管理只能管理你在这个浏览器上使用的密码,一旦你换浏览器了就得导出密码从新导入,使用这个工具就不会有这样的问题,换浏览器后直接安装一个插件即可

然后就是跨端跨设备,使用这个工具你不但可以在电脑上使用,这个工具有移动端,你也可以在移动端上使用,这样你的密码更集中管理,更方便管理

还有一点就是团队使用,这个工具可以建立组织,让同一个组织的人员都可以共同调用密码,这个对于那种一个账号多共享的还是很实用的



项目地址

https://github.com/dani-garcia/vaultwarden


开始部署

这里的部署不止可以使用docker,还可以是二进制文件,但是使用二进制文件需要自己编译,所以我选择使用docker部署,很方便

这里就不重复docker和docker-compose的安装了,如果不会安装的可以参考这篇文章《从零开始学习Docker--Docker的安装和配置仓库源加速


编写docker-compose文件

首先我们编写docker-compose文件,我们打开项目地址

1.png

滑倒下面,这里官方以及给了一个基础的docker-compose文件了,我们只需要在这个基础上修改即可

2.png

复制这个文件下来,新建一个记事本,粘贴进去

3.png

接下来我们需要修改的地方就三个,一个是变量,一个是数据持久化,还有就是端口


变量

必须变量

首先是变量,这里基础的docker-compose文件里面有一个DOMAIN: "https://vw.domain.tld"变量,这个变量是配置站点根目录

也就是说你的站点的域名的,如果没有域名,使用的ip就直接填写ip即可,但是这里注意的是,如果不是局域网使用建议配置域名和证书,否则你的数据就会以明文传输,意味着你的密码将会在网络上暴露

我这里时在局域网内演示,所以我直接填写ip地址

4.png


演示配置其他变量,非必须

这里我在演示一下配置其他变量,这个不是必须的,可以不用配置,都是可以在系统后台管理里面配置的

然后我们在项目地址网上翻,找到官方的变量说明,找到自己需要的变量添加上去

例如我还需要配置邮件服务,用于身份验证和发送忘记密码的时候密码提示

在项目首页找到“Usage”,在里面找到“Wiki”,点击查看详细的说明

5.png

我们在右边的导航栏里面找到“Configuration”,里面有一个“SMTP configuration”,点击查看

6.png

这里就可以看到官方给的启动示例文件了,-e开头的都是启动变量,我们可以把这个变量直接写入我们的docker-compose文件里面

7.png

我们把-e开头的全部复制,粘贴到记事本里面,粘贴的位置在刚刚我们改的ip的那个变量下面

docker-compose文件如果需要注释的话可以时#号开头

8.png

然后把前面的-e和后面的\删掉,记得保持缩进和ip那个变量一样

9.png


配置管理员

如果你不想直接在docker-compose文件里面配置邮箱等其它配置,那么就需要配置管理员,通过管理员进入系统后台进行配置

我们在右边目录里面找到“Enabling admin page”,点击打开

10.png

也是-e开头的,复制到记事本里面

11.png

12.png

然后把=号后面改成一个你的密码

13.png

注意

到这里我们的变量并没有配置完成,有细心的同学可能发现了,官方默认改的DOMAIN: "http://192.168.99.25"这个变量不是=

是的,这里我们还需要把变量里面的=号换成:(冒号+一个空格),记住,冒号一定要英文的

14.png


数据持久化

接下来就是数据持久化了

在官方的配置文件里面其实已经做了数据持久化,但是我还是习惯改成绝对路径

volumes:下面的就是数据持久化

官方的是

- ./vw-data/:/data/

15.png

这里就看自己心情修改了,但是注意的是你只能修改:前面的,后面的不要修改

下面这个是我修改的路径

/opt/vaultwarden/data

16.png


端口/地址映射

官方给的配置文件的端口映射是把宿主机的8000端口映射到容器的80端口,这里可改可不改,如果你的服务器的8000端口没有被占用就没必要修改

17.png

这里要修改也是只能修改80端口前面的:前面的内容,后面的是不能修改的

下面是我修改后的内容,我把原本的8000端口改成了8080端口

18.png

还有就是8080端口前面的地址127.0.0.1,这个就限制了我们只能本机访问,也就是只能服务器自己访问,如果我们做反向代理的话这个不用修改,保持127.0.0.1即可,如果不做反向代理,那么就改成0.0.0.0,允许所有地址访问

19.png


创建目录

之前的docker-compose文件我们做了一个绝对路径的数据持久化,我们需要把目录创建好

ssh连接上服务器,执行下面命令,记住,创建的目录一定是你要做数据持久化的目录

mkdir -p /opt/vaultwarden/data

20.png

然后我们进入/opt/vaultwarden

cd /opt/vaultwarden

21.png

在创建一个用于存放docker-compose文件的目录,当然也可以不创建,直接把docker-compose文件扔你记得的地方,看个人习惯来

mkdir config

22.png

进入我们创建的config目录

cd config

23.png


创建docker-compose.yaml文件

刚刚我们以及在记事本上编辑好docker-compose文件了,现在就需要我们在config目录下使用vi创建一个docker-compose.yaml文件,然后把记事本上的内容粘贴进去

vi docker-compose.yaml

24.png

然后按【i】进入编辑模式,把刚刚记事本上的内容粘贴进来

25.png

按【esc】编辑模式,输入“:wq”保存并退出

26.png


执行部署

在config目录下也就是我们存放docker-compose文件的目录下执行下面命令开始拉取镜像并部署

docker compose up -d

27.png



完成部署

看到下面内容就是部署完成了

28.png

可以使用下面命令查看是否成功运行,只要看到端口正常就成功运行了

docker ps

29.png



用户登录

在浏览器上输入服务器地址加上刚刚我们docker-compose文件里面写的端口号访问,我的是8080端口

这时候你会发现一直在转圈圈

30.png

那是因为我们没有配置证书,即使我们在docker-compose里面的DOMAIN: "http://192.168.99.25"是http协议,但是也是不能访问的

这时候有两个解决方法

1、配置证书,即使是自签证书也可以,详细操作方法可以查看官方文档

31.png

第二个就是修改浏览器设置

以谷歌浏览器为例,新建一个标签页

32.png

然后在地址栏输入下面内容并回车

chrome://flags/#unsafely-treat-insecure-origin-as-secure

33.png

把“Insecure origins treated as secure”选项改成“启用”,然后在里面填写服务链接

34.png

然后点击右下角的“重新启动”,这时候就会发现可以访问了

35.png

刚开始是没有账号的,你需要新建账号

36.png



后台管理员登录

在我们的地址栏上加上/admin进入后台管理员登录界面

37.png

输入我们刚刚在变量里面设置的管理员密码登录

38.png

这时候就可以在这里面配置邮箱之类的了

39.png



警告消除

进入后台我们可以看到顶上有一个警告

40.png

这个是应为我们现在使用的管理员密码是明文形式

我们需要改一下

可以在官方文档里面找到对应的解决方法

41.png

“Secure the ADMIN_TOKEN”这部分就是解决方法

42.png

官方给了两个方法,一个是在容器里面操作,生成哈希后的替换原来的,另一个是在本机操作,也是一样的,我选择在容器里面操作

首先查看容器名称,可以看到容器名称是“vaultwarden”

docker ps

然后使用下面命令进入容器开始生成哈希

docker exec -it vaultwarden /vaultwarden hash

44.png

输入第一次密码,这个密码就是你要设置的后台管理员密码,这里输入密码是不会显示的,输入完成后回车

45.png

输入第二次密码,要和第一次的密码一样,否则不会生成

46.png

回车后就可以看到密码哈希后的值了

47.png

把这个复制下来,粘贴到记事本里面,只要复制ADMIN_TOKEN=''这对单引号里面的值即可

48.png

然后打开后台管理下的“ General settings”

49.png

找到“Admin token/Argon2 PHC”选项,把刚刚复制的值粘贴进去

50.png

滑倒最下面,点击“Save”保存

51.png

点击“确定”

52.png

这时候就会发现警告消除了

53.png

但是我们的密码是写在docker-compose文件里面的变量里面的,我们还需要到里面去修改的

在修改变量之前我们是需要先加工一下刚刚的值

我们刚刚的值里面有美元符号$,这个在docker-compose文件里面是会被认为是变量,这会导致docker-compose文件里面的ADMIN_TOKEN这个变量无法获取到真正的哈希后的密码

要解决docker-compose文件把美元符号认为是变量这个问题也很简单,把哈希后的值里面的美元符号改成双美元符号

例如下面这个是哈希后没有修改的值

$argon2id$v=19$m=65540,t=3,p=4$2Zt/hI4hUN7V2wXa5wrqc3tKTEy7WyhkccgNbWHjuoE$FI+fjSla0TL1rSdP9tC8PTjeRr9mdazPLjqDE0amHsA

那么我们就需要把里面所有的美元符号改成两个

$$argon2id$$v=19$$m=65540,t=3,p=4$$2Zt/hI4hUN7V2wXa5wrqc3tKTEy7WyhkccgNbWHjuoE$$FI+fjSla0TL1rSdP9tC8PTjeRr9mdazPLjqDE0amHsA

54.png

在记事本里面修改好后,先停止并删除我们的容器,在docker-compose文件目录下执行下面命令

docker compose down

55.png

然后使用vi编辑docker-compose.yaml文件

56.png

然后把ADMIN_TOKEN后面的明文密码替换成我们修改后的哈希值

57.png

然后保存并退出,在执行下面命令启动容器

docker compose up -d

58.png

再次进入后台,登录进去后就可以看到没有警告了

59.png


二维码

发表评论