自搭建私有密码库Vaultwarden

自搭建私有密码库Vaultwarden
若雨前言
随着注册的网站数量不断增加,我们面临的一个主要挑战是如何安全地管理众多的用户名和密码。传统的密码管理方法,如使用相同的密码或将密码写在纸上,不仅效率低下,而且存在严重的安全隐患。为了解决这些问题,密码管理器应运而生,它们提供了一种集中存储和自动填充密码的解决方案,大大提高了用户在线账户的安全性。
在这样的背景下,Vaultwarden应运而生。它是一个开源的Bitwarden密码管理器的替代品,为用户提供了一个安全、可靠且易于使用的密码管理解决方案。Vaultwarden不仅允许用户在多个设备之间同步密码,还支持高级加密功能,确保用户数据的隐私和安全。
项目介绍
Vaultwarden 是一个使用 Rust 编写的开源项目,它是 Bitwarden 服务器 API 的替代实现,与官方 Bitwarden 客户端兼容。这意味着你可以使用 Vaultwarden 自托管你的密码管理服务,而不是依赖 Bitwarden 的官方服务器。Vaultwarden 特别适合那些希望减少对官方服务的依赖、提高数据控制力和隐私保护的用户。
项目特点:
1. 轻量化:相比官方 Bitwarden 服务器,Vaultwarden 资源占用更少,运行更高效。
2. 安全性:实现了 Bitwarden 的大部分安全特性,包括端到端加密。
3. 兼容性:支持官方 Bitwarden 客户端,包括桌面端、移动端和浏览器扩展。
4. 自托管:允许用户在自己的服务器上部署和管理密码库。
5. 多平台支持:支持 Windows、macOS、Linux、iOS 和 Android。
6. 免费使用:作为一个开源项目,Vaultwarden 可以免费使用。
功能:
- 支持组织功能。
- 支持附件和发送功能。
- 提供保管库界面的静态文件。
- 支持网站图标 API。
- 支持身份验证器和 U2F。
- 支持 YubiKey 和 Duo。
- 支持紧急访问。
安装和使用:
Vaultwarden 通常通过 Docker
容器部署,用户可以通过简单的命令拉取镜像并运行容器。部署后,用户需要配置反向代理和 SSL 证书以启用 HTTPS 访问,这是出于现代浏览器对 Web Crypto API 的安全要求。主密码无法通过任何方式恢复,如果忘记密码最多只能通过邮件获取你预先设置的密码提示,如果依然无法想起主密码,就会失去所有数据。
备份方案:
Vaultwarden 的备份方案包括定期备份数据库和其他重要文件。用户可以使用 Docker 的备份工具或手动备份来保护他们的密码库。
社区和支持:
Vaultwarden 有一个活跃的社区,用户可以通过 GitHub 讨论、论坛或 Matrix 聊天室获得帮助和支持。
如果你对密码管理有更高的需求,希望有更多的控制权和隐私保护,Vaultwarden 是一个不错的选择。
安装部署
Docker Compose部署
创建安装目录
1 | sudo -i |
英文输入法下,按 i
1 | services: |
切换成英文输入法,修改好之后,按一下 esc
,然后 :wq
保存退出。
命令行输入
1 | docker-compose up -d |
Docker部署
仅需一条命令即可方便的部署在 Vaultwarden
1 | docker run -d \ |
需要注意的是:
--name
设置 docker 中显示的名字,docker 项目多时方便管理ADMIN_TOKEN
设置 Vaultwarden 管理后台密码(这个不是主密码,待会可以改)-p
映射端口,如果服务器上有其他网页服务,建议映射到其他端口反代,不要直接使用 80 端口-v
目录映射非常重要,映射到本机的目录即为后面需要备份的目录,是重要安全保障--restart
使 Vaultwarden 可以自动重启
宝塔部署
好消息是宝塔面板的软件商店已经有了 Vaultwarden 快捷安装了,同样是使用 docker 容器部署,直接搜索即可。
按说明设置端口
域名解析&反代
将域名解析到服务器地址,开启 https
,然后把刚刚设置的 'docker映射本机端口':80
反代
管理后台
访问 your.domain/admin
,登录 Vaultwarden
管理后台,登陆密码为刚刚设置的 ADMIN_TOKEN
在这里可以根据情况对 Vaultwarden 进行一些可选设置,不了解的项目建议保持默认
需要注意这几项:
General Settings
- Domain URL:设置你的网站域名,记得带上 https,如 https://your.domain
- Allow new signups:是否允许用户注册,如果密码库仅仅用于自用,建议在自己注册后关闭此选项
- Admin page token:在这里更改 Vaultwarden 管理后台的密码
- Invitation organization name:设置你的网站名字,将出现在自动发送的电子邮件中
SMTP Email Settings
- 设置 SMTP 服务,用来发送系统邮件(建议开启)
- 根据你的 SMTP 服务提供方填写相关信息即可
- 设置保存后,运行一次 Test SMTP 确保邮件可以正常发送
Read-Only Config
- 这里可以查看所有只读选项,可以停止 docker 容器后通过编辑
'docker映射本机目录地址':/data/
目录中的config.json
修改
开始使用
设置完成后,访问 your.domain 创建你的密码管理账户
在这里设置 主密码,同时可以选择设置一条主密码提示,当你忘记主密码时,可通过邮件获取主密码提示
备份与恢复
备份说明
Vaultwarden的官方文档:
https://github.com/dani-garcia/vaultwarden/wiki/Backing-up-your-vault
docker
部署的 Vaultwarden 备份很简单
只需要备份映射的 ‘docker映射本机目录地址’:/data/ 目录中的全部文件即可
详细来说,它的目录结构是这样的
1 | data |
其中
SQLite 数据库文件
非常重要,需要备份
除了上传的附件单独存储在 attachments
目录下外,SQLite
数据库文件存储了几乎所有重要的用户密码信息,是最重要的数据文件。
attachments 目录
重要,需要备份
attachments
目录存放密码条目中上传的附件文件
sends 目录
可选备份
sends
目录存放 Send 附件,考虑到 Send 附件往往只用作暂时分享,如果你没有长期存储的 Send 文件,可排除备份此文件夹以减小备份体积
config.json 文件
建议备份
config.json
文件明文存储 Vaultwarden 管理后台配置,如果没有备份此文件,恢复备份后可能需要重新设置相关配置
rsa_key 文件*
建议备份
该文件存储当前登录用户的身份令牌,删除此文件后,所有登陆的用户将被注销,迫使他们重新登录
icon_cache 目录
可选备份
存放密码网站图标,这些图标会在缺少是自动生成,如非必要可以不备份
备份
以宝塔面板为例
点击计划任务 - 添加任务 ,任务类型选备份目录
恢复
回滚恢复
先暂停 docker 容器
1 | docker stop <name> |
将备份的文件替换当前 data 目录,然后重新启动 docker 容器
1 | docker start <name> |
如果发生错误,可尝试删除容器重新部署 docker
全新恢复
删除现有 docker 容器
1 | docker stop <name> |
将备份的文件替换当前 data 目录,然后重新部署 docker 容器
1 | docker run -d \ |
升级
在更新开始前,建议先备份一下
docker 升级:
首先暂停并删除当前容器
1 | docker stop <name> |
拉取最新镜像
1 | docker pull vaultwarden/server:latest |
从新镜像部署容器(注意映射关系要保持一致
1 | docker run -d \ |
建议部署容器成功后,进行测试,确定没有问题后再删除镜像
如果发生了错误,可用未删除的老版本镜像重新部署,然后等待社区更新
==docker-compose 升级:==
1 | cd /root/docker/vaultwarden |
提示:
1 | WARNING! This will remove all dangling images. |
输入 y
确认