【5分钟玩转Lighthouse】搭建bitwarden个人密码管理器

2022-09-16 11:27:30 浏览数 (1)

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可以自行部署的能力,让我们把密码安全掌握在自己的手里,这才是密码管理器最让人放心的地方。

0 人点赞