群晖 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 创建项目

  1. Container Manager → 项目 → 新增
  2. 项目名称:vaultwarden
  3. 路径选:/docker/vaultwarden
  4. 选"使用 docker-compose.yml 手动编排"
  5. 粘贴:
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"
  1. 完成,等待镜像拉取和容器启动

配置说明

配置项 作用
./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 内网地址被限制。

临时解决(内网访问)

  1. 地址栏输入 edge://flags/#unsafely-treat-insecure-origin-as-secure
  2. 在输入框填 http://NAS_IP:8282
  3. 右边下拉改为 "已启用"
  4. 重启浏览器

这只是临时方案。正式使用必须配 HTTPS,见下面反向代理部分。


五、配置 HTTPS(必须)

新版 Bitwarden 客户端(包括手机 App)强制要求 HTTPS,HTTP 连注册都做不了。

5.1 群晖反向代理

  1. 控制面板 → 登录门户 → 高级 → 反向代理服务器 → 新增
  2. 来源:
    • 协议:HTTPS
    • 主机名:yournas.synology.me(群晖 DDNS 域名)
    • 端口:8443
  3. 目的地:
    • 协议:HTTP
    • 主机名:NAS_IP
    • 端口:8282
  4. 保存后编辑该规则 → 证书 标签
  5. 选择群晖已有的 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

  1. 创建账户
  2. 邮箱:填你的邮箱
  3. 名称:随便填
  4. 主密码:设一个强密码并牢记(忘了就找不回任何密码)
  5. 注册成功

七、浏览器插件配置

  1. Edge/Chrome 扩展商店安装 Bitwarden Password Manager(官方那个)
  2. 点插件图标 → 齿轮设置
  3. 找到 "自托管环境" → 服务器 URL 填:
https://yournas.synology.me:8443
  1. 保存后用注册的邮箱和主密码登录

八、手机 App 配置

  1. 应用商店安装 Bitwarden 官方 App
  2. 打开后选 "自托管"
  3. 服务器地址填:
https://yournas.synology.me:8443
  1. 用注册的邮箱和主密码登录

九、日常使用

  • 自动填充:打开登录页面,插件自动弹出,点一下填好
  • 自动保存:登录新网站时,插件自动问"是否保存"
  • 生成强密码:注册新网站时用插件自带的生成器
  • 手机端:App 解锁后随时查密码,浏览器中也能自动填充

十、部署完成后的安全建议

  1. 关闭注册:编辑 docker-compose.yml,把 SIGNUPS_ALLOWED=true 改为 false,然后删除项目重新创建(群晖改 compose 不会自动重建容器)
  2. 备份数据:定期备份 /volume1/docker/vaultwarden/data/ 目录
  3. 管理后台:访问 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