TrueNAS Scale入坑指南No.6——Vaultwarden容器的部署

2023-09-22 08:40:09 3点赞 13收藏 9评论

一、前言

自开始使用网络以后,各种网络密码的管理经历了几个阶段

第一阶段:手记+心记

最早上网的时候还是那种modem拨号的时代,互联网刚开始进入生活,当时默认的IE浏览器并没有现在浏览器记录密码,填充密码功能的,而当时的互联网服务也没那么丰富,最多就是邮箱和qq号。自己记在心里就足够了,根本用不着记录很多密码,找个小本本记下来(太不安全)或者记在心里就够。

第二阶段:开源的本地密码管理软件

后来网络购物兴起,需要记密码的地方开始变多,所以当时我找到了keepass这样的密码管理软件,当时好像可以利用一种叫做ActiveX的机制,加载到IE浏览器中进行自动填充,虽然功能简单,但也足以应付日常使用。

第三阶段:浏览器及浏览器扩展

后来浏览器陆续推出了密码管理功能,而很多支持扩展的浏览器出现可以保存、填充密码的扩展,比如曾经大名鼎鼎的lastpass。

第四阶段:商业的本地密码管理软件

大概在2015年左右,lastpass的密码泄露问题暴露,导致信任危机,我修改了所有互联网上的账户密码,并且选择了商业公司开发的密码管理软件1password和enpass,这些软件可以把密码加密保存在本地,使用时可以通过浏览器扩展读取密码并填充。但因为订阅价格太高我并没有使用多久。

第五阶段:重回开源,拥抱docker,在NAS中部署本地密码管理应用

在docker开始流行之后Bitwarden满足了我对于密码管理的基本需求,不但可以在浏览器中使用,还可以在手机中使用,解决了我需要使用密码的大部分场景,很快就成为我唯一的密码管理工具,一直使用至今。

二、Bitwarden和Vaultwarden

Bitwarden虽然是一个商业公司,但Bitwarden仍然是开放源代码的应用,也支持私有化部署,但并没有提供标准的docker命令进行部署,而是提供了一个安装脚本,虽然应该也可以利用这个脚本在TrueNAS Sclae中部署,但是不太方便日后的管理。

Vaultwarden是基于Bitwarden的开源非官方版本,用Rust语言进行了重写,有标准的docker命令可供参考,因此在TrueNAS Scale上根据命令提供的参数进行部署。而且Vaultwarden可以使用官方的Bitwarden应用,非常适合个人部署使用。

Vaultwarden之前的镜像名称是Bitwarden_rs,为了避免混淆和版权问题,更名为Vaultwarden。原有的Bitwarden_rs已经停止更新。

三、部署Vaultwarden

在dockerhub上搜索“vaultwarden/server”,查看部署代码

docker pull vaultwarden/server:latest

docker run -d --name vaultwarden -v /vw-data/:/data/ -p 80:80 vaultwarden/server:latest

第一行是拉取镜像,第二行是部署命令,官方给的部署命令比较简单,实际上还有一些隐藏设置需要打开。

部署代码部署代码

登录TrueNAS Scale,首先需要在数据集中为Vaultwarden新建两个数据集。

vaultwarden数据集是为了保存Vaultwarden产生的数据文件,ssl数据集是为了让Vaultwarden能够使用ssl证书文件,我把ssl数据集建立在vaultwarden数据集中。数据集的名称实际上不需要和我设置的完全一样,可以按照你方便的方式来。

TrueNAS Scale入坑指南No.6——Vaultwarden容器的部署

我们需要先通过ssh登录或者将ssl数据集共享的方式把ssl证书放入/mnt/pool/docker/vaultwarden/ssl中。

这里,我通过SMB共享的方式,把ssl证书复制进去,记得要给ssl数据集设置好访问权限。完成后记得关闭共享。

TrueNAS Scale入坑指南No.6——Vaultwarden容器的部署

接下来把上一篇文章中生成的设备证书复制到ssl数据集中。并把证书和密钥文件名改为certs.pem和key.pem,这样做是为了后面使用方便

TrueNAS Scale入坑指南No.6——Vaultwarden容器的部署

回到TrueNAS Scale,从左侧选择“应用”,点击右上角“启动docker镜像”。

部署Vaultwarden部署Vaultwarden

应用名称按照命名规则自定义一个,这里我填入的是vaultwarden,镜像名称必须与dockerhub上的名称一致,填入vaultwarden/server。

TrueNAS Scale入坑指南No.6——Vaultwarden容器的部署

向下拉,来到“Container Environment Variables”,点击灰色的“添加”按钮为Vaultwarden添加环境变量。

Environment Variable Name中填入变量名:ROCKET_TLS

Environment Variable Value中填入变量值:{certs="/data/ssl/certs.pem",key="/data/ssl/key.pem"}

这样相当于告诉Vaultwarden去调用容器中/data/ssl/中的证书和证书密钥。这里的目录都是指容器内部的目录,我们一会需要将它与TrueNAS Scale的目录做一下映射,才能正常调用。

TrueNAS Scale入坑指南No.6——Vaultwarden容器的部署

继续向下拉,来到“Port Forwarding”设置端口映射,“Container Port”中填入容器内部的访问端口,这个端口号只能填80,“Node Port”中填入你日后需要在浏览器中访问时输入的端口,这个端口号要大于9000,我这里填入的是9100。

TrueNAS Scale入坑指南No.6——Vaultwarden容器的部署

继续下拉,来到“存储”,添加两组映射

/mnt/pool/docker/vaultwarden与容器内部的/data建立映射

/mnt/pool/docker/vaultwarden/ssl与容器内部的/data/ssl建立映射

相当于容器在运行时使用/data中的文件就相当于使用/mnt/pool/docker/vaultwarden中的文件,容器在运行时使用/data/ssl中的文件就相当于使用/mnt/pool/docker/vaultwarden/ssl中的文件。

TrueNAS Scale入坑指南No.6——Vaultwarden容器的部署

拉到最后,点击“保存”。等待状态变为绿色的“ACTIVE”,部署就完成了。

四、Vaultwarden其他设定

现在打开https://192.168.0.10:9100,我们就可以以https的方式访问vaultwarden了。

点击下面的创建账户,注册一个新账户。

TrueNAS Scale入坑指南No.6——Vaultwarden容器的部署

填写相关信息

TrueNAS Scale入坑指南No.6——Vaultwarden容器的部署

注册完成后回到首页登录就可以进入密码管理了,这时候可能会有个问题,局域网中还好,如果你使用的是ddns的方式,其他人知道网址的话也是可以注册的,因此在我们注册完账号之后需要把注册功能关闭掉。来到应用界面,点击vaultwarden右侧的三个小点。在弹出的菜单中选择“编辑”。

TrueNAS Scale入坑指南No.6——Vaultwarden容器的部署

在设置环境变量的位置新增一组环境变量:

变量名:SIGNUPS_ALLOWED

变量值:false

TrueNAS Scale入坑指南No.6——Vaultwarden容器的部署

设置完成后,拉到最下方点击保存,docker会重新部署。完成之后vaultwarden的注册功能就关闭了。

vaultwarden还有以下的变量可以设置,可以根据需要自行添加或者关闭。

1、变量名:SIGNUPS_DOMAINS_WHITELIST

变量值:gmail.com,qq.com等

作用: 只能用变量名中规定的电子邮件域名注册账号

2、变量名:INVITATIONS_ALLOWED

变量值:true/false

作用: 是否允许邀请用户注册

3、变量名:SIGNUPS_VERIFY

变量值:true/false

作用: 要求新注册用户在成功登录前进行电子邮件验证

4、变量名:SHOW_PASSWORD_HINT

变量值:true/false

作用: 是否开启密码提示

5、变量名:ADMIN_TOKEN

变量名:TOKEN值

作用: 以管理员登录vaultwarden后台,访问地址是你的登录地址+admin/,例如https://192.168.0.10:9100/admin/,访问密码是你设置的token值。

五、Vaultwarden密码填充规则

vaultwarden提供了六种默认的密码自动填充规则。

TrueNAS Scale入坑指南No.6——Vaultwarden容器的部署

URI就是你记录在vaultwarden中的填充规则,它包含了一部分的网络地址,但并不一定是你访问网络服务的地址,和我们平时说的url还是有区别的。

TrueNAS Scale入坑指南No.6——Vaultwarden容器的部署

基础域:如果URI值为https://www.baidu.com:8080/,则会判断访问的网络地址中是否有baidu.com这样的字段,如果有则自动填充密码。因此如果使用此规则,在你访问https://www.baidu.com:8080/和https://www.baidu.com:9090/时会发现这两个网址都可以自动填充。

主机:如果URI值为https://www.baidu.com:8080/,则会判断访问的网络地址中是否有baidu.com:8080这样的字段,如果有则自动填充密码。因此如果使用此规则,在你访问https://www.baidu.com:8080/和https://www.baidu.com:9090/时会发现只有端口号为8080的网址可以自动填充。

开始于:如果URI值为https://www.baidu.com/path/,则会判断访问的网络地址中是否有https://www.baidu.com/path/这样的字段,如果有则自动填充密码。

正则表达式:在正则表达式规定的格式内匹配,如果访问的网络地址中包含正则表达式规定的字段则自动填充。正则表达式类似与windows里的通配符,这里不做深入探讨了。

精确:URI所有字符必须完全匹配,才能自动填充,这个URI就是你登录页面的网址。

从不:相当于关闭自动填充。

有时候因为规则设置错误,一个登录网址匹配了两条登录信息的话vaultwarden就无法自动填充了

日常使用的互联网服务提供商一般不会用端口来区分服务,当某个网站提供了多种服务,而每种服务都有不同的密码的话,可以使用开始于规则来区分。

而对于自己的NAS往往是用端口区分不同的服务,所以可以使用主机规则来区分。

基础域只针对在一个主域名下只有一种服务的使用场景。

五、下期预告

近年来因为众所周知的原因,经常会居家办公,期间用过很多种远程控制软件例如向日葵、ToDesk、TeamViewer、AnyDesk等,这些商业软件在使用时多少都有些限制,比如设备数量、使用功能、弹窗广告等。因此在寻找替代品的时候发现了RustDesk这款优秀的开源软件。因此下一期介绍如何在TrueNAS Scale中搭建RustDesk服务器

展开 收起
9评论

  • 精彩
  • 最新
  • 厉害,那请问大佬 备份照片,查看照片,都是用的啥呢? docker? 还是再虚拟个群晖? 以及文件管理等等

    校验提示文案

    提交
    备份照片我还是用syncthing,只要链接wifi就自动同步,非常好用,可以参考我syncthing部署及应用的文章。查看照片有很多可以用,荔枝相册,photoprism,librephoto,immich,mtphpto(收费)等看自己需要,部分应用自带同步功能。

    校验提示文案

    提交
    感谢大佬恢复,看留言很少 看来是玩truenas的人事真的少啊。但是这系统的优势也很明显,感觉用习惯的话也就不会用威联通 群晖了

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 虚拟机 安装centos9stream 失败,请教下是否可以安装

    校验提示文案

    提交
    truenas scale里么?不知道你的设置过程,这个不好说

    校验提示文案

    提交
    收起所有回复
  • 虽然是蛮久前的文章了,还是想留个言。VAULTWARDEN网页蛮好用的,已用了2年,完全习惯无脑不记密码了,但手机端APP感觉却不是那么好用,不知道是否我姿势不对还是咋的。

    校验提示文案

    提交
  • 值得学习,感谢分享,当年也是lastpass事情后改用了Bitwarden

    校验提示文案

    提交
  • docker部署代码信息那么一点,博主是怎么知道修改容器的其他变量的,也就是Container Environment Variables这一项,经常困扰着,还请博主授之以渔 [口水]

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
13
扫一下,分享更方便,购买更轻松