【Docker项目】之–Bitwarden密码管理器-搭建并启用两步验证
#教程 #Linux #Docker #Docker-compose #Ubuntu #工具
使用网络服务很难绕开的就是需要记忆账号密码,网络服务越来越多单凭记忆已经难以招架,加之安全的考虑一套简单的账号密码策略肯定是不行的。很多浏览器也已经附带账号密码的记忆、自动填充功能,却很难解决浏览器和一些APP之间的互通。今天我们就利用Docker在自己的服务器上搭建一个简单实用的账号密码管理工具Bitwarden。
安装官方版本对服务器硬件有一定的要求,官方使用的是MSSQL数据库,要求内存至少2G以上,GitHub已经有开发者通过Rust实现了Bitwarden的API替代,对服务器要求较低,数据库使用SQLite,该项目名为vaultwarden
。
Bitwarden官网:https://bitwarden.com
GitHub - Vaultwarden:https://github.com/dani-garcia/vaultwarden
Bitwarden 帮助中心中文版:https://help.ppgg.in
下面是搭建过程,以及如何关闭用户注册、开启两步验证等操作。
1. 安装准备
系统:ubuntu 20.4
工具:docker和docker-compose
2. 搭建
2.1. 创建数据存放位置
mkdir -p /home/ubuntu/docker_data/bitwarden ## 创建文件夹
cd /home/ubuntu/docker_data/bitwarden ## 进入文件夹
vim docker-compose.yml ## 创建docker-compose
2.2. 编辑docker-compose.yml
- 简化版
version: '3'
services:
bitwarden:
image: vaultwarden/server:latest
container_name: bitwarden
restart: always
volumes:
- /home/ubuntu/docker_data/bitwarden:/data
env_file:
- config.env # 使用环境变量文件方便配置
ports:
- "7890:80" # 映射外部访问端口7890,根据自己需要修改
- 需要与已有网络通信
这次要安装的服务器上已经有一个Nginx Proxy Manager
作为反向代理,所以这里直接连接一个公用的docker网络。可以参看:【Docker项目】之–Docker、Docker-compose的安装、更新和卸载
version: '3'
services:
bitwarden:
image: vaultwarden/server:latest
container_name: bitwarden
restart: always
volumes:
- /home/ubuntu/docker_data/bitwarden:/data
env_file:
- config.env # 使用环境变量文件方便配置
ports:
- "8978:80" # 映射外部访问端口8978,根据自己需要修改
networks:
- mynet
networks: # 方便与已有的nginx网络通信。
mynet:
external: true
2.3. 配置环境变量文件和创建Docker网络
2.3.1. 配置环境变量文件
vim config.env
# 是否开放用户注册
SIGNUPS_ALLOWED=true
# Bitwarden 服务使用的域名
DOMAIN=https://xxxx.xxx
# 数据库在容器内的路径
DATABASE_URL=/data/bitwarden.db
# 设置日志路径
LOG_FILE=data/access.log
# 日志级别选项:trace、debug、info、warn、error 以及 off
LOG_LEVEL=warn
EXTENDED_LOGGING=true
# 修改线程,默认为10,若用户多可修改为更大,一般默认不需要设置
ROCKET_WORKERS=10
# 是否开启 Web 客户端
WEB_VAULT_ENABLED=true
详细配置说明:Home · dani-garcia/vaultwarden Wiki · GitHub
环境配置:vaultwarden/.env.template at main · dani-garcia/vaultwarden · GitHub
2.3.2. 创建Docker网络
已经创建的略过。
# 创建一个公用的docker网络
docker network create mynet
# 查看docker网络情况
docker network ls
# 显示如下信息
NETWORK ID NAME DRIVER SCOPE
0134ad30defd bridge bridge local
29474e75ede0 host host local
33bc01a2e0d0 mynet bridge local # 刚刚新建的网络
2.4. 拉去镜像开始安装
docker-compose up -d
3. 使用及展示
3.1. 网页端登录
如果无法创建账号,需要ssl证书开启访问https。
3.2. 浏览器插件
安装后,填入自己的服务器域名,保存登录。
Send
功能,可以做一些临时的记录,多端同步。
随机密码生成器
3.3. Windows客户端
3.4. Android客户端
Android客户端截屏时,提示涉及隐私没有成功,操作没有什么特殊的内容。
3.5. 其他客户端
Install and Sync All of Your Devices | Bitwarden
4. 其他
4.1. 关闭用户注册
注册完用户后,不希望其他人登录注册,可以关闭用户注册。通过修改config.env
中的SIGNUPS_ALLOWED=false
重新安装。
Docker-compose.yml文件中我们已经对数据进行了持久化映射- /home/ubuntu/docker_data/bitwarden:/data
,在环境变量中设置了数据库位置DATABASE_URL=/data/bitwarden.db
,下面我们删除docker容器,使用原有数据重新安装。
# 进入存放docker-compose.yml文件夹,停止容器
docker-compose stop
# 防止意外,先备份数据
cp -r ~/docker_data/bitwarden bitwarden.archive
# 删除原容器
docker-compose down
# 修改config.env文件SIGNUPS_ALLOWED=false
vim config.env
# 重新运行
docker-compose up -d #完成
4.2. 开启两步验证
4.2.1. 开启邮件功能
首先编辑环境配置文件config.env
,配置SMTP服务功能。在最后面增加如下内容
# 启用管理后台并设置token,默认为空不启用,设置token后则启用,这里是一个例子
ADMIN_TOKEN=SDcWJuiL5eTysdcbnigcFEskgv9mu76GvTgUEqpoA3f92Uvj
# 是否启用WebSocket通知,实时同步:true启用,false禁用
WEBSOCKET_ENABLED=true
# 显示密码提示:true启用,false禁用
SHOW_PASSWORD_HINT=false
# 设置SMTP
SMTP_HOST=smtp.163.com
SMTP_FROM=xxxxx@163.com
SMTP_PORT=465
# 邮箱账号,密码
SMTP_USERNAME=xxxxx
SMTP_PASSWORD=XXXXXXXX
# 自v1.25.0起,不再设置SMTP_SSL和SMTP_EXPLICIT_TLS,使用SMTP_SECURITY替代,它有以下选项:starttls、force_tls和off。
# 465端口使用force_tls,587端口使用starttls,25端口使用off。
SMTP_SECURITY=force_tls
# 启用或禁用邀请:true启用,false禁用
INVITATIONS_ALLOWED=false
# 启用或禁用分享发送功能,默认开启,启用true,禁用false
SENDS_ALLOWED=true
ADMIN_TOKEN为管理面板密码,可以使用密码生成器生成。开启邮箱的SMTP服务,这里推荐163的邮箱服务。打开邮箱进入设置
->POP3/SMTP/IMAP
->开启IMAP/SMTP服务
->新增授权密码
,一定要记好授权密码(只显示一次,以后无法查询,只能重新获取)。
设置完后重新安装容器。
登录后会发现多了一个 验证电子邮件
的提示。
按照提示我们验证一下。
4.2.2. 开启两步验证
进入账户设置
->安全
->两步验证
->电子邮箱 管理
,按下面提示操作。
这样就开启成功了。
4.2.3. 获取恢复代码
这里依赖邮箱发送验证码,验证登录。为了防止邮箱服务出现问题,我们还需要获取并记住恢复代码
,防止意外发生,操作如下
4.2.4. 测试两步验证
以上工作完成后,注销账户,我们使用两步验证重新登录一下。
开启两步验证后,如果有其他人登录你的账号,未通过两步验证,会得到如下的邮件提醒。
baidu翻译:
有人试图使用正确的主密码登录到您的帐户,但没有提供在首次登录尝试后3分钟内完成两步登录过程所需的正确令牌或操作。
日期:2022年10月16日星期日上午10:33:05+00:00
IP地址:xxxx
设备类型:xxxx
如果这不是您或您授权的人,那么您应该尽快更改主密码,因为它可能会被泄露。
4.2.5. 通过恢复代码登录
点击参看官方介绍:https://bitwarden.com/help/lost-two-step-device/
有恢复代码:https://bitwarden.com/help/two-step-recovery-code/#use-your-recovery-code
恢复账号两步登录地址:https://your.domain.com/#/recover-2fa/
需要将your.domain.com
修改为自己的域名地址。
4.3. 忘记主密码怎么办(官方答复:删号重建)
4.4. 系统管理
当设置了ADMIN_TOKEN=
后,可以登录系统管理 https://your.domain.com/admin
。链接在登录后的 15 分钟内有效。可以通过删除ADMIN_TOKEN=
或者DISABLE_ADMIN_TOKEN=false
方式关闭系统管理员功能。
这里也可以配置SMTP服务
评论区