不久之前发现我的网易账号被撞库攻击了,用的密码是我最早用的密码,还有最近一次密码泄露事件是超星学习通的数据库被脱裤的消息,涉及了1.6亿条个人信息,种种消息表明,我应该考虑使用密码管理器了。
经过了解之后发现,密码管理器市面上虽然有1Password等优秀商业方案,但是要付费。主流浏览器Chrome,Firefox等也提供原生的密码保存方案,但是也仅仅只能在浏览器使用,不能跨平台使用。
最后发现了 bitwarden ,通过使用 GitHub 开源的 vaultwarden 服务端,bitwarden 官方客户端实现跨平台 (PC, Mac, browser, android, IOS) 密码管理服务
📒 简介
bitwarden 是一款可靠的开源密码管理系统,它可以安全地接管你的所有密码,并将其加密保存在你自己的服务器上,支持全平台客户端,包括网页端、桌面端、浏览器拓展、手机应用以及Linux命令行客户端。
服务端
vaultwarden 是一个使用 Rust 编写的非官方 Bitwarden 服务器实现,较于官方版具有占用内存小、性能好的特点,它与官方的任意平台上的客户端兼容。
客户端
使用官方的客户端即可,具体 点击链接 下载各平台版本
📌 事前说明
为了文章简洁,以下参数值在本教程中用作示例,无论在哪里看到,都需要将它们替换成你的实际值:
- 域名:vault.example.com
- 端口号:8086
🛠 前提条件
- 一台长期稳定运行的服务器
- 会部署 docker
- 会 nginx 或者 traefik 反向代理
- 签发好了需要部署的域名的证书
✈ 部署
服务端
执行 cd 命令到你想要安装 vaultwarden 的目录,然后执行以下步骤:
自动备份配置
-
配置 Rclone
执行以下命令,根据终端提示选择合适的选项进行配置
1 2 3 4
docker run --rm -it \ -v $(pwd)/back-up/config:/config/ \ ttionya/vaultwarden-backup:latest \ rclone config
支持的远程储存系统请看 rclone
-
检测 Rclone
1 2 3 4
docker run --rm -it \ -v $(pwd)/back-up/config:/config/ \ ttionya/vaultwarden-backup:latest \ rclone config show
运行服务端
-
创建 docker-compose.yml
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 39 40
version: '3.7' services: vaultwarden: image: vaultwarden/server:latest restart: always ports: - '8086:80' # 这里设置你镜像映射的端口 environment: LOG_FILE: /data/log/vaultwarden.log # 镜像内 log 文件存储位置 TZ: Asia/Shanghai # 镜像时区 ADMIN_TOKEN: '' # vaultwarden 管理员 token (登录后台需要) SIGNUPS_ALLOWED: 'false' # 是否允许用户注册 (为false则只有管理员邀请才能使用你部署的vaultwarden) volumes: - ./vaultwarden/data:/data/ - ./vaultwarden/log:/data/log backup: image: ttionya/vaultwarden-backup:latest restart: always environment: RCLONE_REMOTE_NAME: 'aliyun' # 填刚刚在 Rclone 配置的远程名称 RCLONE_REMOTE_DIR: '/vaultwarden-stellarisw' # 填 Rclone 备份文件存储的位置 # RCLONE_GLOBAL_FLAG: '' CRON: '5 * * * *' # 备份时间的 Cron 表达式 ZIP_ENABLE: 'TRUE' # 将所有备份文件打包为压缩文件 ZIP_PASSWORD: 'WHEREISMYPASSWORD?' # 压缩文件的密码 ZIP_TYPE: 'zip' # 压缩文件格式 BACKUP_FILE_DATE_SUFFIX: '' # 备份文件名后缀 BACKUP_KEEP_DAYS: 0 # 保存最近 x 天的备份文件,设置为 0 会保存所有备份文件 TIMEZONE: 'Asia/Shanghai' # 镜像时区 # PING_URL: '' # MAIL_SMTP_ENABLE: 'FALSE' # MAIL_SMTP_VARIABLES: '' # MAIL_TO: '' # MAIL_WHEN_SUCCESS: 'TRUE' # MAIL_WHEN_FAILURE: 'TRUE' volumes: - ./back-up/data:/bitwarden/data/ - ./back-up/config:/config/
-
运行镜像
1
docker-compose up -d
反向代理
介绍两种方式设置反向代理,Nginx 和 Traefik,任选一种即可
Nginx
|
|
traefik
静态配置:
|
|
动态配置:
|
|
后台设置
进入管理页面 https://vault.example.com/admin
配置,具体配置选项说明看 Bitwarden 部署和使用
在邮箱设置中多说一点,邮箱一定要设置,因为要必须要管理员邀请用户才能使用你部署的 vault
如果你没有自己的邮件服务器,请看我的这篇文章 [搭建一个自己的邮件服务器](https://blog.stellaris.wang/p/experience/mail-server/)
当然,你也可以先在 docker-compose.yml 文件中将 environment 部分的 SIGNUPS_ALLOWED 的值调整为 false,
在你自己注册完自己的帐号后可以选择在后台管理页面关闭注册功能
客户端
各平台的下载页面请进入 bitwarden 官网下载
使用方法以 app 为例:
-
进入登录主页面后,点击右上角的设置按钮
-
将 Server URL 换成你自己的服务器地址即可
另外提示一下,可以在 app 设置中文界面
使用技巧
可以进入 chrome://extensions/shortcuts
地址,设置 bitwarden 插件自动填充的快捷键
推荐设置为 Ctrl+Q
如果一个网站有多个账户的话,你可以多次按快捷键进行切换账户和密码
导入密码
相信大家在用 bitwarden 之前都是用的 chrome 来保存或者自动填充你的密码吧?
bitwarden 支持从众多其他密码平台批量导入密码,非常全面。包括各种浏览器,LassPass,1Password等商业平台,也支持如passbolt等开源平台,很方便!
以 chrome 导出密码并导入进 bitwarden 为例:
-
依次进入
设置
->自动填充
->密码
->导出密码
-
点击按钮->
导出密码
-
进入
vault.example.com
将刚刚得到的 .csv 文件导入到密码库中