Vaultwarden(Docker)怎么查看版本并升级?一套可复制的更新流程
以 Docker Compose 部署为例,讲清 Vaultwarden 如何查看当前版本、pull 最新镜像、重建容器完成升级,并处理 compose version 过时与 ADMIN_TOKEN 明文告警。
- 域名、主机名、真实目录、容器 ID、时间戳、Token/密钥等信息均已替换为示例值。
- 命令输出为示例输出,仅用于帮助你识别成功/失败状态。
Vaultwarden(非官方 Bitwarden 服务端实现)用 Docker/Compose 部署后,升级维护的核心目标只有三个:
- 版本可核对(升级前后都能确认版本变化)
- 数据不丢(卷挂载目录可备份、可恢复)
- 变更可回滚(至少能退回到上一个镜像/配置)
下面按一套“可复制”的流程来做。
0)前提:确认你有 Docker 权限
先试:
docker ps- 能输出容器列表:权限 OK
- 若报
permission denied:用sudo或切 root
常用(切 root):
sudo -i1)进入 compose 目录
找到放着 docker-compose.yml 的目录(示例:/opt/vaultwarden):
cd /opt/vaultwardenls一般会看到:
docker-compose.ymlvw-data/(Vaultwarden 数据目录,示例名)
你的实际数据目录以 compose 里
volumes:挂载为准。
2)查看 Vaultwarden 与 Web-Vault 版本(最准确)
直接在容器里查:
docker exec -it vaultwarden /vaultwarden --version示例输出:
Vaultwarden 1.35.3Web-Vault 2026.1.1Vaultwarden:后端服务版本Web-Vault:网页端静态资源版本
3)(强烈建议)升级前备份数据目录
如果你是这样挂载的(示意):
volumes: - ./vw-data:/data那么在 compose 目录下打包备份即可:
tar -czf vw-data-backup-$(date +%F).tgz vw-data升级通常很稳,但备份是“低成本保险”。
4)拉取最新镜像
如果你的 compose 使用 latest:
services: vaultwarden: image: vaultwarden/server:latest那么更新时拉取最新镜像:
docker compose pull常见提示:version is obsolete
你可能会看到:
the attribute `version` is obsolete, it will be ignored这表示 Docker Compose v2 不再需要顶层 version: "3",会忽略它。
- 不影响运行
- 想消除提示:把
docker-compose.yml顶层的version: "3"删除即可
5)用新镜像重建并后台启动
docker compose up -d如果输出里出现 Recreated / Started,通常表示已成功用新镜像重建。
6)验收:看日志 + 再查一次版本
看启动日志(示例取最后 50 行):
docker logs -n 50 vaultwarden很多版本会在启动 banner 里显示,例如:
Starting VaultwardenVersion 1.35.4再查一次版本确认:
docker exec -it vaultwarden /vaultwarden --version示例:
Vaultwarden 1.35.4Web-Vault 2026.1.17)(可选)清理旧镜像,释放磁盘
docker image prune -f这会清理“未被引用”的镜像层,不影响正在运行的容器。
8)安全加固:把 ADMIN_TOKEN 从明文改为 Argon2 哈希(推荐)
如果日志出现类似提示:
You are using a plain text ADMIN_TOKEN which is insecure.说明你在 compose 里配置了明文管理员 Token。建议改为 Argon2 PHC 哈希,降低配置泄露风险。
8.1 生成 Argon2 哈希
在服务器上执行(会提示你输入原始 token;不要把 token/哈希粘贴到公开场合):
docker exec -it vaultwarden /vaultwarden hash会输出形如:
$argon2id$v=19$m=65540,t=3,p=4$...$...8.2 替换 compose 里的 ADMIN_TOKEN
把(示意):
environment: ADMIN_TOKEN: "你的明文token"替换为:
environment: ADMIN_TOKEN: "$argon2id$..."然后应用变更:
docker compose up -d9)最小化“升级 SOP”(你可以贴到运维手册里)
cd /opt/vaultwarden
docker exec -it vaultwarden /vaultwarden --version
tar -czf vw-data-backup-$(date +%F).tgz vw-data
docker compose pulldocker compose up -d
docker logs -n 50 vaultwardendocker exec -it vaultwarden /vaultwarden --version10)常见故障:升级后突然打不开(ERR_TIMED_OUT / 只看到 SYN 没有 SYN-ACK)
这一类问题非常像应用挂了,但实际上经常是「云厂商的安全 sysctl 配置 + Docker 端口转发」组合导致的网络层问题。
典型症状:
- 浏览器访问
https://pass.example.com直接 ERR_TIMED_OUT - 服务器本机
curl -I https://127.0.0.1 -H 'Host: pass.example.com'能返回 200(说明 nginx/Vaultwarden 正常) - 抓包只看到外网
SYN进来,但服务器没有回SYN-ACK
10.1 快速定位思路(建议按顺序走)
- 确认容器与端口监听
docker psss -lntp | egrep ':80|:443'- 确认本机(内网 IP)443 正常(以云主机网卡 IP 为例)
curl -kIv https://10.0.0.2 --connect-timeout 3- 确认 DNAT 是否在工作(外网访问一次后看计数器是否增长)
nft list chain ip nat DOCKER如果 tcp dport 443 ... dnat to 172.xx.xx.xx:443 的 counter packets 会增长,说明外网请求已到达并进入 DNAT。
- 抓包判断是否回 SYN-ACK
tcpdump -ni <nic> 'tcp port 443 and (tcp[tcpflags] & (tcp-syn|tcp-ack) != 0)'只有 SYN 没有 SYN-ACK,基本就是系统层转发/过滤问题。
10.2 云主机常见根因:ip_forward=0
不少云镜像会通过安全策略把 IPv4 转发关掉(例如存在类似 60-*-network-security.conf 的 sysctl 文件),而 Docker 的端口转发/桥接依赖它。
检查:
sysctl net.ipv4.ip_forward如果输出是 net.ipv4.ip_forward = 0,就会出现「DNAT 计数器涨,但流量进不了容器网桥」的情况,外网访问自然超时。
临时修复(立刻生效,无需重启):
sysctl -w net.ipv4.ip_forward=1如果系统没有 /proc/sys/net/bridge/* 相关项,说明 br_netfilter 未加载;可按需加载并启用:
modprobe br_netfiltersysctl -w net.bridge.bridge-nf-call-iptables=1永久化(推荐)
cat >/etc/sysctl.d/99-docker-forwarding.conf <<'EOF'net.ipv4.ip_forward=1net.bridge.bridge-nf-call-iptables=1EOF
sysctl --system以及让模块开机自动加载:
cat >/etc/modules-load.d/br_netfilter.conf <<'EOF'br_netfilterEOF注意:以上为公开教程示例。实际环境请结合你的安全策略评估是否需要同时启用
bridge-nf-call-ip6tables等选项。
结语
Vaultwarden 的 Docker 升级并不复杂,关键在于:
- 升级前后都要 核对版本
- 数据卷要 可备份
- 对外发布文档要 打码(域名/主机名/目录/Token 全部不要出现)
如果你希望更可控的升级策略(避免 latest 带来不可预期变更),建议把镜像 tag 固定为明确版本号,并在测试环境验证后再滚动到生产。
觉得这篇文章怎么样?
点个赞,让更多人看到!
相关文章
OpenClaw 怎么安装和更新?curl脚本、npm、Docker 全对比
一文讲清 OpenClaw 的 4 种安装方式:官方脚本、npm 全局、源码、容器;并给出对应更新、回滚与排障策略。
OpenClaw 安装、卸载与更新:一篇带你学会
一篇讲清 OpenClaw 的安装、卸载与更新流程,适合新手快速上手,并附常见问题与排查思路。
SSH 连不上服务器时,几种中转方案的实战总结
总结灰云直连、Cloudflare Tunnel、SSH 跳板机与 Tailscale/WireGuard 几种常见 SSH 中转方案,结合一次本地网络受限的真实排障过程,帮助快速判断该选哪条路径。
从开发到分享:Docker + GitHub 完整部署指南(以 Domain Checker 为例)
详细讲解如何开发一个 Docker 应用,推送到 Docker Hub,上传到 GitHub,以及别人如何快速使用你的项目。包含完整的代码示例和最佳实践。

评论区