06月11日, 2020 659 views

今天推荐个密码管理程序bitwarden的第三方版bitwarden_rs,是时候抛弃chrome自带的密码管理啦~要问我为什么转投bitwarden的怀抱?其实很简单,chrome浏览器自带的密码管理器弄丢了我的一部分密码!虽然后期找回一部分,可是还是令人不爽的!好吧,废话少说,开始今天的教程~
如果你关注这个项目的话你会发现,全网关于bitwarden_rs可以说是“满天飞”了,我为啥现在才写?因为官方终于添加了新功能——回收站,有了回收站,我才好放心写这篇文章,以下以debian9为例,如果你的linux没装docker,需要装一下(debian9 以下需要重新升级下系统版本)
文章目录
安装docker
以下内容复制自官方文档https://docs.docker.com/engine/install/debian/
#卸载旧版本
sudo apt-get remove docker docker-engine docker.io containerd runc sudo apt-get update sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common # 添加gpg key curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add - # 安装docker源 sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/debian \ (lsb_release -cs) \ stable" # 安装docker sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io # 测试dockers是否安装成功_有输出即为安装成功 sudo docker run hello-world # 安装Docker Compose sudo curl -L "https://github.com/docker/compose/releases/download/1.26.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose # 测试docker-compose是否安装成功 docker-compose --version docker-compose version 1.26.0, build 1110ad01
基础工作完成后接下来的步骤就更简单啦~得益于docker搭积木式架构,装个程序项目就跟安装apk一样简单~
还是跟着官方文档走
安装bitwarden_rs
安装bitwarden_rs docker pull bitwardenrs/server:latest # 启动bitwarden_rs,注意这里用了非80端口,后期需要nginx反代下。后面会介绍详细的启动命令 docker run -d --name bitwarden -v /bw-data/:/data/ -p 9090:80 bitwardenrs/server:latest # 更新 bitwarden_rs,不用担心数据被删,数据是独立存在的 # Pull the latest version docker pull bitwardenrs/server:latest # Stop and remove the old container docker stop bitwarden docker rm bitwarden # Start new container with the data mounted docker run -d --name bitwarden -v /bw-data/:/data/ -p 8080:80 bitwardenrs/server:latest
这里特别讲一下启动bitwarden_rs的配置参数,
docker run -d --name bitwarden \ -e SIGNUPS_ALLOWED=false \ #不允许注册新用户,第一次使用请改成 true -e WEBSOCKET_ENABLED = true \ #开启websocket通知 -e SMTP_HOST=smtp.domain.tld; \ #SMTP设置 -e [email protected]; \ -e SMTP_PORT=587 \ -e SMTP_SSL=true \ -e SMTP_USERNAME=username; \ -e SMTP_PASSWORD=password; \ -e LOG_FILE=/data/bitwarden.log \ #开启log -e LOG_LEVEL=warn -e EXTENDED_LOGGING=true \ -v /bw-data/:/data/ \ -p 8080:80 \ #修改对外开放端口为非80端口 -p 3012:3012 \ #对应websocks端口 bitwardenrs/server:latest
实际我这里用的启动命令是这样的,
docker run -d --name bitwarden \ -e SIGNUPS_ALLOWED=true \ -e WEBSOCKET_ENABLED = true \ -e DOMAIN = https://51acg.eu.org \ -e LOG_FILE=/data/bitwarden.log \ #开启log -e LOG_LEVEL=warn -e EXTENDED_LOGGING=true \ -v /bw-data/:/data/ \ -p 8080:80 \ #修改对外开放端口为非80端口 -p 3012:3012 \ #对应websocks端口 bitwardenrs/server:latest
设置nginx反代
以上命令搞定后,就差最后一步啦,因为我的服务器已经搞定了nginz,所以新建个vhost就可以啦,
server {
listen 80;
listen 443 ssl http2;
server_name domain; # 根据实际情况修改!!!
ssl_certificate /data/bitwarden/cert/xxx.crt;
ssl_certificate_key /data/bitwarden/cert/xxx.key;
ssl_session_timeout 10m;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=60s;
resolver_timeout 2s;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
if ($ssl_protocol = "") { return 301 https://$host$request_uri; }
# Allow large attachments
client_max_body_size 128M;
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;
}
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;
}
}一切准备就绪,service nginx restart ,访问密码管理页面,不出意外会出现以下画面
接下来就是喜闻乐见的导出密码-导入密码-安装各平台插件-开始服役的过程啦~
设置开机启动
官方给出了基于systemd service的自启方案 vi /etc/systemd/system/bitwarden.service
[Unit] Description=Bitwarden After=docker.service Requires=docker.service [Service] TimeoutStartSec=0 ExecStartPre=/usr/bin/docker pull bitwardenrs/server:latest ExecStart=/usr/bin/systemd-docker --cgroups name=systemd --env run \ -e SIGNUPS_ALLOWED=true \ -e WEBSOCKET_ENABLED = true \ -e LOG_FILE=/data/bitwarden.log \ -e LOG_LEVEL=warn -e EXTENDED_LOGGING=true \ -v /bw-data/:/data/ \ -p 8080:80 \ -p 3012:3012 \ --rm --name %n bitwardenrs/server:latest Restart=always RestartSec=10s Type=notify NotifyAccess=all [Install] WantedBy=multi-user.target
设置备份
目前备份方案比较成熟的是在本地加密一次后备份到Dropbox上,对于一些国内用户来说加密后备份到坚果云比较实际,建议勤备份,至少要保证一周之内的数据都备份到~
喜欢dropbox的同学可以用这个https://github.com/shivpatel/bitwarden_rs_dropbox_backup 参考项目页面教程即可
另外说下一些安全加固,你可以指定域名为特定path,这样可以保护域名不会被其他人发现,或者干脆禁止WEB端直接访问,这样其他人不会知道你的这个域名搭建了bitwarden_rs,减少数据泄露的风险~如果只是在特定设备上运行的话,可以用hosts方式强制指定ip到域名并不做公网dns解析,以上几条折腾下来,应该是没人知道你在哪搭建了密码管理服务啦~
更新:请尽量避免使用”附件“功能,因为这个功能是有缺陷的,即WEB端导出密码库,导出的密码库中是没有附件的!为了避免数据丢失,请优先备份服务器上的.db文件(打包即可),避免掉坑!