群晖 NAS 部署 Vaultwarden(自托管密码管理器)
部署时间:2026-09-18 环境:群晖 DSM + Container Manager Vaultwarden 版本:latest(Rust 实现的 Bitwarden 服务端)
一、Vaultwarden 是什么
Vaultwarden 是 Bitwarden(主流密码管理器)的开源轻量服务端,用 Rust 编写。部署在自己的 NAS 上,所有密码数据存在本地,不经过第三方云。
核心功能:
- 浏览器插件自动填充网站密码
- 手机 App 随时查看
- 端到端加密,即使 NAS 被攻破也看不到密码内容
- 支持存登录、支付卡、身份证、安全笔记、SSH 密钥等
二、部署前准备
目录结构(必须先在 File Station 建好)
/volume1/docker/vaultwarden/ ← 项目根目录
└── data/ ← 数据目录(空文件夹即可)
Vaultwarden 自带 SQLite 数据库,不需要 PostgreSQL/Redis,比 DTK 简单很多。
三、Container Manager 创建项目
- Container Manager → 项目 → 新增
- 项目名称:
vaultwarden - 路径选:
/docker/vaultwarden - 选"使用 docker-compose.yml 手动编排"
- 粘贴:
version: "3.8"
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: always
volumes:
- ./data:/data
environment:
- TZ=Asia/Shanghai
- WEBSOCKET_ENABLED=true
- SIGNUPS_ALLOWED=true
- ADMIN_TOKEN=your_strong_admin_password
ports:
- "8282:80"
- 完成,等待镜像拉取和容器启动
配置说明
| 配置项 | 作用 |
|---|---|
./data:/data |
存密码数据库(SQLite 文件) |
WEBSOCKET_ENABLED=true |
多设备实时同步 |
SIGNUPS_ALLOWED=true |
允许注册(首次注册后改 false) |
ADMIN_TOKEN |
管理后台密码,自己设一个 |
8282:80 |
内网访问端口 |
四、首次访问问题:浏览器加密限制
现象
浏览器打开 http://NAS_IP:8282,页面白屏,提示"你没有使用安全上下文,而 Subtle Crypto API 是运行所需的"。
原因
现代浏览器(Chrome/Edge)只允许在 HTTPS 或 localhost 下使用加密 API,HTTP 内网地址被限制。
临时解决(内网访问)
- 地址栏输入
edge://flags/#unsafely-treat-insecure-origin-as-secure - 在输入框填
http://NAS_IP:8282 - 右边下拉改为 "已启用"
- 重启浏览器
这只是临时方案。正式使用必须配 HTTPS,见下面反向代理部分。
五、配置 HTTPS(必须)
新版 Bitwarden 客户端(包括手机 App)强制要求 HTTPS,HTTP 连注册都做不了。
5.1 群晖反向代理
- 控制面板 → 登录门户 → 高级 → 反向代理服务器 → 新增
- 来源:
- 协议:HTTPS
- 主机名:
yournas.synology.me(群晖 DDNS 域名) - 端口:
8443
- 目的地:
- 协议:HTTP
- 主机名:
NAS_IP - 端口:
8282
- 保存后编辑该规则 → 证书 标签
- 选择群晖已有的 Synology DDNS 证书(群晖自动签的,不需要 Let's Encrypt)
注意:国内网络申请 Let's Encrypt 证书经常超时失败,直接用群晖自带的 DDNS 证书最省事。
5.2 路由器端口映射
在路由器上加一条:
| 外部端口 | 内部 IP | 内部端口 |
|---|---|---|
| 8443 | NAS_IP | 8443 |
群晖 DDNS 证书是签给
yournas.synology.me的,所以客户端必须用这个域名访问,不能用自定义域名,否则证书不匹配。
六、注册账号
浏览器打开 https://yournas.synology.me:8443:
- 点 创建账户
- 邮箱:填你的邮箱
- 名称:随便填
- 主密码:设一个强密码并牢记(忘了就找不回任何密码)
- 注册成功
七、浏览器插件配置
- Edge/Chrome 扩展商店安装 Bitwarden Password Manager(官方那个)
- 点插件图标 → 齿轮设置
- 找到 "自托管环境" → 服务器 URL 填:
https://yournas.synology.me:8443
- 保存后用注册的邮箱和主密码登录
八、手机 App 配置
- 应用商店安装 Bitwarden 官方 App
- 打开后选 "自托管"
- 服务器地址填:
https://yournas.synology.me:8443
- 用注册的邮箱和主密码登录
九、日常使用
- 自动填充:打开登录页面,插件自动弹出,点一下填好
- 自动保存:登录新网站时,插件自动问"是否保存"
- 生成强密码:注册新网站时用插件自带的生成器
- 手机端:App 解锁后随时查密码,浏览器中也能自动填充
十、部署完成后的安全建议
- 关闭注册:编辑 docker-compose.yml,把
SIGNUPS_ALLOWED=true改为false,然后删除项目重新创建(群晖改 compose 不会自动重建容器) - 备份数据:定期备份
/volume1/docker/vaultwarden/data/目录 - 管理后台:访问
https://yournas.synology.me:8443/admin,用 ADMIN_TOKEN 密码登录
十一、踩坑记录
坑 1:HTTP 无法注册,报 "Insecure URL not allowed"
现象:浏览器或手机 App 通过 HTTP 访问,注册时直接报错。
原因:新版 Bitwarden 客户端强制要求 HTTPS。
解决:通过群晖反向代理配置 HTTPS,用群晖自带 DDNS 证书。
坑 2:Let's Encrypt 证书申请超时
现象:群晖申请 Let's Encrypt 证书一直打转,最后报错"命令运行失败"。
原因:国内网络访问 Let's Encrypt API 不稳定。
解决:不折腾 Let's Encrypt,直接用群晖自带的 Synology DDNS 证书,客户端改用 DDNS 域名访问。
坑 3:路由器端口映射内部端口填错
现象:反向代理规则监听 HTTPS 8443,但路由器映射写成了 外部 8443 → 内部 80。
解决:路由器端口映射的内部端口必须和反向代理来源端口一致,即 外部 8443 → 内部 8443。
坑 4:改了 compose 不生效
现象:改了 docker-compose.yml,容器行为没变。
原因:群晖 Container Manager 不会自动重建容器。
解决:删除项目后重新创建。
坑 5:浏览器 flag 设置了还是不生效
现象:设置了 unsafely-treat-insecure-origin-as-secure,但加密错误还在。
原因:右边下拉框没改成"已启用"。
解决:确认 flag 状态为"已启用",然后重启浏览器。
十二、访问方式汇总
| 场景 | 地址 |
|---|---|
| 内网直接访问(需浏览器 flag) | http://NAS_IP:8282 |
| 内网 HTTPS | https://yournas.synology.me:8443 |
| 外网 HTTPS | https://yournas.synology.me:8443 |
| 管理后台 | https://yournas.synology.me:8443/admin |