缘起
随着年龄的增长,发现记忆力有逐渐下降的趋势。同时有N多注册过的网站、6位QQ号等等都因为时间关系忘记了账号或密码。就关注上了密码管理软件,最疯狂的时候,我的手机上同时安装了不下5、6个密码管理软件。
最开始的时候使用过keepass,但是其免费版本没有提供云同步功能,只能基于Google Drive、Dropbox等软件碾转进行,一不小心就需要进行合并。体验并不是很好。并且当时与iOS系统的密码服务集成了的app都需要收费,免费的app没有办法直接唤起填密码,体验差了1Password等软件不少。后来就弃用了。
1Password一直听说其大名,但一直没有购买。忘了在哪一年,有一次在iOS进行大版本升级的时候,1Passwrod因为App Store的bug,可以免费获取,1Password也因此专门发了一篇blog,话中语气挺无奈的。我也就趁着那一次机会免费将买断制的1Password收入囊中,用了很长一段时间。
另外,还尝试过很多其他软件,比如EnPass、RoboForm、LastPass等,但因为这样那样的原因,都逐渐弃用。
在2019年前后碰到Bitwarden之后,因为其与iOS的集成友好、全平台支持、并且能自建服务器(All my data is belong to me!),逐渐将所有的密码都迁移到了其中,到目前已经有好多年的时间了。
下表是我使用过的,仍然有印象的一些软件的记录,有些软件因为时间久远、并且成文之时我没有专门检查,所列信息如有谬误之处,还请海涵:
密码软件 | 是否收费 | 是否开源 | 是否支持多平台 | 是否支持跨平台/设备同步 | 公有云平台 | 自建服务器 | 云同步方案 | 使用体验 |
---|---|---|---|---|---|---|---|---|
Chrome/Safari等浏览器密码管理功能 | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | 公有云平台 | 与自身浏览器的集成非常好。 跨浏览器支持应该是没有的。 |
1Password | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | 公有云平台、买断制可以使用iCloud | 某次iOS升级造成bug,0元买断。 使用体验整体来说非常好。 |
EnPass | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | 公有云平台、iCloud | |
RoboForm | 时间久远,忘记了。。。 | |||||||
LastPass | 与浏览器集成,没有独立app。 曾经出过安全事故。 | |||||||
KeePass | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | WebDAV、Google Drive、Dropbox等 | 同步、浏览器集成体验较差 |
Bitwarden | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | 公有云平台、自建服务器 | 非常好! 现在的选择 |
2. 因为有的软件使用时间在很久之前,加上软件自身也在不断更新进步。如果上表有谬误,烦请提出,我将跟进修正。
Bitwarden介绍
以下介绍来自维基百科:
Bitwarden是一款自由且开源的密码管理服务,用户可在加密的保管库中存储敏感信息(例如网站登录凭据)。Bitwarden平台提供有多种客户端应用程序,包括网页用户界面、桌面应用,浏览器扩展、移动应用以及命令行界面。Bitwarden提供云端托管服务,并支持自行部署解决方案。
Bitwarden提供了四种类型的记录,我们一般使用得最多的就是登录信息:
- 登录信息
- 也就是通常所说的密码管理服务
- 安全笔记
- 可以加密的文本或者结构化信息
- 也可以当成一个简单的CMDB来用
- 支付卡
- 储蓄卡、信用卡信息
- 身份
- 记录SSN等信息
除此之外,它还支持了TOTP,自身登录也支持多种2FA。如果有需要的话,也可以将文件当作附件加入到Bitwarden的条目中进行管理。

如果需要的话,你可以到他的官网购买公有云托管服务,也可以自建服务器。
下文将介绍如何如何搭建一个Self-hosted的Bitwarden服务器端。如有需要,请参照上一篇文章了解如何配置traefik的服务自发现能力。
搭建Bitwarden服务器
闲话少说,先上Bitwarden的Docker Compose配置文件:
version: '3'
services:
bitwarden:
image: 'vaultwarden/server'
container_name: bitwarden
restart: unless-stopped
networks:
- web
ports:
- 8080:80 # 使用Traefik做反向代理的话,可以注释掉本段
volumes:
- './data:/data' # 映射本地数据储存目录
- /etc/localtime:/etc/localtime:ro # 可选,使容器与本机时间同步
environment:
- SIGNUPS_ALLOWED=true # 是否允许自注册
- DOMAIN=https://bitwarden.example.com # 对外暴露的域名
labels:
- "traefik.enable=true"
- "traefik.docker.network=web"
- "traefik.http.routers.bitwarden.rule=Host(`bitwarden.example.com`)"
- "traefik.http.routers.bitwarden.tls.certresolver=cfresolver"
- "traefik.http.services.bitwarden.loadbalancer.server.port=80"
networks:
web:
external:
true
请注意以下内容:
image: 'vaultwarden/server'
- 我这里没有使用官方的服务器镜像,使用的是一个使用Rust写的第三方兼容服务器镜像。他的GitHub项目位于:
- https://github.com/dani-garcia/vaultwarden
- 它的优势在于:
- 轻量,资源占用低;树莓派就能跑
- 部署简单
- 无须数据库服务器支持(也可以使用MySQL/PostgreSQL)
- 我这里没有使用官方的服务器镜像,使用的是一个使用Rust写的第三方兼容服务器镜像。他的GitHub项目位于:
ports:
- 如果使用反向服务器(Reverse Proxy)作为前端,可以删除本段
- 如果不熟悉Reverse Proxy,建议先保留本段,完全调试通过后,再删除或注释掉本段
labels:
- 本段所有内容,都是用来与traefik集成。其中:
"traefik.docker.network=web"
- traefik可以通过external name为
web
的docker network访问到Bitwarden服务器
- traefik可以通过external name为
"traefik.http.routers.bitwarden.rule=Host(`bitwarden.example.com)`"
- Bitwarden服务器对外暴露的域名
"traefik.http.routers.bitwarden.tls.certresolver=cfresolver"
- 自生成SSL证书的resolver,请参考上一篇文章了解细节
"traefik.http.services.bitwarden.loadbalancer.server.port=80"
- Bitwarden服务器的端口号。traefik将使用这个端口作为目标端口来转发所有发送到Bitwarden服务器的http请求。
- 本段所有内容,都是用来与traefik集成。其中:
启动成功后,你就可以使用 http://YOUR-IP-ADDRESS:8080/ 或者 https://bitwarden.example.com 访问Bitwarden服务器并进行配置了。Bitwarden配置简单,所以具体细节本文略过不表。
NOTE: 此时你没有安装traefik也没有关系,这样的话,labels里面的内容将会被忽略。
在服务器上配置好用户后,就可以直接配置Bitwarden客户端进行使用了。
Bitwarden客户端配置
Bitwarden提供了主流浏览器、以及全平台的客户端,大家可以从Bitwarden的官网进行下载各平台客户端:
- https://bitwarden.com/download/
本文仅以macOS客户端为例展示如何配置。
配置
- 安装好启动Bitwarden客户端后,我们点击“登录到”最右边的下拉箭头,选择“自托管”:

- 在弹出窗口中,输入你的Bitwarden服务器URL后,点击图标进行保存:

- 这时候,就可以逐次输入账号以及密码进行登录使用了
发表回复