前言
随着注册的网站数量不断增加,我们面临的一个主要挑战是如何安全地管理众多的用户名和密码。传统的密码管理方法,如使用相同的密码或将密码写在纸上,不仅效率低下,而且存在严重的安全隐患。为了解决这些问题,密码管理器应运而生,它们提供了一种集中存储和自动填充密码的解决方案,大大提高了用户在线账户的安全性。
在这样的背景下,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部署
创建安装目录
sudo -i
mkdir -p /root/docker/vaultwarden
cd /root/docker/vaultwarden
vim docker-compose.yml
英文输入法下,按 i
version:
services:
vaultwarden:
container_name: vaultwarden
image: vaultwarden/server:latest
restart: unless-stopped
volumes:
- ./data/:/data/
ports:
- 8080:80
environment:
- DOMAIN=https://subdomain.yourdomain.com # 这是您希望与您的Vaultwarden实例关联的域名。
- LOGIN_RATELIMIT_MAX_BURST=10 # 允许在一阵登录/两步验证尝试中的最大请求次数。
- LOGIN_RATELIMIT_SECONDS=60 # 这是来自同一IP的登录请求之间的平均秒数,在Vaultwarden限制登录次数之前。
- ADMIN_RATELIMIT_MAX_BURST=10 # 这与LOGIN_RATELIMIT_MAX_BURST相同,只争对admin面板。
- ADMIN_RATELIMIT_SECONDS=60 # 这与LOGIN_RATELIMIT_SECONDS相同
- ADMIN_SESSION_LIFETIME=20 # 会话持续时间
- ADMIN_TOKEN=YourReallyStrongAdminTokenHere # 此值是Vaultwarden管理员面板的令牌(一种密码)。为了安全起见,这应该是一个长的随机字符串。如果未设置此值,则管理员面板将被禁用。建议openssl rand -base64 48 生成ADMIN_TOKEN确保安全
- SENDS_ALLOWED=true # 此设置决定是否允许用户创建Bitwarden发送 - 一种凭证共享形式。
- EMERGENCY_ACCESS_ALLOWED=true # 此设置控制用户是否可以启用紧急访问其账户的权限。例如,这样做可以在用户去世后,配偶可以访问密码库以获取账户凭证。可能的值:true / false。
- WEB_VAULT_ENABLED=true # 此设置决定了网络保险库是否可访问。一旦您配置了您的账户和客户端,停止您的容器,然后将此值切换为false并重启Vaultwarden,可以用来防止未授权访问。可能的值:true/false。
- SIGNUPS_ALLOWED=true # 此设置控制新用户是否可以在没有邀请的情况下注册账户。可能的值:true / false。
切换成英文输入法,修改好之后,按一下 esc
,然后 :wq
保存退出。
命令行输入
docker-compose up -d
Docker部署
仅需一条命令即可方便的部署在 Vaultwarden
docker run -d
--name=vaultwarden
-e WEBSOCKET_ENABLED=true
-e LOG_FILE=/log/bitwarden.log
-e ADMIN_TOKEN='主管理密码'
-p 'docker映射本机端口':80 -p 'docker映射本机端口':4567
-v 'docker映射本机目录地址':/data/
--restart=always
vaultwarden/server:latest
需要注意的是:
--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/ 目录中的全部文件即可
详细来说,它的目录结构是这样的
data
├── attachments # 用户上传的每个附件都存储为此目录下的单独文件.
│ └── <uuid> # (如果没有创建附件,附件目录将不存在.)
│ └── <random_id>
├── config.json # 存储 Vaultwarden 管理后台配置.
├── db.sqlite3 # 主 SQLite 数据库文件.
├── db.sqlite3-shm # SQLite 共享内存文件(可能存在).
├── db.sqlite3-wal # SQLite 预写日志文件(可能存在).
├── icon_cache # 站点图标(favicons)缓存在此目录下.
│ ├── <domain>.png
│ ├── example.com.png
│ ├── example.net.png
│ └── example.org.png
├── rsa_key.der # `rsa_key.*` 文件用于签署认证令牌.
├── rsa_key.pem
├── rsa_key.pub.der
└── sends # 用户上传的每个 Send 附件都存储为此目录下的单独文件.
└── <uuid> # (如果未创建 Send 附件,则发送目录将不存在.)
└── <random_id>
其中
SQLite 数据库文件
非常重要,需要备份
除了上传的附件单独存储在 attachments
目录下外,SQLite
数据库文件存储了几乎所有重要的用户密码信息,是最重要的数据文件。
attachments 目录
重要,需要备份
attachments
目录存放密码条目中上传的附件文件
sends 目录
可选备份
sends
目录存放 Send 附件,考虑到 Send 附件往往只用作暂时分享,如果你没有长期存储的 Send 文件,可排除备份此文件夹以减小备份体积
config.json 文件
建议备份
config.json
文件明文存储 Vaultwarden 管理后台配置,如果没有备份此文件,恢复备份后可能需要重新设置相关配置
rsa_key 文件
建议备份
该文件存储当前登录用户的身份令牌,删除此文件后,所有登陆的用户将被注销,迫使他们重新登录
icon_cache 目录
可选备份
存放密码网站图标,这些图标会在缺少是自动生成,如非必要可以不备份
备份
以宝塔面板为例
点击计划任务 – 添加任务 ,任务类型选备份目录
恢复
回滚恢复
先暂停 docker 容器
docker stop <name>
将备份的文件替换当前 data 目录,然后重新启动 docker 容器
docker start <name>
如果发生错误,可尝试删除容器重新部署 docker
全新恢复
删除现有 docker 容器
docker stop <name>
docker rm <name>
将备份的文件替换当前 data 目录,然后重新部署 docker 容器
docker run -d
--name=vaultwarden
-e WEBSOCKET_ENABLED=true
-e LOG_FILE=/log/bitwarden.log
-e ADMIN_TOKEN='主管理密码'
-p 'docker映射本机端口':80 -p 'docker映射本机端口':4567
-v 'docker映射本机目录地址':/data/
--restart=always
vaultwarden/server:latest
升级
在更新开始前,建议先备份一下
docker 升级:
首先暂停并删除当前容器
docker stop <name>
docker rm <name>
拉取最新镜像
docker pull vaultwarden/server:latest
从新镜像部署容器(注意映射关系要保持一致
docker run -d
--name=vaultwarden
-e WEBSOCKET_ENABLED=true
-e LOG_FILE=/log/bitwarden.log
-e ADMIN_TOKEN='主管理密码'
-p 'docker映射本机端口':80 -p 'docker映射本机端口':4567
-v 'docker映射本机目录地址':/data/
--restart=always
vaultwarden/server:latest
建议部署容器成功后,进行测试,确定没有问题后再删除镜像
如果发生了错误,可用未删除的老版本镜像重新部署,然后等待社区更新
docker-compose 升级:
cd /root/docker/vaultwarden
docker-compose pull
docker-compose up -d
docker image prune # prune 命令用来删除不再使用的 docker 对象。删除所有未被 tag 标记和未被容器使用的镜像
提示:
WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N]
输入 y
确认即可
暂无评论内容