Bitwarden

Bitwarden 是一款开源密码管理器,它会将所有密码加密存储在服务器上,它的工作方式与 LastPass、1Password 或 Dashlane 相同。

1625995024342-c9074852c02146b694f21f4d84f79f52

官方的版本搭建对服务器要求很高,搭建不容易,GitHub上有人用 Rust 实现了 Bitwarden 服务器,项目叫 vaultwarden,并且提供了 Docker 镜像,这个实现更进一步降低了对机器配置的要求,并且 Docker 镜像体积很小,部署非常方便。这个项目目前在GitHub也有9.8k的star,非常受欢迎。

1625995036786 - d51923557ada4fa380c4cc6cf5d928b7

一:简介

项目:https://github.com/dani-garcia/vaultwarden

二:要求

  • 一个解析好的域名

  • 腾讯轻量云香港服务器 (演示系统:Debian 10)

## 三:部署

Docker安装

官方地址:https://docs.docker.com/engine/install/debian/

1.更新apt包索引并安装包以允许atp过 HTTPS 使用存储库:
sudo apt-get update


sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg \
    lsb-release
2.添加 Docker 的官方 GPG 密钥:
 curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
3.使用以下命令设置稳定存储库。要添加 nightlytest存储库,请在以下命令中的单词之后添加单词nightlytest(或两者)stable
echo \
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
4.更新apt包索引,安装最新版本的Docker Engine和containerd,或者进入下一步安装特定版本:
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
5.通过运行hello-world 映像来验证 Docker 引擎是否已正确安装。
 sudo docker run hello-world

 systemctl enable docker #设置docker开机自动启动
 
 systemctl status docker #查看docker状态

 

正式部署

用Docker来部署,两行命令就够了,命令如下:

docker run -d --name bitwardenrs \
--restart unless-stopped \
-e WEBSOCKET_ENABLED=true \
-v /www/wwwroot/demo/:/data/ \
-p 6666:80 \
-p 3012:3012 \
vaultwarden/server:latest

注意:/www/wwwroot/demo/ 请修为自己的路径

配置反向代理

上面的设置好之后,我们还需要设置反向代理才可以打开网站,但是在设置之前,我们需要新建一个站点,并且设置好SSL证书。这些还是用宝塔面板来操作。我们需要把【http://127.0.0.1:6666】设置反向代理,如图:

1625995190551-79783932adf446d88394a28c3ef33272

代码如下:

 location / {
proxy_pass http://127.0.0.1:6666/;
rewrite ^/(.*)$ /$1 break;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade-Insecure-Requests 1;
proxy_set_header X-Forwarded-Proto https;
}

登陆

设置好反向代理之后,就可以打开站点了,如图

1625995211687-d7fc11f852b44db3915ef1c4b384c78d

<!–注意:创建账号,需要在开启了ssl证书的情况下才会成功。–>

配置

现在是所有人都可以注册这个网站,如果要自己使用,那就最好关掉注册,使用下面的命令,重新创建容器并开启禁止注册用户。

docker stop bitwardenrs  #停止容器
docker rm -f bitwardenrs  #删除容器

docker run -d --name bitwardenrs \
  --restart unless-stopped \
  -e SIGNUPS_ALLOWED=false \
  -e WEBSOCKET_ENABLED=true \
  -v /www/wwwroot/demo/:/data/ \
  -p 6666:80 \
  -p 3012:3012 \
  vaultwarden/server:latest

 

 

运行完容器,登陆后在注册,就会显示错误提示:

1625995237066-3c6073dd374d4511a86f592a6789d4dc

设置自动同步

Bitwarden 默认是不会自动同步的,不管你是添加或者删除又或是修改了一条记录,都只是先保存在本地,只有当你手动点一下同步时才会进行同步。此时我们可以打开 WebSockets notifications 功能,这样手机修改后会立刻自动同步到云端。所以,我们还需要需要上面的反向代理。

打开网站配置文件,直接复制过去就可以了。(可以把前面第四步的反向代理那段替换掉)

1625995249857-30f359d94cc94817819f385edb0edbfc

location / {
            proxy_pass http://127.0.0.1:6666;
            proxy_http_version    1.1;
            proxy_cache_bypass    $http_upgrade;
            proxy_set_header Upgrade            $http_upgrade;
            proxy_set_header Connection         "upgrade";
            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;
            proxy_set_header X-Forwarded-Host   $host;
            proxy_set_header X-Forwarded-Port   $server_port;
        }

        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:6666;
        }

        location /admin {
            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;
            proxy_pass http://127.0.0.1:6666;
        }
        # 加入robots.txt 防止搜索引擎爬虫抓取
        location = /robots.txt {
            root /home/wwwroot/Bitwarden;
        }

 

大功告成了!

可以多端同步,覆盖了大多类型的设备

四:总结

目前比较流行的密码管理软件有 1Password、LastPass 、KeePass、Enpass以及SafeInCloud等,但是完全免费开源的只有Bitwarden。我们只需要借助Docker就可以很容易搭建一个自己的密码管理平台。

bitwarden优点:全平台,免费、开源,在安卓上体验很好,有多种双重验证,自动填充功能正常,有密码泄露检测,适应大部分 APP,可以自定义字段,可以正则匹配网址,可以自定义图标,会根据网址或 APP 自动获取 ico,可以指纹解锁,中文翻译很好。