1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 如何通过 Docker 快速部署开源密码管理器 Bitwarden

如何通过 Docker 快速部署开源密码管理器 Bitwarden

时间:2023-12-13 20:17:04

相关推荐

如何通过 Docker 快速部署开源密码管理器 Bitwarden

公众号关注「奇妙的 Linux 世界」

设为「星标」,每天带你玩转 Linux !

前言

两年前,我就想自托管 Bitwarden 密码管理器了,但是直到 年快结束的现在,我才真正动手。在搭建好 Vaultwarden 服务以后,这两天我就干了三件事:

把七年里 Google Chrome 保存的密码导入到 Vaultwarden

删除所有 Google Chrome 保存的密码

整理密码:登录这些年注册过的网站,删除无法访问的网站账号,使用 Bitwarden 生成新的用户名/密码

众所周知,Bitwarden[1]是个基础免费、增值付费、跨平台、自由开源的密码管理器,官方提供了服务端[2]可部署源码,但是它有点太过于庞大。

Vaultwarden[3](原名 Bitwarden_RS)是官方服务端几乎等价的最佳替代品,它占用资源更低并且拥有更丰富的功能。在本文中,我们约定服务端叫做 Vaultwarden,客户端(包括浏览器拓展)叫做 Bitwarden。

社区的大牛们使用 Rust 重写了 Bitwarden API 服务端,除支持几乎所有的官方服务端特性外,它还带给我们一些原本 Premium 用户才能使用的特性,比如:

对组织的支持

文件作为附件(支持加密)

保险库 API 支持

高级 2FA 支持:Yubikey OTP, FIDO U2F, Duo…

Bitwarden TOTP 支持

紧急访问

……

为什么使用 Cloudflare Tunnel?

我们的口号是什么?安全!安全!还是 TMD 安全!

部署 Vaultwarden 的实例通过Cloudflare Tunnel[4]访问,我们就无需关心服务器安全、反向代理、SSL 证书这些问题了,本文以一台刚 DD 重装纯净系统的 Debian GNU/Linux 11 (bullseye) 云服务器为例

安装 Docker

通过 SSH 登录云服务器后,先刷新软件源安装一些基础软件包

$sudoaptupate&&\sudoaptupgrade&&\sudoaptinstall-ywgetcurlvimca-certificatesgnupglsb-release

导入 Docker 官方的 GPG 密钥

$sudomkdir-p/etc/apt/keyrings&&\curl-fsSL/linux/debian/gpg|sudogpg--dearmor-o/etc/apt/keyrings/docker.gpg

设置 Docker 存储库

$echo\"deb[arch=$(dpkg--print-architecture)signed-by=/etc/apt/keyrings/docker.gpg]/linux/debian\$(lsb_release-cs)stable"|sudotee/etc/apt/sources.list.d/docker.list>/dev/null

开始安装

$sudoaptupdate&&\sudoaptinstall-ydocker-cedocker-ce-clicontainerd.iodocker-compose-plugin

验证安装

$sudodockerversion$sudodockercomposeversion

现在 Docker 和 docker compose 就安装好了。

[可选] 注册 Yubikey API

要是您有 Yubikey 的话,Vaultwarden 还支持 Yubikey OTP 的两步验证方法,假如您不幸地将出厂卡槽 (Slot 1) 的 OTP 信息删除了的话,可以参考我的Yubikey 转运日志及上手指南 - OTP[5]部分,重新注册新的 OTP 信息并在 Yubikey 的官方服务器上注册。

否则,您只需要打开Yubico API Key Signup[6]网站,输入您的邮箱和 Yubikey OTP 点击 Get API key 进行注册

Register Yubikey API

注册成功后,妥善保管您的 API 信息

Get Yubikey API

部署 Vaultwarden

为了备份和迁移方便,本文使用 docker compose 部署

#返回用户主目录#新建vaultwarden目录并进入$cd&&\mkdir-pcontainer/vaulwarden&&\cdcontainer/vaulwarden#创建数据映射目录和部署配置文件$touchdocker-compose.ymlvault.env&&\mkdirvault-data

docker-compose.yml 包含部署 Vaultwarden 的配置,vault.env 是它的环境变量

编辑 docker-compose.yml 文件

$vimdocker-compose.yml

写入以下配置

version:'3.3'services:vaultwarden:image:vaultwarden/server:alpinecontainer_name:vaultwardenrestart:alwaysenvironment:-TZ=Asia/Shanghaiports:-1314:80#Vaultwarden映射端口-3012:3012#Websocket映射端口volumes:-'./vault-data:/data'env_file:-./vault.env#环境变量路径

编辑环境变量 vault.env 文件,下面是我的配置文件,您可以参考完整的示例文件[7]修改

IP_HEADER=noneWEBSOCKET_ENABLED=trueWEBSOCKET_ADDRESS=0.0.0.0WEBSOCKET_PORT=3012SENDS_ALLOWED=true#启用紧急访问EMERGENCY_ACCESS_ALLOWED=true#日志等级LOG_LEVEL=warn#注册需要验证?SIGNUPS_VERIFY=trueSIGNUPS_VERIFY_RESEND_TIME=3600SIGNUPS_VERIFY_RESEND_LIMIT=3#允许注册的域名白名单(你的邮箱域名)SIGNUPS_DOMAINS_WHITELIST=#允许创建组织的用户邮箱ORG_CREATION_USERS=you@#使用opensslrand-base6448命令快速生成管理员令牌ADMIN_TOKEN=eefPNlNPHiA13sXw2z8B6/og7K/lTzNo0KFrUKjB9xHzpYtiUTmAa9+NmLPCILcB#允许邀请?INVITATIONS_ALLOWED=true#邀请名称INVITATION_ORG_NAME=Vaultwarden#邀请失效时间(时)INVITATION_EXPIRATION_HOURS=12#密码提示?SHOW_PASSWORD_HINT=false#Vaultwarden域名DOMAIN=#替换您的YubikeyAPI信息(没有请注释掉)YUBICO_CLIENT_ID=87654YUBICO_SECRET_KEY=Sd1yGCsWonKyDAkyhObC1khs2QDJQYo1arrfDmg=#YUBICO_SERVER=/wsapi/2.0/verify#设置您的SMTP发送邮箱信息SMTP_HOST=SMTP_FROM=warden@SMTP_FROM_NAME=VaultwardenService#根据邮箱修改SMTP_SECURITY=force_tls#SMTP端口SMTP_PORT=465SMTP_USERNAME=warden@#密码用''包围起来SMTP_PASSWORD='Y6qMP7LVgx+JOzYa3kKbOq8q'SMTP_TIMEOUT=15

开始启动 Vaultwarden 容器了

$sudodockercomposeup-d

查看 Vaultwarden 是否启动

$sudodockerps-a

安装 Cloudflared

为了方便以后更新建议添加cloudflared 软件库[8],以 Debian 11 (Bullseye) 为例

#导入GPGKey$sudomkdir-p--mode=0755/usr/share/keyringscurl-fsSL/cloudflare-main.gpg|sudotee/usr/share/keyrings/cloudflare-main.gpg>/dev/null#添加软件库$echo'deb[signed-by=/usr/share/keyrings/cloudflare-main.gpg]/cloudflaredbullseyemain'|sudotee/etc/apt/sources.list.d/cloudflared.list#安装cloudflared$sudoaptupdate&&sudoaptinstall-ycloudflared

登录Cloudflare Zero Trust[9]控制台,新建一个 Cloudflare Tunnel,选择系统和架构,复制右边的安装服务命令执行

Install Cloudflared Service

然后给这个 Tunnel 添加 Public Hostname

Add Service Port

[可选] 添加 Websocket Public Hostname

通过 Websocket 主动向桌面客户端推送密码库更新,此处选择 TCP 类型应该是错误的,更多信息可查看Vaultwarden Wiki - Enabling WebSocket Notifications[10]

Add Websocket Tunnel

[推荐] 保护 Vaultwarden 管理员后台路径

默认的管理后台是/admin,只能通过之前设置的 Admin Token 登录,为了防止这个管理入口被人恶意爆破,此处我们可以使用 Cloudflare Zero Trust 设置保护策略。

在Cloudflare Zero Trust[11]控制台左侧导航栏的 Access 里的 Applications ⇒ Add an applications 添加一个访问应用,类型选择 Self-hosted,选择托管 Vaultwarden 的域名,路径写 admin 保存

Admin Access

接着在后面 Policies 和 Authentication 按照你自己的要求设置访问策略和验证方式即可,这样在访问管理员后台的时候,会先通过 Cloudflare Zero Trust 访问策略才能继续。

使用 Bitwarden

第一次使用,在部署的 Vaultwarden 上按照流程注册账号、设置记得住且足够强的 Master Password、添加几种保护账号的两步验证方式

Add 2FA

现在进入 Bitwarden下载页面[12]选择使用的客户端和浏览器插件安装后就可以开始使用啦!

客户端支持:Windows, macOS, Linux, iOS, iPadOS, Android

浏览器支持:Google Chrome, Safari, Opera, Edge, Brave, Tor…

无论是哪种客户端/浏览器,将自托管服务器 URL 修改为您的 Vaultwarden 服务地址

Server URL

在 iPhone/iPad/Android 上可以设置 Bitwarden 为默认的密码自动填充工具(部分国产魔改 Android 可能有所限制)

Set Default Autofill

在 iOS/iPadOS 上的 Bitwarden 客户端设置里,按照 Add extension 提示添加拓展,现在就可以完美使用了!

Add Extension

最后

这几天体验下来真的不错,每个设备上的 Bitwarden 客户端可以设置密码库定时锁定(1~5 分钟都可以)。然后可以用 TouchID、FaceID、Windows Hello 等生物识别方式解锁密码库,非常方便!

此外,这个方案可以也可以在你家里的 NAS、树莓派(参考官方文档选择镜像)、All in One 设备上部署,而完全不需要考虑公网 IP、DDNS、内网穿透、反向代理……

用户名生成和密码生成都支持自定义规则,以后终于不用苦想用户名了;Bitwarden Sent 功能很赞,可以发送文本或文件(最大支持 500MB),设置访问策略、阅后即焚、定时删除……

如果要更新 Vaultwarden Docker 容器

$cd&&\cdcontainer/vaulwarden&&\sudodockercomposedown&&\sudodockercomposepull&&\sudodockercomposeup-d

别忘记定期备份你的 Vaultwarden 哦,如果使用其他数据库后端的,数据库也要单独备份!

引用链接

[1]

Bitwarden:/

[2]

服务端:/bitwarden/server

[3]

Vaultwarden:/dani-garcia/vaultwarden

[4]

Cloudflare Tunnel:/products/tunnel/

[5]

Yubikey 转运日志及上手指南 - OTP:https://www.dejavu.moe/posts/yubikey-setup/#otp

[6]

Yubico API Key Signup:/getapikey/

[7]

完整的示例文件:/dani-garcia/vaultwarden/blob/main/.env.template

[8]

cloudflared 软件库:/index.html

[9]

Cloudflare Zero Trust:https://one./

[10]

Vaultwarden Wiki - Enabling WebSocket Notifications:/dani-garcia/vaultwarden/wiki/Enabling-WebSocket-notifications

[11]

Cloudflare Zero Trust:https://one./

[12]

下载页面:/download/

本文转载自:「Dejavu’s Blog」,原文:https://url.hi-/ujbSt,版权归原作者所有。欢迎投稿,投稿邮箱: editor@hi-。

最近,我们建立了一个技术交流微信群。目前群里已加入了不少行业内的大神,有兴趣的同学可以加入和我们一起交流技术,在「奇妙的 Linux 世界」公众号直接回复「加群」邀请你入群。

你可能还喜欢

点击下方图片即可阅读

AutoCut: 一款通过字幕自动剪辑视频的神器

点击上方图片,『美团|饿了么』外卖红包天天免费领

更多有趣的互联网新鲜事,关注「奇妙的互联网」视频号全了解!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。