简介
之前一直是使用1password,个人感觉除了是收费的,其他都很牛逼,知道我遇到了bitwarden
bitwarden 也是一款优秀的密码管理工具,支持全平台加浏览器插件,关键是支持自建,而且自建是免费的,这就很nice,个人感觉1password有的功能bitwarden都有,而且因为自建网络上会相对很流畅,因为我家的集群是树莓派swarm集群,所以下面我就介绍在swarm集群上的搭建
架构
流量是下面这个样子的
云端frp服务器->本地frp客户端->本地traefik->bitwarden
docker stack file
version: "3"
services:
bitwardenrs:
image: "bitwardenrs/server:1.14.2-raspberry"
volumes:
- bitwardenrs-data:/data/
deploy:
replicas: 1
placement:
constraints:
- node.hostname == bboysoul-swarm-slave2
labels:
- traefik.http.routers.bitwardenrs-bitwardenrs-http.rule=Host(`bitwardenrs.examle.com`)
- traefik.http.routers.bitwardenrs-bitwardenrs-http.entrypoints=web
- traefik.http.routers.bitwardenrs-bitwardenrs-http.middlewares=bitwardenrs-redirectscheme
- traefik.http.routers.bitwardenrs-bitwardenrs-https.rule=Host(`bitwardenrs.examle.com`)
- traefik.http.routers.bitwardenrs-bitwardenrs-https.tls=true
- traefik.http.routers.bitwardenrs-bitwardenrs-https.tls.certresolver=myresolver
- traefik.http.routers.bitwardenrs-bitwardenrs-https.entrypoints=websecure
- traefik.http.services.bitwardenrs-bitwardenrs.loadbalancer.server.port=80
- traefik.http.middlewares.bitwardenrs-redirectscheme.redirectscheme.scheme=https
- traefik.http.middlewares.bitwardenrs-redirectscheme.redirectscheme.permanent=true
networks:
- app
networks:
app:
external: true
volumes:
bitwardenrs-data:
driver_opts:
type: "nfs"
o: "addr=10.10.100.244,rw"
device: ":/export/docker-volume/bitwardenrs/bitwardenrs-data"
解释下关键的参数 labels层级下都是定义和前端traefik相关的东西 placement下定义我要运行bitwardenrs在bboysoul-swarm-slave2这个节点上,因为是个人使用所以我就不考虑部署多个节点了,还有本地树莓派资源也快要不够的缘故,单节点是够用了的
image因为是树莓派的缘故,所以使用的是bitwardenrs/server:1.14.2-raspberry
数据使用nfs volume挂载到我的nas上
还有我所有的应用都是运行在app网络上的,所以我就定义了下网络
一个小问题
当我执行
docker stack deploy -c docker-compose.yaml bitwarden
完成之后ps日志会看到
no suitable node (scheduling constraints not satisfied on 7 nodes; unsupported platform on 1 node)
可以看到unsupported platform
这是因为bitwardenrs是在amd64架构上编译出来的镜像,但是树莓派上是arm架构的,所以就会导致docker找不到合适的节点去部署,你只要在stack deploy 的时候加上 --resolve-image never
就可以了
–resolve-image 参数在官方文档上解释说Query the registry to resolve image digest and supported platforms (“always”|”changed”|”never”)
也就是说docker运行一个镜像的时候会检查镜像的架构,所以我们只要设置这个参数为never就可以了
docker stack deploy -c docker-compose.yaml --resolve-image never bitwarden
迁移1password数据到bitwarden
首先导出1password数据
选中1password的一个保鲜库,然后点击文件,导出所有导出,这个不能一次导出所有存储库就很麻烦,导出pif文件备用
之后访问我们搭建好的bitwarden注册账号登陆
点击tools->import data->选择导入的文件
导入的话有一个问题,就是不能保留1password原来的分组,不过这个也不影响,正好可以在这个时候清理一下不需要的密码
密码报告功能
和1password一样的是Bitwarden有密码报告功能可以查看分析你的密码是不是安全,可以检查你的密码是不是泄露
打开两步验证
为了安全个人建议还是打开两步验证的功能,因为这是个人的服务器,所以安全性上肯定是不足的,为了防止主密码被破解造成的困扰,推荐下载一个谷歌验证器来做两步验证,当然如果你的谷歌验证器被不小心删除了也没有关系,Bitwarden有一个恢复代码可以恢复你的账户,建议下载这个文件保存下来
最后
因为大部分人不可能家里会有一个docker swarm集群,所以我准备了compose文件来方便大家去搭建
https://github.com/bboysoulcn/awesome-dockercompose/blob/master/bitwarden/docker-compose.yaml
欢迎关注我的博客www.bboy.app
Have Fun