背景
之前使用的 lastpass 密码管理软件,可以跨平台,刚开始可以免费使用,后来变为收费,再加上希望自建平台,可以将数据放在自己的服务器上,于是看到了 Bitwarden,它开源免费,支持私有部署,跨平台支持 Windows、Mac、Linux、iOS、Android 平台,同时也提供了Chrome、Edge、Firefox、Safari 等浏览器扩展,可以导入 lastpass 数据,完全符合个人使用需求,但是这个项目是基于 .Net 开发,使用 MSSQL 数据库,部署起来对服务器要求比较高,于是有人使用 rust 语言实现了 Bitwarden 的 API,这就是 vaultwarden,之前叫 “BitWarden_rs”,下面开始介绍 vaultwarden 的安装使用。
准备工作
服务器
域名
域名 HTTPS 证书
⚠ 如果是国内服务器,域名需要备案
系统环境
操作系统:CentOS 7.8
安装 Docker
官方推荐使用 Docker 部署,那么第一步就是要安装 Docker。
依次执行以下命令,添加 yum 源。
$ yum update
$ yum install epel-release -y
$ yum clean all
$ yum list
执行以下命令,安装 Docker。
$ yum install docker-io -y
执行以下命令,运行 Docker。
$ systemctl start docker
执行以下命令,检查安装结果。
$ docker info
docker是否启动
$ systemctl status docker
加入开机启动
$ systemctl enable docker
查看容器运行状态
$ docker ps
BitWarden_rs 安装配置
安装
$ docker pull bitwardenrs/server:latest
启动
docker run -d \
--name bitwarden \
-p 8880:80 \
-p 3012:3012 \
--restart=always \ #自动重启
-e SIGNUPS_ALLOWED=true \ #允许注册
-e WEB_VAULT_ENABLED=true \ #Web客户端
-e DOMAIN=https://bw.zerow.cn \
-e LOG_FILE=/data/bitwarden.log \
-v /data/bitwarden/data:/data \
bitwardenrs/server:latest
关闭
$ docker stop bitwarden
升级
# 重新拉取镜像
docker pull bitwardenrs/server:latest
# 停止、删除原容器
docker stop bitwarden
docker rm bitwarden
# 启动新容器
执行上面的【启动】,执行 docker run 命令。
Nginx 配置
SSL 证书
腾讯云、FreeSSL 都可以申请免费的 SSL证书,申请成功后将 SSL 证书放置在 /www/server/nginx/cert/bw.zerow.cn
nginx.conf 配置文件
server
{
listen 80;
listen 443 ssl http2;
server_name bw.zerow.cn;
index index.php index.html index.htm
ssl_certificate /www/server/nginx/cert/bw.zerow.cn/fullchain.pem;
ssl_certificate_key /www/server/nginx/cert/bw.zerow.cn/privkey.pem;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
add_header Strict-Transport-Security "max-age=31536000";
error_page 497 https://$host$request_uri;
if ($scheme = http) {
return 301 https://$server_name$request_uri;
}
location / {
proxy_pass http://127.0.0.1:8880;
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:8880;
}
location = /robots.txt {
root /www/wwwroot/bw.zerow.cn/;
}
access_log /www/wwwlogs/bw.zerow.cn.log;
error_log /www/wwwlogs/bw.zerow.cn.error.log;
}
重启 Nginx
$ nginx -s reload
客户端使用
网页端
浏览器输入配置的域名 https://bw.zerow.cn
即可打开 Bitwarden 网页密码库,注册一个私人账号后就可以正常使用。
浏览器插件
在扩展程序中搜索“Bitwarden”,即可找到“Bitwarden - 免费密码管理器”,安装完成后点击插件左上角的⚙【设置】,在【服务器URL】中输入:“https://bw.zerow.cn
”,点击右上角的【保存】按钮,然后使用在网页端注册的账号密码登录。
- 其它客户端都是同样操作。
- 当前网页 URL 匹配到密码时,使用快捷键
Ctrl
+Shift
+L
可以自动填充表单
安装 Docker Compose
Docker Compose 是用于定义和运行多容器 Docker 应用程序的工具,通过使用 YML 文件来配置应用程序需要的所有服务,使用 Docker Compose 可以更方便管理容器,如果不使用此工具,只使用 docker 命令当然也是可以的。
下载:Docker compose
GitHub
$ sudo curl -L https://github.com/docker/compose/releases/download/v2.4.0/docker-compose-linux-x86_64 -`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
加速地址:
$ sudo curl -L https://github.91chi.fun//https://github.com//docker/compose/releases/download/v2.4.0/docker-compose-linux-x86_64 -`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
如果提示:“Failed to create the file /usr/local/bin/docker-compose: No such file
Warning: or directory”,则需要创建目录:
$ sudo mkdir /usr/local/bin
添加可执行权限
$ sudo chmod +x /usr/local/bin/docker-compose
验证是否安装成功
$ docker-compose --version
创建软链接
$ ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
创建配置文件
定位到 Dockers compose 目录,比如我的是 /usr/local/bin/
,新建一个 docker-compose.yml
文件:
version: "3"
services:
bitwarden:
image: bitwardenrs/server
container_name: bitwardenrs
restart: always #在容器非正常退出时,重启
ports:
- "127.0.0.1:8880:80" #将8880端口映射到镜像80端口
- "127.0.0.1:3012:3012" #WebSocket端口
volumes:
- ./bw-data:/data
environment:
WEBSOCKET_ENABLED: "true" #开启WebSocket通知
SIGNUPS_ALLOWED: "false" #开启注册,自己注册后改成fale
WEB_VAULT_ENABLED: "true" #web客户端
启动容器
执行 docker-compose up -d
拉取镜像并启动容器
♥ 常用命令
docker-compose pull
更新镜像docker-compose stop
停止容器docker-compose restart
重启容器docker-compose down
停止并删除容器
其它配置
添加 robots.txt
网站根目录(/www/wwwroot/bw.zerow.cn/)新建 robots.txt 文件:
User-agent: *
Disallow: /
发送邮件通知
-e SMTP_HOST=<smtp.domain.tld> \
-e SMTP_FROM=<bitwarden@domain.tld> \
-e SMTP_PORT=587 \
-e SMTP_SSL=true \
-e SMTP_USERNAME=<username> \
-e SMTP_PASSWORD=<password> \