Kokomi经验站

转载--Vaultwarden 1.37.1 修复 Bitwarden 浏览器插件登录”意外错误”——自部署完全指南

2026/08/05
4
0

8月初,在外工作时突然发现插件端Bitwarden不能用了,查了服务器与网站运行状态都没问题。原因是旧版Vaultwarden与新版Bitwarden插件,版本更新数据不兼容导致无法解析。更新Vaultwarden服务端即可。

成功解决bitwarden能登陆,网页端,手机端正常,Send传输功能正常,但是不显示数据内容的问题。在此感谢原作者。

原帖地址:Vaultwarden 1.37.1 修复 Bitwarden 浏览器插件登录"意外错误"——自部署完全指南 - Hecady


一、问题现象

1234 字

6 分钟

自部署 Vaultwarden 的同学,这两年大概率踩过一个坑:Bitwarden 官方浏览器插件登录自托管服务时,弹出” 发生意外错误”, 但服务端日志一切正常

我最近把 Vaultwarden 升级到 1.37.1 之后,这个问题彻底没了。这篇文章把整个排查过程、根本原因、完整修法一次性整理出来,顺带把宝塔反代必加的 WebSocket 配置也一起写上,免得你走我走过的弯路。

  • Vaultwarden 容器启动正常,docker logs 看到 Rocket has launched from http://0.0.0.0:80

  • 宝塔反代 + SSL 一切正常,浏览器访问 web vault 没问题

  • 但是:Bitwarden 官方浏览器插件 (Chrome / Edge / Firefox) 填好自托管地址后,登录弹” 发生意外错误”

  • 移动端 App、桌面客户端一般能登,问题集中在浏览器插件


二、根本原因

从 2024 年开始,Bitwarden 官方客户端 (尤其是浏览器插件) 逐步加入了客户端签名验证 (RSA key fingerprint)新版本 API 字段。老版本 Vaultwarden (尤其是 1.30.0 之前的) 对这部分协议支持不全,登录流程走到签名校验那一步就崩了。

但客户端把所有” 看不懂” 的错误都统一显示成 “An unexpected error has occurred” / “发生意外错误”, 真正的报错得在服务端日志里看。

结论:Vaultwarden 必须升到 1.30.0 以上,推荐直接用 1.37.1(2025 年最新稳定版)。


三、完整修法

方案 A: 用 docker run (单容器,简单)

# 1. 停旧容器(数据卷保留,密码不会丢)
docker stop vaultwarden
docker rm vaultwarden
​
# 2. 拉最新镜像
docker pull vaultwarden/server:latest
​
# 3. 启动新容器
docker run -d \
  --name vaultwarden \
  --restart unless-stopped \
  -e SIGNUPS_ALLOWED=true \
  -e DOMAIN=https://vw.your-domain.com \
  -v /www/dk_project/dk_app/bitwarden/data:/data \
  -p 127.0.0.1:3567:80 \
  vaultwarden/server:latest

参数说明:

  • SIGNUPS_ALLOWED=true: 临时开启注册,先注册自己的账号

  • DOMAIN: 必须填你真实访问的 https 域名,填错会触发 Mixed Content

  • 127.0.0.1:3567:80: 只绑本地,通过宝塔反代对外,更安全

方案 B: 用 docker compose (推荐,易维护)

/www/dk_project/dk_app/bitwarden/ 目录下新建 docker-compose.yml:

services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: unless-stopped
    environment:
      DOMAIN: "https://vw.your-domain.com"
      SIGNUPS_ALLOWED: "true"
    volumes:
      - /www/dk_project/dk_app/bitwarden/data:/data
    ports:
      - 127.0.0.1:3567:80

然后:

cd /www/dk_project/dk_app/bitwarden
docker compose up -d
docker compose logs -f vaultwarden

看到 Rocket has launched from http://0.0.0.0:80 就是起来了。

升级完成后,别忘了关闭注册

注册完自己的账号后,改 SIGNUPS_ALLOWEDfalse 并重启:

# docker run 方式
docker stop vaultwarden
docker rm vaultwarden
# 重新跑那条 docker run,把 -e SIGNUPS_ALLOWED=true 删掉
​
# docker compose 方式
sed -i 's/SIGNUPS_ALLOWED: "true"/SIGNUPS_ALLOWED: "false"/' docker-compose.yml
docker compose restart

四、宝塔反代 WebSocket 配置 (推荐加上)

有些同学升级完 Vaultwarden 仍然报” 意外错误”, 排除掉版本问题后,大概率是宝塔反代没把 WebSocket 路径代理过去。Bitwarden 客户端登录后需要长连 /notifications/hub 接收实时同步消息,断了就崩。

(我自己的反代没动,光升级镜像就恢复了,所以这个不是登录必须的;但加上它能让实时同步、多设备推送更稳。)

操作路径:宝塔面板 → 网站 → 你的站点 → 设置 → 反向代理 → 找到代理到 127.0.0.1:3567 的那条 → 点右侧 “配置文件” 按钮。

把里面的 location / { ... } 整段替换成:

# 主反代
location / {
    proxy_pass http://127.0.0.1:3567;
    proxy_http_version 1.1;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_redirect off;
    client_max_body_size 500M;   # 附件上传
}
​
# WebSocket 长连接(关键!)
location /notifications/hub {
    proxy_pass http://127.0.0.1:3567;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_read_timeout 3600s;
    proxy_send_timeout 3600s;
}

保存后宝塔自动 reload nginx。登录可能不会立刻有变化 (登录本身不一定依赖 WebSocket), 但加上之后,多设备实时同步会更稳。


五、其他常见错误速查表

错误现象

原因

修法

连接不上,超时

反代没配 / 防火墙挡

服务器 curl -I http://127.0.0.1:3567 测本地通不通

“您的连接不是私密连接”

SSL 证书不匹配 / 自签

宝塔 SSL 标签重新签发 Let’s Encrypt

“ERR_TOO_MANY_REDIRECTS”

Cloudflare SSL 模式选了 Flexible

CF 控制台 → SSL/TLS → 加密模式改 Full

“Mixed Content”

DOMAIN 环境变量填了 http://

改成 https://vw.your-domain.com 重启

“发生意外错误”(老 Vaultwarden)

版本不兼容新客户端

升级到 1.37.1

能登录,但实时同步断 / 推送收不到

反代没配 WebSocket

按本文第四节加 /notifications/hub 反代


六、客户端连接自托管服务

Vaultwarden 实现了 Bitwarden 官方客户端协议,所以:

  • 浏览器插件: 设置 → 自托管 → Server URL 填 https://vw.your-domain.com

  • 手机 App (iOS / Android): 设置 → 服务器 → 自托管 → 同上

  • 桌面客户端: 同浏览器插件

登录用的就是你在 web vault (https://vw.your-domain.com) 注册的账号密码,跟官方云端账号不通用


七、结语

自部署 Vaultwarden + 官方 Bitwarden 客户端,目前是密码管理自托管圈最成熟的方案。核心就两件事:

  1. 镜像版本跟上 (1.37.1 即可,别用 latest 以外的旧 tag)

  2. 反代 WebSocket 配上 (/notifications/hub 段)

踩过的坑都写在这里,希望帮你省几个小时。Have fun。


最后更新:2026-08-01・Vaultwarden 1.37.1・适用于 Bitwarden 全平台客户端