Loading... # 关于Vaultwarden Bitwarden 是一款开源的密码管理工具,与 SafeInCloud、1Password 等类似。其官方服务器端采用 .Net 开发,浏览器插件和桌面应用使用 Javascript 编写,而移动应用则由 C# 实现。该系统的数据库采用 mssql,由于其占用内存较大,部署此系统的机器至少需要 3GB 的内存。 不过好消息是,有人使用 Rust 实现了 Bitwarden 并且提供了 Docker 镜像,降低了对机器配置的要求,并且官方版本中部分收费的功能,在这个开源实现中可以免费使用。 本文便使用 vaultwarden 来进行配置 Bitwarden。 # Docker-compose部署 `docker-compose.yml`文件 ```yaml services: vaultwarden: image: vaultwarden/server container_name: vaultwarden environment: - WEBSOCKET_ENABLED=true - SIGNUPS_ALLOWED=true ports: - 8092:80 - 3012:3012 volumes: - ./data:/data restart: always ``` 其中: - `- SIGNUPS_ALLOWED=true`可以先打开,等注册好用户之后,再关闭,即:`- SIGNUPS_ALLOWED=false` - `8092`端口映射80端口,是web界面端口;`3012`端口是用来ws的端口,这里建议要设置,原因后面说 - 持久化容器卷映射到 `./data`目录下,需要的时候直接打包带走 之后,一键跑起来: ```bash docker-compose up -d ``` # 反向代理 推荐使用Nginx Proxy Manger,前期有一片文章是关于npm配置的 <div class="preview"> <div class="post-inser post box-shadow-wrap-normal"> <a href="https://imgki.com/archives/602.html" target="_blank" class="post_inser_a no-external-link no-underline-link"> <div class="inner-image bg" style="background-image: url(https://imgki.com/usr/uploads/2021/12/3505369428.jpg);background-size: cover;"></div> <div class="inner-content" > <p class="inser-title">非常方便的Nginx反向代理项目nginx-proxy-manager</p> <div class="inster-summary text-muted"> 平时在自己的服务器上跑了很多服务,而且是用习惯了docker跑,对外开放的端口都是自设,为了统一管理域名+SSL,... </div> </div> </a> <!-- .inner-content #####--> </div> <!-- .post-inser ####--> </div> ### 配置代理 增加一个反向代理,同时开启`Websockets`和`Block Common Exploits` ![chrome_j00jAFREa9.png](https://imgki.com/usr/uploads/2023/11/2457666618.png) ### 开启SSL 同时建议开启SSL,npm里面开启ssl非常简单。 ![chrome_aI9ZoD90wn.png](https://imgki.com/usr/uploads/2023/11/2566523756.png) # 开启实时同步 点击`Custom locations`这里设置的目的主要是为了启用 WebSockets 通知,以实现自动同步密码的目的。否则你会发现Vaultwarden同步的间隔非常慢。 > 对应的[官方页面地址](https://www.nodeseek.com/jump?to=https%3A%2F%2Fgithub.com%2Fdani-garcia%2Fvaultwarden%2Fwiki%2FEnabling-WebSocket-notifications): > WebSocket 通知用于将发生的一些相关事件通告给 Bitwarden 的浏览器和桌面客户端,例如密码数据库中有条目被修改了或被删除了。收到通知后,客户端可以采取适当的操作,例如重新获取修改的条目,或从其本地数据库副本中移除已删除的条目。在此通知方案中,Bitwarden 客户端与 Bitwarden 服务器(在本案例中为 Vaultwarden)建立持久的 WebSocket 连接。每当服务器有需要报告的事件时,它都会通过此持久连接将其发送给客户端。 > 请注意,WebSocket 通知不适用于移动 (Android/iOS) Bitwarden 客户端。这些客户端使用原生推送通知服务(Android 为 FCM,iOS 为 APN)。Vaultwarden 目前不支持向移动客户端推送通知。 > 要启用 WebSockets 通知,必须使用外部反向代理,并且必须执行以下配置操作: > 将 `/notifications/hub` 端点路由到 `WebSocket` 服务器,默认在 `3012` 端口,确保传递 `Connection` 和 `Upgrade` 头。(提示:可以使用 `WEBSOCKET_PORT` 变量来更改端口) > 将所有其他(包括 `/notifications/hub/negotiate`)路由到标准 `Rocket` 服务器,默认在 `80` 端口上。 > 如果使用 `Docker`,则可能还需要使用 `-p` 标识来映射两个端口。 具体配置就照着下图的超就行。 ![chrome_5vrUY64vhT.png](https://imgki.com/usr/uploads/2023/11/194842217.png) Last modification:December 5, 2023 © Allow specification reprint Like 如果觉得我的文章对你有用,请随意赞赏
3 comments
文档说明从 Vaultwarden 的 v1.29.0 开始,默认情况下启用了 WebSocket。以前的版本需要反向代理,因为 WebSockets 运行在与默认 HTTPS 端口不同的端口上。
旧版实现仍可在 v1.29.0 中使用,以避免在更新时出现故障。但将来会移除。
是的,我安装新版没有特意配置3012端口,仅仅配置了WEBSOCKET_ENABLED=true,客户端之间秒同步
哦 我看看 但是这个ws问题困扰了我好久