Pre 为什么要升级 #
新版本bitwarden client登录旧版本vaultwarden和web-vault的兼容性问题。
我的vaultwarden版本是
❯ docker logs vaultwarden | head -n 50
/--------------------------------------------------------------------\
| Starting Vaultwarden |
| Version 1.34.1 |
|--------------------------------------------------------------------|
❯ docker exec vaultwarden /vaultwarden --version
Vaultwarden 1.34.1
Web-Vault 2025.5.0
换用别的电脑/手机 安装bitwarden ios/android/windows/macos客户端 或者 浏览器插件 ,发现都在登录时出现意外错误。
很难绷的一个问题,刚开始以为是本地服务器上的证书自动化工具certbot向let’s encrypt申请的的ssl证书缺少中间证书的问题,经过验证后发现fullchain中的确是两层证书。
后续发现是vaultwarden服务端不适配最新bitwarden客户端的问题,解决方法有两种:一种是降级bitwarden官方客户端,另外一种是升级vaultwarden的服务端。
A 客户端降级 #
可以在bitwarden的历史页面下载旧版本的客户端/插件
-
https://github.com/bitwarden/clients/releases
tags:browser下载浏览器插件,解压后拖入浏览器的插件安装页面。tags:desktop桌面客户端
-
vaultwarden 1.34.1 可以适配
这些服务端上破坏性的变更导致之前的老版本客户端无法使用,这还是挺蛋疼的,可以选择留一份过去版本的客户端。
bitwarden经常对「安卓客户端/macos客户端/windows客户端/浏览器插件」和「server服务端」作修改,导致新版本的bitwarden客户端完全连接不上旧版本的vaultwarden。
对于旧版本的浏览器扩展,可以在~~~~crx4chrome~~~~中下载旧版。对于旧版本的浏览器客户端或者扩展,可在bitwarden的历史页面下载。另外一种方式是 重新修改并部署新版本的vaultwarden。
B 服务端升级 #
B.1 升级之前 #
升级之前确认
- 原版本
- vw的数据保存位置
- 上一版的docker-compose
VaultWarden版本
❯ docker exec vaultwarden /vaultwarden --version
Vaultwarden 1.34.1
Web-Vault 2025.5.0
确认数据保存位置
docker inspect vaultwarden \
--format '{{range .Mounts}}{{println .Type .Source "->" .Destination}}{{end}}'
部署目录的tree显示:
❯ pwd && tree -L 2
/home/dockers/vaultwarden
.
├── vw-compose.yml
├── vw-data
│ ├── attachments
│ ├── db.sqlite3
│ ├── db.sqlite3-shm
│ ├── db.sqlite3-wal
│ ├── icon_cache
│ ├── rsa_key.pem
│ ├── sends
│ └── tmp
docker-compose:
❯ cat vw-compose.yml
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: always
environment:
DOMAIN: "https://yoursite" # 使用反向代理时必填;您的域名;Vaultwarden 需要知道它是 https 才能正确处理附件
SIGNUPS_ALLOWED: "false" # 创建账户后,使用 "false" 停用此选项,这样就不会有陌生人注册了
volumes:
- ./vw-data:/data # : 前面的路径可以修改
ports:
- 11001:80 # 您可以将 11001 替换为您喜欢的端口
B.2 升级 #
- 1、确认compose识别正常
- 2、停止vaultwarden
- 3、备份数据和配置
- 4、修改compose,固定版本,方便下次升级
- 5、拉取镜像、启动
1、确认compose识别正常
cd /home/dockers/vaultwarden
确认 Compose 识别正常:
docker compose -f vw-compose.yml config
2、停止容器
sqlite文件一览:
db.sqlite3
db.sqlite3-shm
db.sqlite3-wal
说明 SQLite 正在使用 WAL 模式。为了获得一致的数据库备份,建议先停止容器:
docker compose -f vw-compose.yml stop vaultwarden
确认已停止:
docker ps -a --filter name=vaultwarden
状态应该是 Exited。
3、备份数据和配置
执行:
mkdir -p backups
sudo tar -czpf \
"backups/vaultwarden-$(date +%Y%m%d-%H%M%S).tar.gz" \
vw-compose.yml vw-data
检查备份:
ls -lh backups
再简单验证压缩包:
tar -tzf "$(ls -t backups/vaultwarden-*.tar.gz | head -n 1)" | head -n 30
应该能够看到:
vw-compose.yml
vw-data/
vw-data/db.sqlite3
vw-data/attachments/
vw-data/sends/
vw-data/rsa_key.pem
为了保险,也可以生成校验值:
sha256sum "$(ls -t backups/vaultwarden-*.tar.gz | head -n 1)"
4、修改Compose并固定版本
不建议继续使用:
image: vaultwarden/server:latest
因为以后很难确认每次具体升级到了什么版本,也不方便回滚。
修改为:
services:
vaultwarden:
image: vaultwarden/server:1.36.0
container_name: vaultwarden
restart: always
environment:
DOMAIN: "https://yoursite"
SIGNUPS_ALLOWED: "false"
volumes:
- ./vw-data:/data
ports:
- "11001:80"
可以直接执行:
sed -i \
's#image: vaultwarden/server:latest#image: vaultwarden/server:1.36.0#' \
vw-compose.yml
检查修改结果:
cat vw-compose.yml
验证语法:
docker compose -f vw-compose.yml config
5、拉取并启动
拉取镜像:
docker compose -f vw-compose.yml pull vaultwarden
重新创建容器:
docker compose -f vw-compose.yml up -d vaultwarden
注意,up -d 会替换旧容器,但继续挂载原来的:
/home/dockers/vaultwarden/vw-data
因此数据不会被清空。
6、验证安装
查看日志
docker compose -f vw-compose.yml logs --tail=200 vaultwarden
docker compose -f vw-compose.yml logs -f vaultwarden
docker exec vaultwarden /vaultwarden --version
重新安装新版本后,就可以正常使用bitwarden的各种最新客户端了。
一般vaultwarden都是追bitwarden更新的,如果新版官方客户端不能适配最新vaultwarden的话,可以降级客户端使用。