简介
Bitwarden
是一款可靠的开源密码管理系统,它可以安全地接管你的所有密码,并将其加密保存在你自己的服务器上,支持全平台客户端,包括网页端、桌面端、浏览器拓展、手机应用以及Linux命令行客户端。
这里我们使用Bitwarden_rs
的Docker发行版镜像来部署,因为它使用Rust重构了服务端,速度更快、资源占用更小。
部署服务
前置条件:
- 首先你需要有一台长期稳定的安全的服务器
如果你的服务器动不动就重装系统,那么就非常不适合用来存这些敏感且重要的数据,你应该知道这些数据的丢失将可能导致你永久失去一些服务的访问权。
- 你应当拥有一定的相关技术知识
如果你不知道怎么配置Nginx反向代理,不知道什么是SSL/TLS加密,不会部署和维护容器,而且对于网络通信安全没有什么认知和概念的话,不建议使用自建的密码托管服务。
对于不满足上述的两种条件的同学,我推荐你直接去使用可信的第三方平台提供的密码托管服务。
下面列举一些知名的密码托管服务商
Bitwarden官方:https://bitwarden.com
1Password:https://1password.com/zh-cn/
Keepeer:https://www.keepersecurity.com
And so on…
- 服务器需要有安装Docker和DockerCompose
如果你没有安装,可以看我的这篇文章:https://www.hash070.top/archives/docker-and-docker-compose-install.html
创建数据存放目录与docker-compose描述文件
首先我推荐创建一个全新的目录,专门用于存放Bitwarden
的数据文件,后期如果需要迁移服务器的话直接把这个文件夹打包带走就可以了。
这里假设我们创建了一个名为Bitwarden
的文件夹,专门存放该容器的数据文件。
# 创建文件夹
mkdir /root/data/docker_data/Bitwarden
#cd到创建的文件夹
cd /root/data/docker_data/Bitwarden
然后使用vim创建并填写docker-compose描述文件。
vim docker-compose.yml
向这个文件中写入如下文本
version: '3.3'
services:
server:
container_name: vaultwarden
restart: unless-stopped
environment:
- WEBSOCKET_ENABLED=true #开启WebSocket
- SIGNUPS_ALLOWED=false #开启注册,自己注册后改成false
- WEB_VAULT_ENABLED=false #web客户端
volumes:
- './data/:/data/'
ports:
- '8080:80'
- '3012:3012'
image: 'vaultwarden/server:latest'
按ESC ,按住shift+:,输入wq , 退出编辑器
其中8080:80
意思是将容器的http端口映射到服务器的8080端口上,你可以根据自己的需求随意更改
另外一个3012
端口是用于WebSocket
通信的
以上两个端口不应在防火墙中开放,我们后面会使用Nginx反向代理这两个端口。
上线Docker容器
当你将compose描述文件正确填写并保存后,在当前文件夹下,通过执行下面这行命令就可以上线你的Bitwarden容器了。
docker-compose up -d
附 docker-compose常用命令:
# 上线容器
docker-compose up -d
# 停止容器
docker-compose stop
# 启动容器
docker-compose start
# 重启容器
docker-compose restart
# 下线(删除)容器
docker-compose down
# 删除容器不会导致你的数据丢失,你的数据库保存在了当前目录下的data文件夹内,请妥善保管该目录
反向代理
我们使用Nginx反向代理来实现网站的SSL加密以保证数据传输安全并隐藏与保护后端容器。
可以通过acme脚本自动申请与部署,具体看这篇文章:https://oive.net/nginx-proxy-manager-zuo-fan-xiang-dai-li/
高级设置:后台管理员
注意,一旦设置管理员口令并启用管理员面板,该功能将无法关闭,且无法重置该口令
要启用后台管理员,你需要在compose描述文件中的environment
项中添加如下配置
ADMIN_TOKEN=管理员口令
注意,口令的长度应该很长且无规律,弱口令将导致你的密码管理服务器不安全。
Tip:可以使用OpenSSL生成随机字符串来当管理员口令
下面这条命令可以生成一个48位的字符串,这些字符串可以充当口令
openssl rand -base64 48
修改后的environemet部分应该看起来像是这样的
environment:
- ADMIN_TOKEN=txWN3bnqTGJv9ENgNko0euISyiO51p7zXSl8QP/3wRO5VC1iJF0LiU2InLoO3Nzi
- WEBSOCKET_ENABLED=true
- SIGNUPS_ALLOWED=true
你需要通过下线(down)容器并重新上线(up)容器来让修改生效。
之后你可以通过访问域名+/admin的方式进入管理面板
如https://password.apple.com/admin
你需要在这里输入你在环境变量中设置的Token
关闭注册功能
在你自己注册完自己的帐号后可以选择关闭注册功能。
将environment
部分的SIGNUPS_ALLOWED
的值调整为false
environment:
- ADMIN_TOKEN=txWN3bnqTGJv9ENgNko0euISyiO51p7zXSl8QP/3wRO5VC1iJF0LiU2InLoO3Nzi
- WEBSOCKET_ENABLED=false
- SIGNUPS_ALLOWED=true
然后down掉容器并重新上线容器使其生效
# 下线(删除)容器
docker-compose down
# 上线容器
docker-compose up -d
更多的进阶配置可以看该镜像的官方文档:https://github.com/dani-garcia/vaultwarden/wiki
使用教程
注册帐号
在配置完反代后我们就可以输入域名,进入Bitwarden开始使用了
一定要确保在此之前你已经正确地配置了SSL证书,否则你的通信内容将全过程裸奔,还不如不用!
ps:如果是个人使用的话,注册完帐号后建议关闭注册功能。
更改语言
默认语言为英文,如果你用不习惯可以将语言改为中文
导入你的密码
从浏览器中导出密码
以我所使用的Chrome浏览器为例:
依次进入设置
->自动填充
->密码
->导出密码
最终会导出一个csv文件,你在Chrome
中储存的所有密码
都会以明文
的形式保存在里面
因此您应该明白该文件高度敏感和机密,不要使用任何第三方软件传输该文件,您应尽快将该文件导入到Bitwarden中并在这之后立即彻底销毁该文件。
在Bitwarden中导入密码
打开你的Bitwarden,找到工具
->导入数据
->选择格式
->选择刚导出的文件
->点击导入数据
导入格式根据你的实际情况来选择,我是用Chrome导出的csv,所以这里我理所应当地选择了Chrome(csv)
然后你就可以看到你的密码库中已经可以看到刚刚导入的密码了。
下载与使用app
在appstore
搜索bitwarden
就能找到
进入软件后,点击右上角的设置图标
将Server URL
换成你自己的服务器地址
然后点击登录,输入你自己的帐号密码即可。
在iOS系统中,设置
->密码-
>自动填充
中,勾选bitwarden
后就可以让它来接管你的密码了。
其他平台的软件使用方法我就不一一介绍了
使用方法都大同小异,点击右上角的获取应用
按钮可以查看和下载官方发布的客户端