入门教程

NAS 部署开源密码管理器 Vaultwarden:告别 1Password 订阅

你是不是还在为密码管理软件的订阅费发愁?1Password 每年 36 美元,Bitwarden 高级版也要 10 美元一年。更麻烦的是,这些服务的密码数据库都存在别人服务器上,虽然加密了,但心里总有点不踏实。其实,你家里那台 NAS 完全可以变成一个私有密码管理中心——部署一个开源的 Vaultwarden(Bitwarden 的 Rust 轻量重写版),功能几乎和官方版一模一样,但完全由你自己掌控,而且几乎不占资源。

为什么选择 Vaultwarden 而不是 Bitwarden 官方服务器

Bitwarden 官方提供了服务器端程序,但它是用 .NET 写的,对内存和 CPU 要求很高,在 NAS 这种低功耗设备上跑起来很吃力。Vaultwarden 用 Rust 重写了服务端,单核 CPU 和 512MB 内存就能流畅运行,特别适合群晖、威联通、绿联等主流 NAS 的 Docker 环境。

更重要的是,Vaultwarden 保留了 Bitwarden 客户端的所有核心功能:端到端 AES-256 加密、跨平台客户端(Windows、macOS、iOS、Android、浏览器插件)、自动填充、密码生成器、组织共享等。你甚至可以把浏览器插件直接指向自己的服务器地址,体验和官方版完全一致。

第一步:在 NAS 上用 Docker 部署 Vaultwarden

以群晖 DSM 为例,打开 Docker 套件,在注册表中搜索 vaultwarden/server,选择最新版本下载。如果你用的是威联通或绿联,操作类似。

下载完成后,点击启动容器,进行以下关键配置:

  1. 端口映射:容器端口 80 映射到 NAS 的某个空闲端口,比如 8087。
  2. 数据卷:将容器内的 /data 目录映射到 NAS 的共享文件夹,比如 /docker/vaultwarden,这样密码数据库和附件会持久化保存。
  3. 环境变量:建议设置 ADMIN_TOKEN(用于访问管理后台的令牌),可以用 openssl rand -base64 48 生成一个随机串。

如果你习惯用 docker-compose,可以这样写:

version: '3'
services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: unless-stopped
    ports:
      - "8087:80"
    volumes:
      - /volume1/docker/vaultwarden:/data
    environment:
      - ADMIN_TOKEN=你的随机令牌
      - SIGNUPS_ALLOWED=true  # 首次注册后建议改为 false

启动后,在浏览器访问 http://你的NASIP:8087,就可以看到注册页面。先注册一个主账号,然后立刻把环境变量里的 SIGNUPS_ALLOWED 改成 false 并重启容器,防止别人蹭你的服务器。

第二步:配置 HTTPS 反向代理,实现远程安全访问

直接通过 IP 加端口访问,密码在传输过程中是明文,这在局域网内问题不大,但如果你需要在外面访问,就必须上 HTTPS。推荐用 NAS 自带的 Nginx 反向代理 + Let's Encrypt 证书。

以群晖为例,在控制面板中申请一个 DDNS 域名(比如 vault.synology.me),然后在「应用程序门户」-「反向代理」中新建规则:

  • 来源:HTTPS 端口 443,域名填你的 DDNS
  • 目的地:HTTP 端口 8087,IP 填 127.0.0.1

接着在「安全性」-「证书」中为这个域名申请 Let's Encrypt 证书。完成后,你就可以通过 https://vault.synology.me 安全访问了。

如果你用的是威联通,可以在 Container Station 中配置 Traefik 或 Caddy 作为反向代理,原理相同。

第三步:客户端配置与数据迁移

在手机或电脑上安装 Bitwarden 官方客户端(App 或浏览器插件),登录时点击右上角的设置图标,把服务器 URL 改成你的 Vaultwarden 地址,然后输入账号密码即可。

如果你之前用的是 1Password 或 Chrome 自带的密码管理,可以通过 Bitwarden 网页版的「工具」-「导入数据」功能,从 CSV 文件批量导入。1Password 导出 CSV 时选择「所有项目」,Chrome 则可以直接导出密码 CSV。导入后记得在 Vaultwarden 管理后台(/admin 路径)确认数据完整。

第四步:备份与安全加固

密码数据库是数字生命的重要资产,必须做好备份。Vaultwarden 的数据全部存储在 Docker 映射的 /data 目录中,你只需要定期把这个目录复制到另一块硬盘或云存储即可。建议开启 NAS 的定时任务,每天凌晨用 rsync 同步一次。

安全方面,除了之前提到的关闭注册功能,还可以在环境变量中启用两步验证(TWO_FACTOR_AUTHENTICATOR=1),并设置登录失败锁定(LOGIN_RATE_LIMIT_MAX_FAILS=5)。另外,建议为 Vaultwarden 单独创建一个非管理员用户运行容器,降低被攻破后的影响。

如果你的 NAS 有公网 IP,务必在路由器上只开放 443 端口,别把 8087 暴露出去。如果用的是 frp 或 ZeroTier 内网穿透,也要确保只暴露 HTTPS 端口。

写在最后

Vaultwarden 是我在 NAS 上部署过最值得的服务之一,它把密码管理从订阅制变成了终身自托管,数据完全私有,还能和全家人共享组织密码库。整个过程只需要半小时,但换来的是一劳永逸的安全感和省钱。如果你还在犹豫,不妨先跑起来试试,反正 Docker 容器删掉也毫无痕迹。

💬 评论区
发表评论

暂无评论,来说两句吧