Docker系列 搭建密码管理应用bitwarden
本文最后更新于 376 天前,如有失效请评论区留言。

本博客由ZGOCLOUD大力赞助!如何更快地访问本站?有需要可加电报群获得更多帮助。本博客用什么VPS?创作不易,请支持苯苯!推荐购买本博客的VIP喔,10元/年即可畅享所有VIP专属内容!

前言

根据Docker系列 两大神器NPM和ddns-go的安装的教程,前面我们已经在VPS中安装好了NPM和(或)ddns-go。所以https网络环境的平台基本上已经搭建好了。现在我们就要开始安装各种酷炫的Docker应用了!

那么,应该先安装哪一个呢?

我觉得应该是bitwarden,它是一个密码管理工具。相信这6个字已经是一个很强大的理由去让你安装它了!

有多少人长期被密码相关问题困扰。比如忘记了自己不常登陆的网站的密码;用了弱密码被泄露;定期改密码的痛苦(有些人直接摆烂了)。

依稀记得当时是看司波图的视频,有一个玩家展示了他所用的docker应用,其中有一个人就用了bitwarden。当时弹幕好多人说这是个密码管理器,所以就有了一点了解。

后来在B站看到优雅地盲目战斗BraveRu大佬的视频https://www.bilibili.com/video/BV12i4y1F7YP,忽然觉得自己很需要一个这样的东西。所以就去了解怎么玩了。不过,本博文安装的方法不像他的那么复杂,因为我们使用NPM嘛!他的方法也是可行的,我已经测试过了。

如果你用了bitwarden之后,你只需要记住1个主密码,其它的密码在登陆时自动填充。另外,可能有人会问:如何安全地生成一个主密码呢?你可以看看这个文章,它描述了一种叫做Diceware的方法,它可以生成随机且方便记忆的密码。有人也整理了Diceware中文密码表。

bitwarden还有一个密码生成器,给你们感受下:

image-20220421171828610

这密码看着就很安全!

最重要的,bitwarden有手机客户端喔!你也可以在手机上使用密码自动填充,不过这需要在系统中进行一些设置。是不是很爽呀 :grinning:

这才是密码管理的终极形态!集安全与方便于一身!

我们去Vaultwarden的GithubRepo上面了解一下它吧!

Vaultwarden is an unofficial Bitwarden server implementation written in Rust. It is compatible with the official Bitwarden clients, and is ideal for self-hosted deployments where running the official resource-heavy service is undesirable.
Vaultwarden is targeted towards individuals, families, and smaller organizations. Development of features that are mainly useful to larger organizations (e.g., single sign-on, directory syncing, etc.) is not a priority, though high-quality PRs that implement such features would be welcome.

原来的bitwarden镜像已经更名为Vaultwarden,也就是本文即将安装的应用。旧的bitwarden镜像还可以用,只是不再更新和维护了。所以它并不是bitwarden的官方镜像。虽然不是bitwarden官方的镜像,但Github上15.6k的Star也让我感觉它的安全性还是有保障的,毕竟其中应该有不少大佬会把关。这个项目还有一个netDada的赞助商!有钱支持的话,软件的维护工作应该会比较顺利。2022年9月6号,开源密码管理器 Bitwarden 宣布完成 1 亿美元融资,PSG 领投、Battery Ventures 参投,似乎有向加密领域发展,感觉势头不错。不管怎样,我已经决定使用它了!

值得一提的是,bitwarden只能在https下使用。这毕竟是一个密码管理工具嘛,怎么能在http下运行!

另外,如果你在意的话,可以选择在自己的NAS而不是VPS上托管bitwarden。不过经过Linux基础 个人VPS安全的相关设置,我们的个人VPS其实也蛮安全了。况且密码的调用是需要主密码的,别人就算获得了你的原始文件,没有主密码还是无法查看。况且,bitwarden还有许多安全措施,比如登陆邮件提醒,甚至是二次验证。总之就是非常安全了!

下面看看怎么安装它吧 :smirk:

测试环境

系统:Linux openmediavault 5.4.174-2-pve #1 SMP PVE 5.4.174-2 (Thu, 10 Mar 2022 15:58:44 +0100) x86_64 GNU/Linux
Docker: Docker version 20.10.14, build a224086
docker-compose: Docker Compose version v2.4.1

在后面的演示中,我经常会出现<XXX>这种演示写法。实际使用时,尖括号是不需要写的!另外,我使用的bitwarden.exampledomain.com[email protected]都是演示用的,实际使用时要改为自己的网址。切记切记!

准备工作

按需修改工作目录:

work=~/docker/bitwarden && mkdir -p $work && cd $work

按需修改端口,开启防火墙:

sudo ufw allow 3667/tcp comment 'bitwarden' && sudo ufw reload

提前拉取镜像:

docker pull vaultwarden/server:latest

获取随机token:

openssl rand -base64 48 # 生成<token>。要记住。

通过dnss-go或登陆域名托管商的后台完成域名<bitwarden.exampledomain.com>的DNS解析工作。

配置yml文件

不了解docker的小伙伴请先看:《Docker系列 配置Docker全局环境》;《Docker系列 了解Docker Compose的配置文件》。

我们使用root的权限来运行脚本。如果你用了非root用户,加sudo即可。

修改文件$work/docker-compose.yml的内容如下,参考:Raspberry Pi Home Server Episode 8: BitWardenRS – Password Manager with Remote Access

这种安装方式,bitwarden的注册是邀请制,并不能随意注册。这样感觉更加的安全!

version: "2"

services:
  app:
    image: vaultwarden/server:latest
    environment:
      - SERVER_ADMIN_EMAIL=<[email protected]> # 按需修改
      - SIGNUPS_ALLOWED=false
      - INVITATIONS_ALLOWED=true
      - WEBSOCKET_ENABLED=true
      - ADMIN_TOKEN=<token> # 按需修改
    volumes:
      - ./app:/data/
    ports:
      - 3667:80 # 按需修改
    restart: unless-stopped
    networks:
      - default

networks:
  default:
    name: bitwarden

上线服务:

docker-compose up -d

经过我的测试,如果你外挂了/data/这个文件夹,你是完全可以恢复bitwarden的数据的。你们自己也可以试一下。或者有大佬测试过也可以和我反馈,看是不是可以完全恢复。

另外,我们还可以给/data/文件夹添加root的保护。像这样:

# 将文件夹改为root所有
sudo chown -R root:root $work/app

# 设置只有root用户可以使用。其它用户甚至连看都不行
sudo chmod -R 700 $work/app # 600应该也可以

这样,就可以保证一定的安全。

此外,我在实际使用的时候,我会将docker-compose.yml的内容放在其它隐秘之处,然后运行完docker-compose up -d后就删除docker-compose.yml。这样可以最大限度地保护ADMIN_TOKEN不被窃取。但不推荐大家用(主要是怕你们把内容搞丢了)。

NPM设置

不了解Nginx Proxy Manager用法的小伙伴,请看《Docker系列 两大神器NPM和ddns-go的安装》。

访问http://<local.ip>:3667观察应用上线的情况。先不要登陆bitwarden

然后,进入Nginx proxy manager(NPM)的后台。

用NPM申请SSL证书。国内一般要使用DNS challege的方式进行。或者你可以用泛域名的证书,就不用再重复申请。

为域名<bitwarden.exampledomain.com>添加一个反向代理DESTINATION为http://172.17.0.1:3667。强制SSL和接受https/2。如图所示:

image-20220421173212475

多数Docker应用这样设置就可以成功了,bitwarden也不例外。简单吧!

服务端设置

邀请用户

访问https://<bitwarden.exampledomain.com>:<NPM的443端口>/admin,输入token进入后台。如果你用的是443端口,直接不需要端口号也可以访问:https://<bitwarden.exampledomain.com>/admin

General settings中设置URL为(按443的端口不同):https://<bitwarden.exampledomain.com>:<NPM的443端口>或者https://<bitwarden.exampledomain.com>

设置SMTP Email Settings,类似下图(演示用的是139邮箱):

image-20220410230539434

QQ邮箱也是可以的,类似这样:

image-20221219145926747

Users中给自己的邮件(比如<[email protected]>)发送邀请邮件。注册帐号使用。具体有一些邮件验证啥的,我也记不清了,只记得蛮简单的。不懂的话欢迎留言评论了!

image-20220422102541669

下面这个invite User就是可以邀请用户。有玩PT站那味了!

image-20220422102642981

主要页面

进入服务端后,界面大致是这样的:

image-20220421173635826

image-20220421173651669

image-20220421173709288

image-20220421173746814

image-20220422090221865

这些功能都很实用。自己玩一下。有不懂的评论留言吧!

客户端使用

初始化设置

使用时一般用Chrom浏览器插件或者Apple APP的方式使用,而不是用服务器端。

说实话,按bitwarden的默认设置,这个软件是比较难用的。所以要改一些设置。

这里给出我的基本设置:

image-20220421173534661

设置从不就是你使用的时候可以不用经常输入主密码解锁。好像也有1小时之类的选项,不过你退出浏览器后就不生效了。反正个人电脑和手机一般只有自己用嘛!如果你有一段时间不用电脑,并且其它人可能会用到你的帐户,你可以设置更加严格的超时规则。

另外一个比较重要的,就是在其它--选项中,要设置主机的URI匹配检测而不是默认的基础域。不然,像192.168.1.111:1234192.168.1.111:1235这两个地址会被认为是同一个。但实际上,它们通常对应不同的应用。刚刚开始用的时候,着实困扰了一小阵子!

至于两步验证,给大家看一下bitwarden的提示:

启用两步登录可能会将您永久锁定在 Bitwarden 帐户之外。如果您无法使用常规的两步登录提供程序(例如您丢失了设备),则可以使用恢复代码访问您的帐户。如果您失去对您帐户的访问,Bitwarden 支持也无法帮助您。我们建议您记下或打印恢复代码,并将其妥善保管。

其实两步验证+恢复代码也是一个不错的方案!支持的服务有:

image-20220422085815642

不过我觉得也不用搞得这么复杂,简单点就行!实际上,对个人用户而言,定期改密码使用强密码对于大多数情况而言已经足够安全了。

选用Chrome

Microsoft Edge浏览器也不错,可以直接使用Chrome插件。

这里对于Chrome我要多说一些。其实国内很多浏览器,比如360安全浏览器,都是基于chrome的内核。我个人觉得,如果你有一个google帐户的话,使用chrome浏览器是最佳的选择。我们来看一下最新的https://gs.statcounter.com/的数据:

image-20220422081358618

记得选软件的有一个简单而有效的标准是什么吗?就是群众的眼睛是雪亮的。这时你知道要使用什么浏览器了吧!而且我个人使用而言,Chrome的使用体验也是最好的,特别是它的插件拓展。

这里我只演示chrome怎么操作,其它浏览器自己可以摸索一下!

导入Chrome密码

在使用bitwarden之前,相信很多小伙伴和我一样,都是用chrome之类的浏览器来管理自己的密码(这种情况下,一般你已经有一个Google帐户)。现在有了bitwarden,我们就不需要它们啦!下面我就以chrome为例讲一下如何进行密码的迁移。

打开chrome://settings/passwords,界面如下图。我们可以将提示保存密码自动登录都关闭了:

image-20220422075815476

在这个界面,可以导出密码:

image-20220422080536350

或者你也可以访问:https://passwords.google.com/options?ep=1。界面如下。我们可以导出密码。随后输入帐号密码验证后,会下载一个Google Passwords.csv的文件:

image-20220422080059735

我们可以用WPS之类的工具打开Google Passwords.csv文件看一下它都有些啥:

image-20220422080345389

所以你的帐户和密码信息是以明文的方式保存在Google Passwords.csv!所以用完之后一定要彻底删除Google Passwords.csv这个文件喔!

密码导入bitwarden

打开工具--导入数据。你自己看图吧,不懂的评论留言:

image-20220422081732427

导入完成后,我还建议大家去公开密码报告里了解一下自己的帐户密码的泄露情况。已泄露密码是在已知的数据泄露中被发现的密码,这些数据已由黑客公开发布或在暗网上销售。我这里截取一下我自己的某些网站的泄露情况:

image-20220422082403872

我估计大家的情况也是大同小异,哈哈!那些密码越弱的,泄露的次数就越多呢!我觉得在上述网站,如果没有二次验证机制(就是登陆还需要手机验证码)的保护,并且有心人要攻击你,你的帐户基本上已经没有任何安全性可言。大家有什么想法,欢迎评论留言!或者也可以秀一下自己以前的泄露次数。

所以,记得要按需修改密码喔!可以先改一些重要的、关键的、常用的网站的密码,比如google、百度、网盘之类的。其它的不太重要的以后看情况再慢慢地改。慢慢地过渡嘛!

标签页

一般情况下,如果你在bitwarden里保存了一个帐户和密码,访问对应的网站时,bitwarden插件会显示一个数字,像这样:

image-20220422075447595

在标签页中,有一个东西值得一说,就是左上角的符号:

image-20220422085934193

点一下它,它可以打开一个bitwarden专属的小窗口。如果你要编辑一个帐户信息,这个方法会比较方便。不然,它就只能填充而不能修改帐户信息。我也是过了好久才发现这个用法( ̄△ ̄;)

建议通过bitwarden的密码生成器生成新的强密码。这个真的好用!而且它是在你自己的网络里,我觉得应该比在线的密码生成器要安全一些。

image-20220422101103176

假设你现在改好了一个密码,按一下这个标志就可以检查它有没有被泄露过。如图:

image-20220422090539959

还有一个小功能,我觉得也挺有用的,就是安全笔记

image-20220422091220687

可以用来记录一些token之类的非登陆用信息。

还有文件夹功能对密码分类。我觉得是蛮好用的功能了!

其它使用细节,有疑问的评论留言吧!欢迎交流了!

删除chrome保存的密码

建议非常熟悉bitwarden的用法后再去删除原来托管在chrome上的密码。我当时是一开始用bitwarden就已经删除了chrome的密码。不然很容易造成冲突。

做法如下:

  • 打开谷歌浏览器,访问:chrome://settings/clearBrowserData 。 这将打开一个弹出窗口,可让您清除浏览数据。
  • 确保将时间范围设置为“ 时间不限” 。这样才可以删除全部的密码喔!
  • 单击“ 密码”旁边的复选框,以及要删除的所有其他数据。
  • 单击清除数据以删除所有密码和所选数据。

image-20220422100520979

防止Google Chrome浏览器提示保存密码

  • 打开谷歌浏览器,网址框输入:chrome://settings/passwords
  • 单击窗口右上角的三点菜单。
  • 取消提示保存密码检查密码

image-20220422100437795

注意事项

如果你曾经为bitwarden更换域名,记得去后台更新URL为新域名,否则bitwardent保存的附件将无法正常下载

msedge_CzpiK66Hgn

小结

总之,有了bitwarden,从此密码管理不用愁了!是不是有一种发现新大陆的感觉,哈哈!

bitwarden的安装是比较简单的。难就难在,我们要如何切实地了解、使用和维护。大家需要非常熟悉它的使用。真的,花几个小时甚至是1天时间去了解,我也不觉得浪费。毕竟,bitwarden保存的是你最秘密的东西——你所有的互联网帐户和密码

如果你觉得很难的话,那我建议你先测试一下它,而不是马上让它来托管你的所有密码。一步步来!

老实说,我不知道将bitwarden托管在VPS中是不是足够安全。在Reddit上,类似的问题也有不少:Should I self host bitwarden?。不过一般而言,大家都会强调,如果你的VPS足够安全的话,存放bitwarden也是可行的。

我的bitwarden是放在自己的本地NAS的,通过raidz2的磁盘阵列来保障数据安全。通过duplicati进行加密备份至阿里云和Google Drive。(后来嫌麻烦放VPS里了)

Docker版的duplicati安装我会在下一回讲解!敬请期待!

参考

扩展阅读

---------------
完结,撒花!如果您点一下广告,可以养活苯苯😍😍😍

感谢ZGOCLOUD友情赞助 (ฅ´ω`ฅ) 本博客基于m2w创作。版权声明:除特殊说明,博客文章均为Bensz原创,依据CC BY-SA 4.0许可证进行授权,转载请附上出处链接及本声明。VIP内容严禁转载!由于可能会成为AI模型(如chatGPT)的训练样本,本博客禁止将AI自动生成内容作为文章上传(特别声明时除外)。如有需要,请至学习地图系统学习本博客的教程。加Telegram群可获得更多帮助喔! | 博客订阅:RSS | 广告招租请留言 | 博客VPS | 致谢渺软公益CDN |

评论

  1. tuu
    Windows Chrome 119.0.0.0
    5 月前
    2023-11-28 20:04:53

    感觉没必要删除docker-compose.yml,因为app文件夹里的config.json里一样明文储存admin_token

    • 博主
      tuu
      Windows Edge 119.0.0.0
      5 月前
      2023-11-29 0:03:43

      学习了,有空我了解下 (~ ̄▽ ̄)~

  2. karthrand
    Linux Edge 117.0.2045.2
    8 月前
    2023-8-28 12:36:53

    我也按照这个文档在nas自建了服务器,但是安卓的bitwarden很奇怪,使用浏览器登陆网站时,选择了主机URI检测不生效(设置和项目里都设置了),只能选基础域才能匹配到

    • 博主
      karthrand
      Windows Edge 116.0.1938.62
      8 月前
      2023-8-31 19:54:06

      安卓没测试过。其实IOS我也没怎么测试过,我一般都是在PC浏览器里使用。 手机只是偶尔用一下,都是直接copy。

  3. Windows Chrome 113.0.0.0
    12 月前
    2023-5-07 10:02:21

    很详细。因为必须https,当时免费的frp经常问题。放弃不用了。用的lastpass,lastpass之前可以台式机移动端切换。今年过年。回老家。想着密码可能会用,像之前一样登陆了lastpass的移动端。过完年回来,发现台式机无法登陆了。一查,lastpass官方说登陆移动端后就不能在登陆台式机。移动端不能导出密码。台式机可以登陆。导出的密码是csv不完整版本。不能一键导入到新的lastpass里面。郁闷。然后开始keepass enpass 重启bitwarden,发现还是lastpass最好用。最后重新注册了lastpass账号,固定台式机用。定期导出密码备份到keepass enpass bitwarden 用了官方的。不用维护了。支持坚果云的webdav 群晖webdav

    • 博主
      万有引力
      Windows Edge 112.0.1722.68
      12 月前
      2023-5-07 10:04:29

      bitwarden只是比较流行的方案中的一种吧,个人觉得还行。 至于其它应用还没尝试过。 这种东西固定一种就好了,只要稳定、可备份、安全即可

  4. ROCAN
    Windows Chrome 101.0.0.0
    2 年前
    2022-5-26 21:24:19

    test

    • 博主
      ROCAN
      Windows Chrome 100.0.4896.127
      2 年前
      2022-5-26 21:27:06

      ok 所以说是正常的嘛!谢谢评论哈ヾ(≧∇≦*)ゝ

      • ROCAN
        Bensz
        Windows Chrome 101.0.0.0
        2 年前
        2022-5-26 21:28:27

        哈哈,感谢分享!

  5. 大佬
    Windows Chrome 99.0.4844.51
    2 年前
    2022-4-17 7:48:46

    测试评论:这也太帅了吧(~ ̄▽ ̄)~

    • 博主
      大佬
      Windows Chrome 99.0.4844.51
      2 年前
      2022-4-17 7:49:30

      谢谢夸奖,我会继续努力嗒(~ ̄▽ ̄)~

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇