最近 lastpass 更改了免费政策,将从 3 月 16 日起限制免费版用户访问其服务的设备类型,免费用户只能在 PC 端和移动端之间选择其中一个设备类型。

因此决定自建 bitwarden

本文介绍通过 Docker 快速搭建 bitwarden 的第三方 bitwarden_rs,配合 Nginx 反代,同时介绍如何备份 bitwarden_rs 数据。

准备工作

  • 稳定靠谱的 VPS 服务器,以 Debian 10 为例
  • 一个域名
  • 基本的 Linux 使用常识

首先搭建密码管理,当然需要一台靠谱的服务器,个人推荐大厂的 VPS,比如 DigitalOcean、Vultr、Linode 等等国际大厂,不建议使用野鸡服务商及国内服务器。

如果你没有自己的 VPS 可以看下这篇文章介绍的:

域名购买可以参考这篇文章:

至于基本的 Linux 使用常识,主要包括如何连接 VPS,如何运行命令(即复制粘贴)

如果不懂的,也可以在本站搜索关键词:建站之路

安装 Docker

以下教程基于 Debian10 系统,其他系统大同小异,自行修改命令。

首先安装 Docker 和 docker-compose:

bash <(curl -L https://get.docker.com/)
curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
systemctl start docker
systemctl enable docker

部署 bitwarden_rs

首先创建 Bitwarden_rs 的运行目录:

cd ~ && mkdir bitwarden && cd bitwarden

这里默认使用的是 root 用户登录,因此目录就是 /root/bitwarden

然后创建 docker-compose 配置文件:(复制以下所有内容一起粘贴运行)

cat > ~/bitwarden/docker-compose.yml<<EOF
version: "3"

services:
  bitwarden:
    image: bitwardenrs/server
    container_name: bitwardenrs
    restart: always
    ports:
        - "127.0.0.1:8088:80" #将宿主机8088端口映射到docker的80端口
        - "127.0.0.1:3012:3012"
    volumes:
      - ./bw-data:/data
    environment:
      WEBSOCKET_ENABLED: "true" #是否开启WebSocket
      SIGNUPS_ALLOWED: "true"   #是否开启注册,先设置为true,搭建完毕自己注册后再改为false
      WEB_VAULT_ENABLED: "true" #是否开启Web客户端,设为true
      #ADMIN_TOKEN: ""   #后台登陆密码,这个一般就不建议开启了,自用基本上也不需要直接注释或者删除都行,当前是没启用,如需启用去掉ADMIN_TOKEN前面的 # ,并生成安全密码
EOF

然后拉取并运行镜像:

docker-compose up -d

看到 Starting bitwardenrs ... done 的提示信息就代表成功运行

设置 Web 服务器

接着设置 web 端。

我这里使用的是 lnmp 一键脚本安装 nginx 并配置证书的,比较方便

首先安装 LNMP,如果你只需要安装 nginx,则直接运行以下命令:

apt install screen -y
screen -S lnmp
wget http://soft.vpser.net/lnmp/lnmp1.7.tar.gz -cO lnmp1.7.tar.gz && tar zxf lnmp1.7.tar.gz && cd lnmp1.7 && ./install.sh nginx

根据服务器的性能差异,安装时间不一。

安装完毕后,新增站点:

lnmp vhost add

第一步输入域名

伪静态部分可以输入 bitwarden_rs ,方便待会设置反代。

其他全部 n 回车即可

注意选择添加 SSL 证书:

Add SSL Certificate (y/n) y
1: Use your own SSL Certificate and Key
2: Use Let's Encrypt to create SSL Certificate and Key
Enter 1 or 2: 2

添加完毕后,新增反代配置:

nano /usr/local/nginx/conf/rewrite/bitwarden_rs.conf

输入以下内容:

client_max_body_size 0;

location / {
    proxy_pass http://127.0.0.1:8088;
    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:8088;
}
#以下部分是web端管理员页面,如果docker-compose里没有开启ADMIN_TOKEN,就可以删掉以下部分:
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:8088;
}

之后再编辑站点配置文件:

nano /usr/local/nginx/conf/vhost/你的域名.conf

删除以下部分:

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
    expires      30d;
}

location ~ .*\.(js|css)?$
{
    expires      12h;
}

然后还可以新增301跳转到 https:

return 301 https://你的域名$request_uri;

Termius_oWSUjtUyiY.png

保存后,重载 nginx 配置 :/etc/init.d/nginx reload

配置 bitwarden_rs

打开你的域名,就会看到以下界面:

chrome_sAv8MP48qm.png

点击创建账号, 填写邮箱、密码等信息,登录后,就可以看到后台界面

之后就可以从 lastpass 导入之前的密码

点击工具:

chrome_yH91fdPAbx.png

为安全起见,建议设置 两步登录:

chrome_uaDuR1YGgi.png

安装浏览器扩展

应用商店搜索 bitwarden:

chrome_nywYH2aBE1.png

安装启用,然后设置 url,点击左上角:

APaoJ9WkWD.png

服务器URL 中输入你的域名地址,然后点击保存,之后再登录刚刚创建的账号:

pG99BQdaAe.png

之后设置自动填充:

设置 - 选项

chrome_81vMjl1HBg.png

w4bb1hVtnF.png

这样就完成设置,可以使用了。

其他

关闭注册

如果只希望自己使用,那么就需要关闭注册。

cd ~/bitwarden
docker-compose down
nano docker-compose.yml

SIGNUPS_ALLOWED: "true" 改成 SIGNUPS_ALLOWED: "false" 保存

之后再重新启动容器:

docker-compose up -d

自动备份

数据无价,当然需要经常备份,这里使用脚本,配置 rclone 可以备份到各大网盘,这里以 google drive 作示例

关于 rclone 的配置使用,可以在本站搜索关键词 rclone

这里提供一个备份脚本:

nano backup.sh

输入以下内容,自行修改:

#!/bin/bash
/usr/lib/p7zip/7z  a -tzip -p你的密码 -mem=aes256 /root/bitwarden/backup/bitwarden-backup-$(date +%Y%m%d_%H%M%S).7z /bw-data/
/usr/bin/rclone clone /root/bitwarden/backup 谷歌网盘:bitwarden
sleep 30
rm -f /root/bitwarden/backup/bitwarden-backup-*
echo "BACKUP DATE:" $(date +"%Y-%m-%d %H:%M:%S") >> /var/log/backup.log

设置权限:

chmod +x backup.sh

设置定时运行:

crontabe -e
00 1 * * * /root/bitwarden/backup.sh

这里设置的是每日凌晨 1 点备份到谷歌盘

Last modification:March 4, 2021
如果觉得我的文章对你有用,请随意赞赏