最近 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;
保存后,重载 nginx 配置 :/etc/init.d/nginx reload
配置 bitwarden_rs
打开你的域名,就会看到以下界面:
点击创建账号, 填写邮箱、密码等信息,登录后,就可以看到后台界面
之后就可以从 lastpass 导入之前的密码
点击工具:
为安全起见,建议设置 两步登录:
安装浏览器扩展
应用商店搜索 bitwarden:
安装启用,然后设置 url,点击左上角:
在 服务器URL
中输入你的域名地址,然后点击保存,之后再登录刚刚创建的账号:
之后设置自动填充:
设置 - 选项
这样就完成设置,可以使用了。
其他
关闭注册
如果只希望自己使用,那么就需要关闭注册。
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 点备份到谷歌盘
3 comments
请教大佬配置完以后怎么打开 rs 地址?直接 403 了
求试cookies