系统极客一直在努力
专注操作系统及软件使用技能

如何在 Docker 上自托管 Vaultwarden 密码管理服务

Vaultwarden

在密码管理工具的「芸芸众生」之中,Bitwarden 是我最为青睐的一款。它不仅功能全面,采用开源架构,更重要的是支持在云主机或 HomeLab 等自托管环境中部署。通过自建服务器,你可以将密码和身份验证凭据牢牢掌握在自己的手中,再也不用担心敏感信息被服务提供商或第三方获取。

采用 Bitwarden 的混合架构后,你可以把核心密码保存在本地服务器,同时将其他数据同步到 Bitwarden 的云端服务,这样就同时兼顾了安全性和灵活性。

01. 什么是 Vaultwarden 服务?

尽管 Bitwarden 官方的服务器方案已经十分出色,但是比较吃硬件资源 😂。为此,GitHub 上的大拿 Dani Garcia 开发了 Vaultwarden,来作为 Bitwarden 的轻量级自托管替代方案。

Vaultwarden 采用了 Rust 编写,完全兼容 Bitwarden 客户端协议,支持通过 Docker 或 Podman 极速部署,几分钟内就能完成上线,极为便捷。尤其适合服务器资源有限、追求轻量化的用户。

我亲自入坑过 Bitwarden 和 Vaultwarden 的服务端方案。实测下来,Vaultwarden 的部署速度更快,功能也足够丰富,推荐你也上手一试。

那么,Vaultwarden 和 Bitwarden 之间有哪些具体差异呢?以下几点可以帮助你快速了解:

  • 安全性:都采用了端到端加密(E2EE)来保护「密码库」数据。不过,Vaultwarden 使用了一种名为 Crypton 的专有算法,类似于 Signal 的加密方案,一定程度上甚至比 Bitwarden 的 OpenPGP 端到端加密更加安全。
  • 用户界面:两者的界面风格相似,但不完全一致。Vaultwarden 的布局稍有不同,并且提供了内置密码管理器等额外功能,导航体验也略有区别。
  • 服务端实现:Vaultwarden 采用了去中心化的服务器架构,各用户的数据加密后会分散存储,仅在客户端解密。相比 Bitwarden 的传统客户端-服务器(C/S)模式,这种设计在数据安全性上更具优势。

作为 Bitwarden 的轻量级替代品,Vaultwarden 自然继承了它的诸多核心功能,例如:

  • 支持多设备同步。
  • 端到端加密保护。
  • 密码生成器:可以随机生成高强度密码、口令和用户名。
  • 安全分享:可以与他人安全共享敏感信息。
  • Android 和 iOS 移动端应用覆盖。

接下来,我将以 Docker 部署方式为例,简要介绍 Vaultwarden 的上线流程。

02. 安装 Docker 环境

Vaultwarden 服务通常需要在多设备间同步数据,并通过公网访问。因此,建议优先选择一台稳定的 Linux 服务器或 Windows Server,来作为 Docker 的部署环境。 虽然你也可以在桌面版的 Linux 或 Windows 上部署,但关机后服务不就掉线了么 🥲……

  • 主流 Linux 发行版:推荐使用 LinuxMirrors 提供的 Docker 一键部署脚本,适用于绝大多数主流发行版,使用起来也非常方便:
bash <(curl -sSL https://linuxmirrors.cn/docker.sh)

03. 部署 Vaultwarden 实例

Docker 环境准备就绪,现在就可以正式部署 Vaultwarden 了:

1服务部署:执行以下命令,拉取 Vaultwarden 镜像并启动实例:

docker run --detach --name vaultwarden \
  --volume /vaultwarden/data/:/data/ \
  --restart unless-stopped \
  --publish 80:80 \
  vaultwarden/server:latest

记得将volume指定到本地一个实际存在的数据存放位置。另外,虽然 Vaultwarden 也支持直接启用 HTTPS,但为了便于长期维护,我更推荐使用 Nginx 反代来提供 HTTPS 服务。

2状态检查:稍等片刻,容器会自动拉起。你也可以通过以下命令查看运行状态:

docker ps -a
通过 Docker 安装 Vaultwarden
通过 Docker 安装 Vaultwarden

在列表中看到状态为healthy就表示部署成功,可以进入下一步操作。

3反向代理:在服务器上装一个你喜欢的反代服务,比如 Nginx 或 Caddy,然后再去 Vaultwarden 官方提供的反代配置示例中,Kiang 一个过来使用。例如:

upstream vaultwarden-default {
    zone vaultwarden-default 64k;
    server 192.168.100.4:3210;
    keepalive 2;
}
map $http_upgrade $connection_upgrade {
    default upgrade;
    '' "";
}
server {
    listen 80;
    server_name vaultwarden.demo.com;
    return 301 https://$server_name$request_uri;
}
server {
    listen 443 ssl;
    listen 443 quic;
    http2 on;
    server_name vaultwarden.demo.com;
    ssl_certificate /root/.acme.sh/XXX/fullchain.cer;
    ssl_certificate_key /root/.acme.sh/XXX/osgeek.link.key;
    add_header Alt-Svc 'h3=":443"; ma=86400';
    add_header Strict-Transport-Security "max-age=31536000" always;
    client_max_body_size 525M;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    location / {
        proxy_pass http://vaultwarden-default;
    }
}

4公网发布:如果你使用的是云主机,记得开启防火墙;如果是 HomeLab 环境部署,则需要自行发布公网访问。这部分内容本文不做详细展开。

04. 访问 Vaultwarden 服务

1在电脑上打开浏览器,访问http://SERVER打开 Vaultwarden 的登录页面,SERVER需要替换为实际的服务器域名或 IP 地址。

2点击「创建账户」,按照提示填写相关信息并完成新用户注册。

创建一个新的 Vaultwarden 账户
创建一个新的 Vaultwarden 账户

3登录管理界面后,根据需求完成初始设置。例如,从其他平台导入密码库,或者手动录入各类密码条目。

完成 Vaultwarden 初始设置
完成 Vaultwarden 初始设置

4在桌面应用、移动端应用或浏览器的 Bitwarden 插件中,选择「自托管」服务,然后填入「服务器 URL」连接到本地 Vaultwarden 实例。

连接到自托管 Vaultwarden 服务
连接到自托管 Vaultwarden 服务

通过 Docker 部署 Vaultwarden,能帮你在几分钟内搭建起一套轻量、安全的自托管密码管理服务。如果你也在寻找一款开源、灵活且易于部署的密码管理工具,Vaultwarden 是非常值得一试的优秀方案。

赞(0)

评论 抢沙发