文章目录
写在前面
设置密码是件头疼的事儿,过于简单或是统一的密码会严重威胁我们的资产安全。然而设置复杂了,记忆难度大,也更容易被忘记。因此,越来越多的人开始使用 1Password
, LastPass
等软件来管理自己的密码。
得益于记忆能力和自创的密码规则,老猪所有的账号都使用着不同的密码,但仍然交着 1Password 每年 35.88 美金的年费。因为有时候忘的不一定是密码,还有可能是账号。此外软件许可证的密钥不可能背下来,一些极其关键的账户则需要采用更复杂的密码做保护。
对老猪来说,这年费交的肯定是不划算的,大部分时间都用不到它,但又不得不交。直到 Bitwarden 不断成长、脱颖而出,我的 1Password 才顺利下岗!
Bitwarden 简介
Bitwarden 是一款自由及开放源代码的密码管理软件,用户可以在加密的保管库中存储敏感信息(例如网站登录账号)。Bitwarden 提供多种客户端应用程序,包括网页应用、桌面应用、移动应用、浏览器插件以及命令行。Bitwarden 提供云托管服务,也支持自行部署解决方案。
主要特点
- 云端同步
- 保管登录信息、安全笔记、信用卡等信息
- 保管库数据的端到端加密
- 密码历史记录,可以在登入信息中查阅以前的密码
- 与其它 Bitwarden 用户安全的分享保管库中的记录
- 自动填写登录信息到网站或其它应用程序
- 密码生成器
- 两步验证,经由认证器应用、电子邮件、Duo、YubiKey 等
- 文件作为附件
- 数据泄露报告和密码暴露检查
- 跨平台客户端
- 自行部署
- 开放源代码,来自全球的众多开发者在为其贡献改进、修复安全漏洞和程序BUG
建设性意见
- 部署在数据中心、拥有公网 IP 地址的家用网络中,或是使用内网穿透,以便随时随地访问
- 部署在 7 x 24 运行的 Linux 服务器、NAS 网络存储或其它小型化设备上
- 部署在创建有 RAID 阵列的设备上可以避免硬盘损坏引发的数据损毁
准备工作
Bitwarden 部署
Bitwarden 原版适用于企业用户,老猪的教程选择安装它的 Rust 重写版 – Vaultwarden,它的资源占用较小,更适合个人与家庭用户,并与原版任意平台的客户端相兼容。
-
创建用于持久化存储 Vaultwarden 数据的目录(命名规则参考)
mkdir -p '自定义数据目录'/data
-
通过
Portainer
管理面板创建一个Vaultwarden
和MariaDB
专用的网络。点击 Portainer 左侧
Networks
,点击右侧Add network
,在name
处输入vaultwarden-net
,然后直接点击页面底部的Create the network
完成创建。 -
将之前安装的
MariaDB
加入刚才新建的vaultwarden-net
网络中点击 Portainer 左侧
Stacks
,点击右侧列表中的mariadb-phpmyadmin
,切换到Editor
选项卡,加入红框内的内容,然后点击页面下方的Update the stack
完成修改我的数据库之前已经加入过一个应用网络,现在该如何修改?
-
登录之前创建的
phpMyAdmin
管理页面,为Vaultwarden
创建专用数据库和账户点击管理页面 – 账户 – 新增用户账户
用户名填写
vaultwarden
,密码填写insecure
,勾选创建与用户同名的数据库并授予所有权限
,然后点击底部的执行。(账户和密码可自行修改) -
点击 portainer 控制面板左侧
Stacks
,在该页面中点击Add stack
-
为
Stack
命名,根据需要修改下文中提供的模板并粘贴到页面上,然后点击页面底部Deploy the stack
完成创建version: "3" services: vaultwarden: image: vaultwarden/server:latest # latest 安装最新的版本 container_name: vaultwarden restart: always # 设置重启策略 ports: - 15007:80 # HTTP 网页访问端口,例如要改为通过 6001 端口访问,就修改成 6001:80 - 3012:3012 # WebSocket 通信接口 environment: - TZ=Asia/Shanghai # 容器内部时区 - WEBSOCKET_ENABLED=true # 启用 WebSocket 通信 - INVITATIONS_ALLOWED=false # 禁止内部用户邀请注册 - ADMIN_TOKEN=AcLm7gr1P2dKWTml2mYM00hBvVldktbtbrXjeMthpD/SCltFzXfqHE/CBiKOAZT/ # 管理员后台密钥,直接拿我的示例替换几个字母数字或终端执行 openssl rand -base64 48 自己生成 - DATABASE_URL=mysql://vaultwarden:oA1OAAYDFBXWt5l2@mariadb/vaultwarden # mysql://账户:密码@mariadb/数据库 替换为刚才创建的账号密码数据库 - LOG_FILE=/data/vaultwarden.log # 系统日志的保存位置 - LOG_LEVEL=warn # 系统日志的提醒级别 volumes: - "'自定义数据目录'/data:/data" # vaultwarden 数据目录 networks: vaultwarden-net: networks: vaultwarden-net: external: true
登录
现在安装已完成,您可以通过打开 Web 浏览器并转到以下位置登录到您的 Vaultwarden 实例:
http://127.0.0.1:15007
- 如果您不是在本机安装,请不要忘记将
127.0.0.1
替换为安装设备的实际 IP 地址 - 如果您修改了默认的 HTTP 访问端口,请不要忘记将
15007
替换为您自定义的端口