开源密码管理神器!十分钟Docker快速部署密码管理器:Vaultwarden
前言
▲Vaultwarden是一款开源密码管理器,通过Rust编写并基于Bitwarden API实现。它可将所有密码存储于服务器上,且相较于Bitwarden,它的硬件要求极低(测试过512M搬瓦工的VPS都能轻松跑起来),兼容Bitwarden官方客户端,支持几乎所有密码管理器(1password等)的数据导入导出。

▲一直没部署Bitwarden是因为早先不能自动同步,现如今完全没问题,是时候用起来了!关于该项目的更多特点,请点击这里查看。也可以顺便看看作者的一些声明~
▼笔者目前两个浏览器分别用来登陆不同服务,各自分工,已经攒了太多账密记录。很多朋友日常使用Edge和Chrome自带工具应该就够用,我部署它的主要原因还是 密码存在自己手里更舒服

支付密码及具有较高附加价值的账号密码,强烈建议不要托管在任何地方,尽量记在脑子里!
▼由于现在的Web浏览器安全限制,需要通过 HTTPS 或 localhost 访问 Web 保管库,说白了通过https访问才能使用完整功能,因此本篇会连同反代一起介绍。

本篇搭建平台为威联通的TS-464C2,通过Docker Compose部署,其它平台基本适用
部署Vaultwarden
▼先在文件总管创建目录文件夹

▼官方给的拉取docker镜像命令
docker pull vaultwarden/server:latest
docker run -d --name vaultwarden -v /vw-data/:/data/ -p 80:80 vaultwarden/server:latest
▼我们改动一下,通过Docker Compose,用YAML代码进行创建。框架如下:
version: "3"
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
ports:
- "8000:80" # 左侧端口号自行修改
environment: # 自定义环境变量,见下文
-
-
-
volumes:
- "/share/Data/Vaultwarden/data:/data" # 文件总管中创建的文件目录
restart: unless-stopped
▼environment下的可加选项非常多,可以点击环境变量进行查看(巨多,且大部分是全局变量),根据咱们自己的需求增减(看不懂可以用翻译工具)。

▼一些比较推荐加入的变量:
- DOMAIN=https://vw.domain.tld:8443 # 与Vaultwarden关联的域名,反代非标准443端口,记得端口号也加上
- LOGIN_RATELIMIT_MAX_BURST=10 # 登录/两步验证尝试中的最大请求次数
- LOGIN_RATELIMIT_SECONDS=60 # 在限制登录次数前,同一IP的登录请求间隔(秒)
- ADMIN_RATELIMIT_MAX_BURST=5 # 同上,对于admin账户的请求次数限制
- ADMIN_RATELIMIT_SECONDS=60 # 同上,对于admin账户限制请求间隔(秒)
- ADMIN_SESSION_LIFETIME=20 # admin账户会话持续时间
- ADMIN_TOKEN=8vshhgPaC------5ejR9ZbPjR # 管理界面令牌,若不设置管理面板将被禁用
- SERVER_ADMIN_EMAIL=xxxx@xx.com # 邮箱
- SENDS_ALLOWED=true # 控制是否允许用户创建Bitwarden sends
- SIGNUPS_ALLOWED=true # 控制新用户是否可以未受邀请注册 true/false
- SIGNUPS_DOMAINS_WHITELIST=example.com,example.net,example.org
# 即使上面设置为false,本条用户仍可注册(域名间以,间隔)
- INVITATIONS_ALLOWED=true # 允许邀请注册
- WEBSOCKET_ENABLED=falese # 通知
- WEB_VAULT_ENABLED=true # 创建admin账户后建议修改为false,进行重建以防止未授权访问
- EMERGENCY_ACCESS_ALLOWED=true # 控制用户是否可以启用紧急访问其账户的权限
▼关于ADMIN_TOKEN打开ssh工具进入后台,输入openssl rand -base64 48敲下回车即可获得。
R/UOsOwoblCljgthWuNwbkPOLaeeIu/3ju4dGgsaytSaC8m/Ez7/94kdFOfDnD4V

▼我最终确定的部署代码如下,咱们可以按需调整
version: '3'
services:
vaultwarden:
container_name: vaultwarden
image: vaultwarden/server:latest
ports:
- "8787:80"
environment:
- DOMAIN=https://secret.xxx.love:8881 # 这里记得改
- ADMIN_TOKEN=R/UOsOwoblCljgthWuNwbkPOLaeeIu/3ju4dGgsaytSaC8m/Ez7/94kdFOfDnD4V # 密码存好
- LOGIN_RATELIMIT_MAX_BURST=10
- LOGIN_RATELIMIT_SECONDS=60
- ADMIN_RATELIMIT_MAX_BURST=10
- ADMIN_RATELIMIT_SECONDS=60
- ADMIN_SESSION_LIFETIME=20
- SENDS_ALLOWED=true
- EMERGENCY_ACCESS_ALLOWED=true
- WEB_VAULT_ENABLED=true
- SIGNUPS_ALLOWED=true # 后面可改成 false,禁止新用户注册
volumes:
- "/share/Data/Vaultwarden/data:/data"
restart: unless-stopped
▼打开Container Station,点击左侧【应用程序】,开始创建

启用Vaultwarden
▼打开Web界面,网址栏先输入:NAS_IP:端口,进入Vaultwarden登录页面,点击创建账户

▼这密码要求也挺硬,不强制同时大小写,但必须够12字符,痛苦啊

▲大红色的失败警示框,咱们还是做反代去吧
反向代理
▼打开Lucky,进行反代设置,对于操作过程不熟悉的朋友可以先看这篇
▼有了前面的基础,后续配置新服务,仅需点击左侧菜单的【Web服务】,然后点击右侧的【编辑】,新增一条子规则即可

▼点击【添加Web服务子规则】

▼填写内容如下
子规则名称随意填
web服务类型选择反向代理
前端域名/地址填写自定二级域名,与上文部署命令绑定的一致,我这里为 secret.xxx.love
后端地址填写本地NAS服务访问地址,我这里为 http://192.168.xxx.xxx:8787
BasicAuth认证,作用是登陆服务前再加一道账户密码验证,看需求开启,个人更建议部署完之后启用两步验证

▲完事儿之后,点击右下角【修改】
▼搞定之后,就可以正常访问并使用完整功能

▼通过https访问,账户成功创建

下面开始登陆看看体验如何!
Vaultwarden使用体验
▼输入域名:监听端口号,成功登陆进来,和 Bitwarden 没啥太大差别

▼自用的朋友可以直接回头把容器停掉,然后修改环境变量,更新容器
- SIGNUPS_ALLOWED=true # 改为false,禁止注册
▼操作完毕后点击右上角,选择【获取应用】

▼可以看到支持多系统平台,浏览器插件并且支持移动端,可以说全适配吧

▲先挑个常用的谷歌浏览器进行演示,点击对应的图标,安装好浏览器扩展
▼点击它,按下图所示,选择【自托管】

▼输入我们的服务器URL,点击【保存】

▼用刚刚创建账户密码登陆即可

▼目前没有导入密码,是空白页面

▼作为演示,访问我的NAS,会看到提示询问是否保存密码,是否启用自动填充,还可以选择保存位置(因为自用所以就不创建文件夹啦,心细的朋友可以自行单独分区);如果是支付密码等高价值密码,建议选择【从不】

▼密码已经保存,无论扩展程序还是后台都会立刻同步

▼我们还可以手动添加项目

▼如果想要完美匹配,很多账密还得我们自定义规则,否则很多二级域名服务都会像下图这样。

▲毕竟www.baidu.com和pan.baidu.com一般来说共用账号;不过Vaultwarden会给出列表,比常规浏览器自带的好用些
▼另外可以设置验证,谷歌和Edge都有类似防护机制

▼通过docker部署,默认是高级会员啦

▼接下来试试从Edge导出密码文件,转移到Vaultwarden。先导出密码文件

▼按照下面操作,点击【导入数据】
导入目的地默认就好
文件夹创建与否看咱们心情
文件格式,会有很多选项,Edge浏览器可选择Chrome(csv),基于 Chromium 的浏览器,包括 Opera、Microsoft Edge (Chromium)、Brave 和 Vivaldi等都可选择该项
要导入的文件即为刚刚从Edge导出的,导入完毕后建议立即删除

导出密码库文件支持三种格式 .json .csv .json(Encrypted)
▼导入成功,是我多此一举了,容器本身会自动区分创建文件夹

▼移动端操作类似,点击左图的【登陆到】,输入URL并保存,进行登录即可

▼ios稍微多几步,密码选项勾选上,就能在safari或其它浏览器使用,也支持自动填充

⚠️最后还有一个,就是填写环境变量的时候,咱们生成过一个长密码
- ADMIN_TOKEN=8vshhgPaC------5ejR9ZbPjR
▼Web的地址后面加一个admin,然后回车

▼将密码输入并回车即可进入(忘记的话可以查看yml配置),上文提到的关闭注册,也可以在基础设置中更改。个人使用基本很少涉及到下面这些功能,有更进阶需求就请小伙伴们自行研究吧~


总结
Vaultwarden的优点:全平台,超轻量、免费且开源;除了PC在移动端体验也不错,支持多种双重验证、自动填充功能;自带密码泄露检测,适应大部分 APP,支持自定义字段、正则匹配网址、自定义图标,并且会根据网址或 APP 自动获取 ico,语言适配也做得不错。
另外部署过后,通过Vaultwarden把所有平台密码进行汇总,后期继续将Vaultwarden作为主力工具,咱们可定期将密码库导出并备份,就算服务器突然崩溃,仅需重新搭建再导入~崩几个也不怕
本篇到这儿就结束啦,欢迎各位评论区留言交流;后续我也会定期分享NAS使用经验以及好用、好玩的Docker项目,喜欢的朋友记得点赞、收藏、关注
咱们下期再见!

Nicolo
校验提示文案
我就是cy
校验提示文案
jack228
校验提示文案
冯致富
就像打开 QQ 等一类软件,现在系统自带的密码管理是可以自动输入账密的
校验提示文案
jack228
[2024-05-24 00:41:41.940][vaultwarden][ERROR] No persistent volume!
########################################################################################
# It looks like you did not configure a persistent volume! #
# This will result in permanent data loss when the container is removed true` #
########################################################################################
进SSH,复制上面的设置下么?
校验提示文案
打油诗
校验提示文案
浮生不得闲
校验提示文案
小AI有梦想
校验提示文案
jack228
########################################################################################
# It looks like you did not configure a persistent volume! #
# This will result in permanent data loss when the container is removed true` #
########################################################################################
校验提示文案
jack228
校验提示文案
小AI有梦想
校验提示文案
浮生不得闲
校验提示文案
jack228
校验提示文案
jack228
########################################################################################
# It looks like you did not configure a persistent volume! #
# This will result in permanent data loss when the container is removed true` #
########################################################################################
校验提示文案
jack228
[2024-05-24 00:41:41.940][vaultwarden][ERROR] No persistent volume!
########################################################################################
# It looks like you did not configure a persistent volume! #
# This will result in permanent data loss when the container is removed true` #
########################################################################################
进SSH,复制上面的设置下么?
校验提示文案
冯致富
就像打开 QQ 等一类软件,现在系统自带的密码管理是可以自动输入账密的
校验提示文案
jack228
校验提示文案
我就是cy
校验提示文案
Nicolo
校验提示文案
打油诗
校验提示文案