自建密码管理器:强烈推荐bitwarden_rs

今天推荐个密码管理程序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文件(打包即可),避免掉坑!

 
         

分享几个临时邮箱合集

临时邮箱合集,以下这些小编亲测可用,值得收藏哦 👉 Temp-Mail Temp-Mail 👉 AdGuard Temp Mail AdGuard Temp Mail 👉 Guerrilla Mail Guerrilla Mail 👉 Best T...

注册bgm账号提示“抱歉抱歉,帐户激活服务暂时不可用,请稍后再试”之解决办法

今天尝试注册https://bangumi.tv/,注册前半段没啥说的,很简单。结果跑去激活账户遇到了 “抱歉抱歉,帐户激活服务暂时不可用,请稍后再试”…一阵无语过...

本富科技锂电池充电器wifi连接密码是多少?

搜了一圈,在某音找到了答案。。。 默认wifi密码 BFKJ1688 登录页面 http://192.168.4.1 调试密码 666666 希望能帮到你哈

pantaloon 6月解密可获得游戏 Polterguys: Possession Party(附简易答案)

参与地址 pantaloon ,输入名字和邮箱地址join获取验证码登入。 送的游戏是这个Polterguys: Possession Party 简单说下答案哈。。。解密苦手表示猜了好久,也...

手动部署tuicV5到linux vps上

刚刚折腾了下,成功安装tuicV5到小鸡上2333 ,还别说,速度和hysteria比起来也不差,用起来还不错~ 我这里分享下我折腾安装全过程,其实还挺简单的 #新建个...

API切换cloudflare边缘证书颁发机构

已知cf边缘证书颁发机构有四种 cf自家 、Google、let‘s encrypt、setcigo。其中cf自家证书有效期最长,有一年,其余皆是三个月。。。 可以用命令行手动切换为...