群晖 Docker系列 搭建密码管理应用bitwarden

实用技巧 杨海雄 2周前 (04-28) 35次浏览 0个评论
本文章是 群晖玩法 系列 9 文章中的第 1 篇
文章目录[隐藏]

关键词:群晖玩法群晖Dokcer、Bitwarden

原来的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 还有许多安全措施,比如登陆邮件提醒,甚至是二次验证。总之就是非常安全了!

下面看看怎么安装它吧

配置 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 700work/app # 600 应该也可以

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

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

项目运行

在 container manager 中,运行上述 yam。

群晖 Docker系列 搭建密码管理应用bitwarden

群晖 Docker系列 搭建密码管理应用bitwarden

设置反向代理

  1. 进入群晖的 「控制面板」-「Synology 应用程序门户」-「反向代理服务器」 页面,如图添加一条 「反向代理服务器规则」。(「来源端口」 你自己定义,这里假如为 28080;「目的地端口」 对应上面配置容器参数步骤中设置的本地端口 8080)

群晖 Docker系列 搭建密码管理应用bitwarden

我是将黑群晖宿主机挂在 Openwrt 路由下,而 Openwrt 路由使用了 lucky插件做的动态域名解析与 ssl 配置。所以在 lucky 中将此域名转发到公网,实现了外网访问

  1. 进入群晖的 「控制面板」-「安全性-「证书」 页面,将你的域名证书文件和私钥文件导入群晖中。

群晖 Docker系列 搭建密码管理应用bitwarden

将 Lucky 配置的泛域名文件 .pem 和.crt,导入到群晖

  1. 使用 ssl 工具 生成中间证书文件,导入到手机(否则会报错)

群晖 Docker系列 搭建密码管理应用bitwarden

基本设置完成

主要页面

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

群晖 Docker系列 搭建密码管理应用bitwarden

群晖 Docker系列 搭建密码管理应用bitwarden

群晖 Docker系列 搭建密码管理应用bitwarden

群晖 Docker系列 搭建密码管理应用bitwarden

群晖 Docker系列 搭建密码管理应用bitwarden

客户端使用

初始化设置

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

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

这里给出我的基本设置:

群晖 Docker系列 搭建密码管理应用bitwarden

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

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

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

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

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

群晖 Docker系列 搭建密码管理应用bitwarden

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

选用 Chrome

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

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

群晖 Docker系列 搭建密码管理应用bitwarden

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

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

导入 Chrome 密码

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

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

群晖 Docker系列 搭建密码管理应用bitwarden

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

群晖 Docker系列 搭建密码管理应用bitwarden

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

群晖 Docker系列 搭建密码管理应用bitwarden

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

群晖 Docker系列 搭建密码管理应用bitwarden

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

密码导入 bitwarden

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

群晖 Docker系列 搭建密码管理应用bitwarden

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

群晖 Docker系列 搭建密码管理应用bitwarden

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

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

标签页

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

群晖 Docker系列 搭建密码管理应用bitwarden

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

群晖 Docker系列 搭建密码管理应用bitwarden

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

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

群晖 Docker系列 搭建密码管理应用bitwarden

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

群晖 Docker系列 搭建密码管理应用bitwarden

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

群晖 Docker系列 搭建密码管理应用bitwarden

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

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

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

删除 chrome 保存的密码

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

做法如下:

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

群晖 Docker系列 搭建密码管理应用bitwarden

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

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

群晖 Docker系列 搭建密码管理应用bitwarden

注意事项

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

群晖 Docker系列 搭建密码管理应用bitwarden

疑难解答

PC 客户端登录提示 Failed to fetch 错误

我遇到的是由于系统代理设置错误引起:Web 端登录、Chrome 扩展、苹果和安卓客户端使用一切正常,但 PC 客户端登录(以及注册)时提示 Failed to fetch,试过删除账户、重新启动容器、容器操作中使用 「清除」、重装 app 等,都不能解决。

网上找到的只有一篇英文文章 “Failed to fetch” errors on desktop app,然而并没有解决问题。

当时的解决方法:查看群晖及容器都没有相关的日志记录,猜测是没有和服务端建立连接,最后测试发现和 Windows 系统代理设置有关。打开 「Windows 设置-网络和 Internet-代理」,关闭使用设置脚本即可。

安卓客户端登录时提示 「发生错误 There is a problem connecting to the server」

目前还不清楚安卓客户端出现这个错误的具体原因。

我遇到的是 Web 端登录、Chrome 扩展、PC 和苹果客户端等使用一切正常,仅安卓客户端登录提示此错误。

当时的解决方法:经过无数测试和搜索参考,最后将 docker/bitwarden/ssl 中的证书文件 cert.pem 命名为 fullchain.pem 后解决

具体参考 bitwarden_rs wikiEnabling HTTPS 中的这段文字:

Due to what is likely a certificate validation bug in Android, you need to make sure that your certificate includes the full chain of trust. In the case of certbot, this means using fullchain.pem instead of cert.pem.

安卓客户端登陆提示 「发生错误。Exception message:java.security.cert.CertPathValidatorException:Trust anchor for certification path not found.」

这个错误是因为 Bitwarden 的证书文件中缺少中间证书导致安卓系统的证书校验异常(虽然不影响其他平台)。

检查你的证书链是否完整:https://www.digicert.com/help/(支持带端口检测)

解决方法有两种

  • Bitwarden 服务端使用带中间证书的证书文件
  • 或者单独将你域名的中间证书安装到安卓手机中(参考链接

安卓手机安装中间证书的方法

以我的三星 S8 手机为例。将文件名包含 root 字符的 crt 证书文件传到手机中,「设置」 里找到 「生物识别和安全性」-「其他安全设置」-「从设备存储空间安装」,选择刚才上传到手机中的证书,自定义一个证书名,「使用于」 选择 「VPN and apps」。

iOS 客户端可以登录,但同步的时候提示 「无法同步」

这个一般是因为连接不稳定或速度慢导致,多试几次就可以了

错误信息收集及整理

测试并整理了一下各客户端在某些条件下出现的错误信息,以方便出错时定位故障:

不启用 SSL 并使用 http URL(或 IP):

  • Chrome:「发生错误。Cannot read property ‘importKey’ of null」
  • Microsoft EDGE:正常
  • Firefox:正常
  • Chrome 扩展:正常
  • PC 客户端:正常
  • 安卓客户端:正常
  • iOS 客户端:「发生错误。There is a problem connecting to the server」

不启用 SSL 并使用 https URL:

  • Chrome:「无法访问此网站。ERR_CONNECTION_CLOSED」
  • Microsoft EDGE:「无法安全地连接到此页面」
  • Firefox:「建立安全连接失败」
  • Chrome 扩展:「发生错误。Failed to fetch」
  • PC 客户端:「发生错误。Failed to fetch」
  • 安卓客户端:「发生错误。Exception message:Connection closed by peer」
  • iOS 客户端:「发生错误。There is a problem connecting to the server」

启用 SSL 并使用 http URL:

  • Chrome:「该网页无法正常运作。ERR_EMPTY_RESPONSE」
  • Microsoft EDGE:正常
  • Firefox:「呃…找不到此网站。」
  • Chrome 扩展:「发生错误。Failed to fetch」
  • PC 客户端:「发生错误。Failed to fetch」
  • 安卓客户端:「发生错误。Exception message:unexpected end of stream om com.android.okhttp.Address@8b73cc45」
  • iOS 客户端:「发生错误。There is a problem connecting to the server」

启用 SSL 并使用 https URL 但证书不匹配:

  • Chrome:正常
  • Microsoft EDGE:正常
  • Firefox:正常
  • Chrome 扩展:「发生错误。Failed to fetch」
  • PC 客户端:「发生错误。Failed to fetch」
  • 安卓客户端:「发生错误。Exception message:Hostnamexx.com not verified:certificate…」
  • iOS 客户端:「发生错误。There is a problem connecting to the server」

容器停止或填写了错误的环境 URL 或网络不通:

  • Chrome:「无法访问此网站。ERR_CONNECTION_TIMED_OUT」
  • Microsoft EDGE:「嗯… 无法访问此页面」
  • Firefox:连接超时
  • Chrome 扩展:「发生错误。Failed to fetch」 或 「发生意外错误」 或 「同步失败」
  • PC 客户端:「发生错误。Failed to fetch」 或 「发生意外错误」 或 「同步失败」
  • 安卓客户端:「发生错误。Exception message:Connection closed by peer」 或 「发生错误」 或 「同步失败」
  • iOS 客户端:「发生错误。There is a problem connecting to the server」

其他

备份密码库数据

强烈建议你在做重大操作(如更新 Bitwarden 容器)前先备份你的密码库!!

备份方法有两种:

  1. 客户端程序或网页端里 「导出密码库」(注意:导出操作无法备份文件附件
  2. 备份整个 data 文件夹(这里建议使用群晖中 Hyper Backup 套件来自动增量备份到坚果云)

20200219 我在未备份密码库的情况下做了更新 Bitwarden 容器的操作,然后所有客户端都无法同步了,即使删除 Bitwarden 容器后重新配置也无法解决。幸好 PC 客户端未退出登录,导出密码库再重新导入后才找回了所有密码。

20200402 又遇到同样的故障。

小结

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

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

系列导航群晖 Docker 系列 利用 Navidrome 自建个人音乐服务平台 >>

杨海雄 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:群晖 Docker系列 搭建密码管理应用bitwarden
喜欢 (0)

您必须 登录 才能发表评论!