特别声明:未经允许禁止转载!
在密码管理工具的「芸芸众生」之中,Bitwarden 是我最为青睐的一款。主要是:开源、免费、私有部署。通过自建服务器,你可以将密码和身份验证凭据牢牢掌握在自己的手中,再也不用担心敏感信息被服务提供商或第三方获取。本文使用飞牛NAS的Docker Compose安装。
简介
Vaultwarden 是一款开源、自托管的密码管理服务器,为 Bitwarden 的轻量化替代方案;完全兼容 Bitwarden 客户端(轻松实现跨平台使用),并且可以免费使用其企业级功能。
尽管 Bitwarden 官方的服务器方案已经十分出色,但是比较吃硬件资源 😂。为此,GitHub 上的大拿 Dani Garcia
开发了 Vaultwarden,来作为 Bitwarden 的轻量级自托管替代方案。
Vaultwarden 采用了 Rust 编写,完全兼容 Bitwarden 客户端协议,支持通过 Docker 或 Podman 极速部署,几分钟内就能完成上线,极为便捷。尤其适合服务器资源有限、追求轻量化的用户。
那么,Vaultwarden 和 Bitwarden 之间有哪些具体差异呢?以下几点可以帮助你快速了解:
特点
安全性:
都采用了端到端加密(E2EE)来保护「密码库」数据。不过,Vaultwarden 使用了一种名为 Crypton 的专有算法,类似于 Signal 的加密方案,一定程度上甚至比 Bitwarden 的 OpenPGP 端到端加密更加安全。用户界面:
两者的界面风格相似,但不完全一致。Vaultwarden 的布局稍有不同,并且提供了内置密码管理器等额外功能,导航体验也略有区别。服务端实现:
Vaultwarden 采用了去中心化的服务器架构,各用户的数据加密后会分散存储,仅在客户端解密。相比 Bitwarden 的传统客户端-服务器(C/S)模式,这种设计在数据安全性上更具优势。
作为 Bitwarden 的轻量级替代品,Vaultwarden 自然继承了它的诸多核心功能,例如:
- 支持多设备同步。
- 端到端加密保护。
- 密码生成器:可以随机生成高强度密码、口令和用户名。
- 安全分享:可以与他人安全共享敏感信息。
- Android 和 iOS 移动端应用覆盖。
部署
部署Vaultwarden需要有一台服务器作为支撑,这里推荐速拓云,拥有香港服务器免备案还便宜。
有了服务器之后需要给服务器安装docker支持,由于我这里用的飞牛NAS,这里不再赘述,度娘很多教程如何安装docker。
打开飞牛的Docker管理工具,找到Compose,然后点击新建。
输入项目名称和位置,然后点击创建docker compose.yml
即可。
具体的docker Compose代码如下:
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: unless-stopped
environment:
- DOMAIN=https://www.example.com
- SIGNUPS_ALLOWED=true
volumes:
- /dockerData/vaultwarden/vw-data:/data
ports:
- "1880:80"
其中:
DMAIN=https://www.example.com:
域名,这里我使用的是https://www.example.com
,你需要换成你自己的域名。后续我们使用 Nginx 代理到该域名。SIGNUPS_ALLOWED=true
: 允许注册,我们可以第一次启动后,注册一个账号,然后关闭该配置,这样就可以禁止注册来实现私有化。volumes
: - /dockerData/vaultwarden/vw-data:/data: 挂载数据卷,这样数据就不会丢失。ports
: - "1880:80": 端口映射,把容器内的 80 端口映射到宿主机的 1880 端口。
反向代理
下面是nginx反向代理的配置代码:
server {
listen 80;
server_name wwww.example.com;
if ($scheme = http) {
return 301 https://$server_name$request_uri;
}
root /var/www/x;
include /etc/nginx/ssl/example.com.conf;
client_max_body_size 1g;
location / {
proxy_pass http://bitwarden/;
dav_methods PUT DELETE MKCOL COPY MOVE;
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;
proxy_cookie_path / /;
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
}
}
如果你的nginx和Vaultwarden 在同一个网段,使用上述配置之后重启nginx即可。
管理
首先进入容器中,输入./
,然后会自动生成一串hash码。然后重新修改docker compose 文件。
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: unless-stopped
environment:
- DOMAIN=https://www.example.com
- SIGNUPS_ALLOWED=true
- ADMIN_TOKEN: $$argon2id$$v=19$$m=65540,t=3,p=4$$kY7jtrQrZvI2Zjc7W5/AQZxcN//SilxjMIJV50kXH0g$$t0RlKSlQr5Vz28xNBDzOuFeV+T4SW/m8OvAneTAystk
volumes:
- /dockerData/vaultwarden/vw-data:/data
ports:
- "1880:80"
注意上面的美元符号是两个,但是系统生成的是一个,需要手动添加一个。然后进入管理员界面:https://www.example.com/admin
,输入你的密码,然后点击Enter。
创建用户
首先访问地址:https://www.example.com/#/signup
进入注册界面,注册一个用户。然后修改Docker Compose文件,把SIGNUPS_ALLOWED=false
,此时只能是已有用户使用,其他人无法使用。
然后可以使用导入功能,把以前其他应用的密码导入到当前系统中,比如我经常用的SafeInCloud可以直接导入。
插件
点击插件可以自动匹配当前浏览器并且跳转到插件的主目录中。
按照提示安装插件即可。
点击插件,然后修改服务器地址。
选择自托管,然后输入服务器地址即可,比如:https://www.example.com
然后使用你的账户登录即可。
找到指定网站即可使用插件自动登录。