1. 背景概述
现在各种网站和手机APP都要求设置密码和输入密码,每个人都要设置大量的密码。如果都设为统一密码,就存在一旦一个密码被攻破,其他密码都失效的情况。如果要分别设置为不同密码,那么记住密码又成了一个困难的问题。所以密码管理工具也就应运而生,比较有名的密码管理工具有1Password,OneSafe,LastPass,但是这些工具大多数需要收费并且密码存储在其提供的服务器上。密码交给别人管理,还是有些不放心。
为了解决个人对密码管理的需求,在我们本期【5分钟玩转Lighthouse】系列教程中,将为大家介绍如何在腾讯云Lighthouse轻量应用服务器上基于Docker搭建bitwarden私人密码管理器。
那么为什么选在Lighthouse和bitwarden呢?原因如下:
1. Lighthouse轻量应用服务器创建简单,性价比高,自带Docker镜像。
2. bitwarden是一款有免费版且开源的密码管理工具,最重的是它允许自建密码管理服务,完全不用担心密码被别人管理的问题。同时biwarden对Windows,Linux,Mac,iPhone,Android以及Chrome等多种主流浏览器都支持,完全满足个人跨平台、跨终端的密码管理需求。
2. 准备Lighthouse轻量应用服务器
我们首先在腾讯云Lighthouse轻量应用服务器购买页面,购买一台服务器。如下图所示。
服务器的具体配置如下:
- 地域:中国香港
- 镜像:应用镜像 Docker
- 实例套餐:CPU 2核 内存2G SSD 80GB 峰值带宽 30Mbps 每月流量3072GB
- 实例名称:输入bitwarden即可。
点击“立即购买”,付款之后服务器就开始创建了。当服务器状态为“运行中”时,我们就可以使用了。
配置选择理由:
套餐:Bitwarden建议使用CPU:2核 内存:2G 磁盘25G的配置,因此我们选择了上述套餐。
镜像:搭建bitwarden服务器我们使用Docker镜像的方式,直接选择Lighthouse自带的Docker镜像即可。
有了服务器,接下来我们就要搭建bitwarden密码管理器了。
3. 搭建bitwarden个人密码管理器
3.1. 注册域名与配置解析
1. 注册域名
为了方便记忆我们的bitwarden密码管理器服务地址,我们先申请一个域名以方便访问。进入轻量应用服务器的实例详情页面,点击 “注册域名”。
接下来参考腾讯云官方文档《域名注册》完成域名的购买、注册和实名认证。
如下图所示,域名购买成功。
2.域名解析
点击域名后的解析,添加一条A记录,主机记录填 “WWW”,记录值填写轻量应用服务器的外网IP。
3.2. 申请与下载SSL证书
为了保证轻量应用服务器通信的安全性,我们要使用HTTPS协议进行通信。因此我们再申请SSL证书具体参考腾讯云官方文档《SSL证书新手入门》,申请“域名型免费版SSL证书”即可。
申请好证书后,点击“下载证书”,留待后面上传到轻量应用服务器上,配置Nginx使用的SSL证书。
3.3. 安装bitwarden
我们先部署bitwarden,然后使用Nginx作为反向代理,将请求转发到bitwarden服务器上。
1.Docker部署bitwarden
代码语言:javascript复制mkdir /data/bitwarden
docker run -d
--rm
--name bitwarden
-p 8080:80
-p 3012:3012
-e SIGNUPS_ALLOWED=true
-e WEB_VAULT_ENABLED=true
-e DOMAIN=https://mydomain.cn
-v /data/bitwarden:/data
bitwardenrs/server:latest
上面命令的各个参数含义如下:
-d 在后台运行
--rm 容器停止运行后,自动删除容器文件
--name bitwarden容器的名字为bitwarden
-p 8080:80 容器的端口80映射到8080,在Nginx配置
-p 3012:3012 容器的端口3012映射到3012
-e SIGNUPS_ALLOWED=true 设置环境变量SIGNUPS_ALLOWED=true允许用户注册
-e WBE_VAULT_ENABLE=true 设置环境变量WBE_VAULT_ENABLE=true
-e DOMAIN=https://mydomain.cn设置域名,需要替换成自己申请的域名
-v /data/bitwarden:/data 宿主机的/data/bitwarden目录映射到容器的/data/目录
3.4. 安装并配置Nginx
接下来使用docker安装Nginx并配置SSL证书与反向代理。
1. 安装Nginx
代码语言:javascript复制docker run
--rm
--name nginx
-d
nginx
上面命令的各个参数含义如下:
--rm 容器停止运行后,自动删除容器文件
--name nginx 容器的名字为nginx
-d 在后台运行
2. 拷贝配置
代码语言:javascript复制docker cp nginx:/etc/nginx /data
上面命令的含义:将nginx容器内的/etc/nginx目录复制到宿主机的/data目录
3. 配置SSL证书与反向代理
解压从腾讯云证书控制台下载的SSL证书文件。目录结构如下,我们使Nginx目录中的.crt和.key文件使用。
代码语言:javascript复制mkdir /data/nginx/certs
cp ./Nginx/1_mydomain _bundle.crt /data/nginx/certs
cp ./Nginx/2_mydomain.key /data/nginx/certs
打开nginx文件/data/nginx/conf.d/default.conf中新增如下内容:
HTTP 80端口新增如下配置:
代码语言:javascript复制server {
listen 80;
……此处省略无修改的内容
return 301 https://$host$request_uri; #将http的域名请求转成https
}
HTTPS 443端口新增如下配置:
代码语言:javascript复制server {
listen 443 ssl http2;
server_name localhost;
ssl on;
ssl_certificate /etc/nginx/certs/1_mydomain_bundle.crt; #配置证书文件
ssl_certificate_key /etc/nginx/certs/2_mydomain.key; #配置证书私钥文件
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
#配置反向代理,请求代理发送到8080端口
location / {
proxy_pass http://127.0.0.1:8080;
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;
root /usr/share/nginx/html;
index index.html index.htm;
}
location /notifications/hub {
proxy_pass http://127.0.0.1:3012;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location /notifications/hub/negotiate {
proxy_pass http://127.0.0.1:8080;
}
}
4. 重启nginx
先停止nginx容器,然后使用-v参数挂载修改过的配置文件,并启动容器使配置生效。
代码语言:javascript复制docker stop nginx
docker run
--rm
--name nginx
-v /data/nginx:/etc/nginx
-d
nginx
上面命令的各个参数含义如下:
--rm 容器停止运行后,自动删除容器文件
--name nginx 容器的名字为nginx
-d 在后台运行
至此我们就完成了bitwarden密码管理器的安装和部署。
4. 使用bitwarden管理密码
访问我们的域名就可以访问bitwarden的主页,接下来我们来介绍一下如何使用自己bitwarden管理我们各个平台与各个终端上的密码。
4.1. 注册bitwarden账号
首先我们使用自己的电子邮件地址注册一个账号。
点击提交后,即表示注册成功。接下来会返回到登录页面,输入电子邮件地址,和主密码即可登录。下图显示注册账号后为空的密码库。
4.2. 禁止其他人注册
由于这个bitwarden服务器是供个人使用,我们在注册完账号后,要关闭注册功能,防止他人注册。
代码语言:javascript复制# 先停止bitwarden容器
docker stop bitwarden
# 设置环境变量不允许注册用户-e SIGNUPS_ALLOWED=false,再启动bitwarden容器
docker run -d
--rm
--name bitwarden
-p 8080:80
-p 3012:3012
-e SIGNUPS_ALLOWED=false
-e WEB_VAULT_ENABLED=true
-e DOMAIN=https://mydomain
-v /data/bitwarden:/data
bitwardenrs/server:latest
此时再注册账号时,会提示Registration not allowed or user already exists.这样的错误。
4.3. chrome上使用bitwarden
在chrome网上应用店搜索bitwarden,并添加至Chrome中。
设置我们自建bitwarden服务器URL的地址。
接下来我们就体验一下,bitwarden自动保存密码的功能。在chrome浏览器中,我们登录果壳网,bitwarden会自动检测需要保存的用户名和密码。点击“是的,现在保存”即可。
接下来,我们退出账号,再次重新登录,点击bitwarden中的登录项目,account.guokr.com,密码用户名和密码就会自动填充好。
4.4. IOS 上使用bitwarden
在AppStore上搜索bitwarden,下载Bitwarden密码管理器
打开APP,点击设置图标,设置我们搭建的bitwarden服务器域名。
点击“登录”,用注册的bitwarden账号登录到我们搭建的服务器上。接下来用safari浏览器打开account.guokr.com,此时safari会自动弹出“使用Bitwarden,登录guokr.com”,选择我们要登录的账号,确定登录。
bitwarden会自动填充上用户名和密码,登录成功。
5. 小结
本教程通过借助Lighthouse轻量应用服务器和bitwarden,我们搭建了个人密码管理器。轻量应用服务器提供的Docker镜像,为我们提供了一键运行容器的环境,bitwarden提供的跨平台,跨终端能力,使得我们再也不用为管理密码头疼了。最重要的是bitwarden可以自行部署的能力,让我们把密码安全掌握在自己的手里,这才是密码管理器最让人放心的地方。