NodeWarden - 把 Bitwarden 搬上 Cloudflare Workers,彻底告别服务器

原始链接在: NodeWarden - 把 Bitwarden 搬上 Cloudflare Workers,彻底告别服务器 - 小众软件

Bitwarden 是少数客户端与服务器端都开源的密码管理系统,支持完整自托管部署。@Appinn
但有人更进一步:直接把服务器端运行在 Cloudflare Workers 上——也就是说,你连 VPS 都可以省了。


部署 NodeWarden 之后的效果,就是在无服务器的情况下,也能在手机、电脑上使用 Bitwarden 客户端来保存密码了,支持自动登陆、二次验证之类的功能。

目录

NodeWarden 与 Bitwarden 区别

能力项 Bitwarden NodeWarden 说明
单用户保管库(登录/笔记/卡片/身份) 基于Cloudflare D1
文件夹 / 收藏 常用管理能力可用
全量同步 /api/sync 已做兼容与性能优化
附件上传/下载 基于 Cloudflare R2
导入功能 覆盖常见导入路径
网站图标代理 通过 /icons/{hostname}/icon.png
passkey、TOTP 官方需要会员,我们的不需要
多用户 NodeWarden 定位单用户
组织/集合/成员权限 没必要实现
登录 2FA(TOTP/WebAuthn/Duo/Email) ⚠️ 部分支持 仅支持 TOTP(通过 TOTP_SECRET
SSO / SCIM / 企业目录 没必要实现
Send 基本没人用
紧急访问 没必要实现
管理后台 / 计费订阅 纯免费
推送通知完整链路 没必要实现

必要条件

  1. 你需要有一个 Cloudflare 账号(必须有一个域名和信用卡)
  2. 一个 GitHub 账号

具体部署步骤

fork

    一键部署

    在你自己的 GitHub 页面上,有一个按钮:

    这个步骤需要在 Cloudflare 中绑定 GitHub 账号,根据页面提示即可。

    设置 NodeWarden

    部署成功之后,Cloudflare 会提供一个临时地址,类似 1nodewarden.apipnn.workers.dev,用浏览器打开它,如果打不开,就绑定一个你自己的二级域名。

    根据页面提示,一步一步进行即可。

    这个步骤主要有:

    1. 设置 JWT_SECRET
    2. 设置自动更新 GitHub
    3. 设置主账号与密码
    4. 设置启用主账号的二次验证

    最后一步成功之后,还能选择彻底隐藏这个设置页面:

    设置完成。

    在客户端登录

    打开你的 Bitwarden 官方客户端,在登录的地方选择自托管,并输入 服务器 URL

    之后,在使用刚刚设置页面设置的用户名和密码(如果设置了二次验证,还会要求输入验证码),就可以正常登录啦:

    趁假期最后一天,快去试试吧。


    原文:https://www.appinn.com/nodewarden/

    5 个赞

    有意思喵,没有域名懒的试喵

    等我py个域名再说

    之前好像有一个 .eu 的域名可以免费申请嗷,不过本虎填写的申请,过了好几个月都没有收到邮件嗷。

    1 个赞

    已经有Vaultwarden,不过也套了Cloudflare,改天试试

    感觉推送通知完整链路还是需要的吧,多端设备即时同步好像依赖这一块?

    很有意思,昨天立刻折腾了一下,发现设置完之后不再能打开我的worker.dev网站了,这是正常的行为吗?

    不支持2FA的话,对我来说这种自部署的意义不大…
    看了下,支持TOTP,那还行

    另外推荐一个类似的项目,也是运行在cf worker上的bitwarden兼容服务器:GitHub - qaz741wsd856/warden-worker: A Bitwarden-compatible server for Cloudflare Workers

    https://linux.do/t/topic/1232950

    1 个赞

    哪个?

    eu.org 的域名,网上可以找到一些申请教程。

    目前手机端和浏览器扩展无法主动同步,只能注销后重新登录下载,windows端倒是可以同步

    就没有人给他加上webdav同步功能的吗

    本身用 Cloudflare Workers 就是不想考虑服务器和存储的事情吧,如果要加 Webdav 的话又变成不伦不类的项目了,明明 CF 的存储就很可靠。

    靠谱也得备份啊,丢了就可怕了,这可是密码库啊

    不需要杞人忧天。另外,Bitwarden 客户端在设计的时候有考虑过你说的远端单点备份丢失的情况,此时分为两种情况:

    • 客户端登录状态为 已登录:进入设置页面验证主密码后导出数据即可。
    • 客户端登录状态为 已锁定:使用上次成功登录的主密码解锁,进入设置页面再次验证主密码后导出数据即可。

    上述两种情况都不需要与服务器发生任何交互,即使服务器已离线,也可正常完成主密码验证和数据导出流程,所以不用担心服务器失联=数据丢失的情况,数据会在客户端本地再存一份。

    另外,由于 Bitwarden 支持多客户端登录,所以如果设备/客户端特别多的话,可能有些不常用的客户端数据不是最新状态,需要离线导出的情况下尽量选择最近使用过的设备/客户端。

    以及,越多的已登录 Bitwarden 的设备就相当于越多的多点备份,如果设备都是经常使用的话,数据其实非常保险,意味着最新的数据在各个设备以及服务器上都有一份完整备份。


    如果希望验证我的上述说法,可以尝试:

    1. 锁定 Bitwarden 客户端账户(此时需要验证主密码解锁)
    2. 断开设备网络,并重启 Bitwarden 客户端甚至整个设备
    3. 在设备处于离线状态的情况下,尝试按照我说的方法进行数据导出

    如果能成功导出,则不必担心数据丢失的问题:你本地丢了有服务器顶着;服务器挂了有你各个设备的本地存档顶着;服务器和所有设备都同时炸了的话我建议找找自己的原因。

    1 个赞

    说实话挺有用的。
    不过免费版totp这点倒是有其他方案,比如vaultwarden可以在云端允许客户端显示totp,keyguard GitHub版本可以在客户端处免费看totp(因为储存totp也是免费的)

    passkey和totp也是同理

    这个我听说过。还以为你说的.eu是顶级域名。

    你说的并不是备份,为什么要把数据安全寄托在所谓安全机制上呢?3-2-1 原则这是多少教训总结出来的

    不过我看是d1数据库,让AI另外写一个workers备份就行,就是不知道要是出问题了还原是否能用

    如果你认为一定要是经自己之手配置出来的肉眼可见的文件落地才算备份的话,那我确实没办法。

    既然不相信 Bitwarden 官方客户端已有的安全机制,那么一个第三方 Bitwarden 服务端就算提供了数据自动备份到 WebDAV 的功能,你对其的置信度又能达到多少?

    如果你不信任 Bitwarden 官方客户端已有的多点灾备实现,那你应该上 GitHub 去对着相关代码提出质疑或者加以改进。

    另外,只要你同时在至少2个浏览器/设备上使用 Bitwarden,就已经符合 3-2-1 原则了:2个客户端上的数据备份+1个服务器上的数据备份=3个副本,客户端与服务器上的很明显是2个不同介质,客户端与服务器也同样互为1套异地灾备方案。


    另外,关于直接对 CF d1 数据库备份的想法,在便捷性上确实 ok,不过可靠性上不如自己从客户端导出数据,在这个项目的开头就有下面这样一段话:

    免责声明
    本项目仅供学习交流使用。我们不对任何数据丢失负责,强烈建议定期备份您的密码库。

    开发者建议备份的是密码库本体,而非这个项目衍生出来的数据库。

    因为我试过在服务端坏了,然后手机端输入密码并不能解锁,最后在网盘找到了一段时间手动备份一次的json临时还原的,所以不完全相信这个所谓的安全机制 多加一个webdav功能就多一个保险的地方