在树莓派中搭建bitwarden并把1password数据迁入

简介

之前一直是使用1password,个人感觉除了是收费的,其他都很牛逼,知道我遇到了bitwarden

bitwarden 也是一款优秀的密码管理工具,支持全平台加浏览器插件,关键是支持自建,而且自建是免费的,这就很nice,个人感觉1password有的功能bitwarden都有,而且因为自建网络上会相对很流畅,因为我家的集群是树莓派swarm集群,所以下面我就介绍在swarm集群上的搭建

架构

流量是下面这个样子的

云端frp服务器->本地frp客户端->本地traefik->bitwarden

docker stack file

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
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

欢迎关注Bboysoul的博客www.bboy.app

Have Fun

欢迎关注我的其它发布渠道