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 年最新稳定版)。
# 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: 只绑本地,通过宝塔反代对外,更安全
在 /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_ALLOWED 为 false 并重启:
# 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有些同学升级完 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), 但加上之后,多设备实时同步会更稳。
Vaultwarden 实现了 Bitwarden 官方客户端协议,所以:
浏览器插件: 设置 → 自托管 → Server URL 填 https://vw.your-domain.com
手机 App (iOS / Android): 设置 → 服务器 → 自托管 → 同上
桌面客户端: 同浏览器插件
登录用的就是你在 web vault (https://vw.your-domain.com) 注册的账号密码,跟官方云端账号不通用。
自部署 Vaultwarden + 官方 Bitwarden 客户端,目前是密码管理自托管圈最成熟的方案。核心就两件事:
镜像版本跟上 (1.37.1 即可,别用 latest 以外的旧 tag)
反代 WebSocket 配上 (/notifications/hub 段)
踩过的坑都写在这里,希望帮你省几个小时。Have fun。
最后更新:2026-08-01・Vaultwarden 1.37.1・适用于 Bitwarden 全平台客户端