前言

随之各大密码管理工具都开始订阅制付费,很多伙伴都转移到 Bitwarden

当然,密码敏感数据放在自己手上才是最安全的。

本教程不使用官方 Bitwarden 镜像,官方对服务器要求较高,这里使用到了 vaultwarden/server 非官方的镜像,更加的轻量。

docker hub:https://hub.docker.com/r/vaultwarden/server

github wik:https://github.com/dani-garcia/vaultwarden/wiki

什么是 Vaultwarden

2021 年 4 月 27 日:bitwarden_rs 项目更名为 Vaultwarden

Vaultwarden 是一个用于本地搭建 Bitwarden 服务器的第三方 Docker 项目。兼容 Bitwarden 官方客户端,仅在部署的时候使用 Vaultwarden 镜像,桌面端、移动端、浏览器扩展等客户端均使用 Bitwarden 官方的客户端。

Vaultwarden 很轻量,对于不希望使用官方的占用大量资源的自托管部署而言,它是理想的选择。

docker compose 在 Github 的地址:https://github.com/docker/compose/releases

vaultwarden 在 Github 的地址:https://github.com/dani-garcia/vaultwarden

vaultwarden 在 docker hub 的地址:https://hub.docker.com/r/vaultwarden/server

vaulwarden 官方文档:https://github.com/dani-garcia/vaultwarden/wiki

vaultwarden 官方文档中文翻译版:https://rs.ppgg.in/

申请 SSL 证书

具体查看:https://blog.kl.do/posts/167770507.html

安装 Bitwarden

自定义一些参数,加入 HTTPS 支持等

SIGNUPS_ALLOWED=false 不允许用户注册
INVITATIONS_ALLOWED=true 开启邀请注册
ADMIN_TOKEN 启用管理页面,需要设置一组身份验证令牌,运行 openssl rand -base64 48
LOG_FILE 日志文件路径
LOG_LEVEL=warn -e EXTENDED_LOGGING=true 日志等级
TZ=Asia/Shanghai: 设置时区
-v /data/bitwarden/data:/data 持久化数据
-p 8443:80: 指定容器的 80 端口暴露在宿主机的 8443 端口上
-p 3012:3012 指定容器的 3012 端口暴露在宿主机的 3012 端口上 用于 websocket 通知

  1. 创建持久化目录
1
mkdir -p /data/bitwarden/data  /data/bitwarden/logs
  1. 拉取镜像
1
docker pull vaultwarden/server
  1. 生成 Admin Token
1
`docker run --rm -it vaultwarden/server /vaultwarden hash`
  1. 启动镜像
1
2
3
4
5
6
7
8
9
10
11
12
13
docker run -d --name bitwarden \
-e SIGNUPS_ALLOWED=false \
-e INVITATIONS_ALLOWED=true \
-e ADMIN_TOKEN=生成的加密 AdminToken \
-e DOMAIN=https://bitwarden.kl.do \
-e WEBSOCKET_ENABLED=true \
-e LOG_FILE=/data/vaultwarden.log \
-e LOG_LEVEL=warn -e EXTENDED_LOGGING=true \
-e TZ=Asia/Shanghai \
-v /data/bitwarden/data:/data \
-p 8443:80 \
-p 3012:3012 \
vaultwarden/server:latest

配置 Nginx Https 反向代理

使用宝塔面板添加反向代理,创建成功后在点击配置文件,添加 websockt 3012 端口的反向代理

1
2
3
4
5
6
7
8
9
location ^~ /notifications/hub {
proxy_pass http://1.14.160.174:3012;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}

location ^~ /notifications/hub/negotiate {
proxy_pass http://1.14.160.174:8443;
}

参考宝塔生成的配置文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#PROXY-START/

location ^~ /
{
proxy_pass http://1.14.160.174:8443;
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 REMOTE-HOST $remote_addr;

add_header X-Cache $upstream_cache_status;

#Set Nginx Cache


set $static_filepV79EK8X 0;
if ( $uri ~* "\.(gif|png|jpg|css|js|woff|woff2)$" )
{
set $static_filepV79EK8X 1;
expires 12h;
}
if ( $static_filepV79EK8X = 0 )
{
add_header Cache-Control no-cache;
}


location ^~ /notifications/hub {
proxy_pass http://1.14.160.174:3012;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}

location ^~ /notifications/hub/negotiate {
proxy_pass http://1.14.160.174:8443;
}
}
1,1 Top

重启 Nginx 服务器!!!

访问 Bitwarden Admin:https://bitwarden.kl.do/admin

image-20220809155420890

输入之前创建的 ADMIN_TOKEN 即可登录

配置 Bitwarden

配置 SMTP 服务器

填写好 SMTP 参数后点击保存,然后使用测试功能测试邮件是否发送成功。

image-20220809160351499

发送邀请邮件

image-20220809160642496

通过邮件的链接进行用户注册

image-20220809160939788

chrome 插件使用

https://chrome.google.com/webstore/detail/bitwarden-free-password-m/nngceckbapebfimnlniiiahkandclblb

image-20220809161037235

image-20220809161102038

检查 WebSocket 通知是否正常

websocket 状态 101 即正常,此时在其他端修改数据会自动同步到所有平台

如果状态在等待中,请检查 3012 端口的反向代理配置,放行 3012 端口,重启 Nginx

image-20220809165043302