跳过正文
  1. Dockers/

VaultWarden升级/BW客户端降级: Bitwarden客户端/插件不能登录VaultWarden的几种解决方法

·1574 字·
Blog Docker Vaultwarden Bitwarden
Aoidayo
作者
Aoidayo
懒人
目录

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的历史页面下载旧版本的客户端/插件

这些服务端上破坏性的变更导致之前的老版本客户端无法使用,这还是挺蛋疼的,可以选择留一份过去版本的客户端。

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的话,可以降级客户端使用。

相关文章

Python算法项目 容器化
·585 字
Blog Linux Docker

0