在斐讯N1上使用Docker搭建Bitwarden密码管理器

我曾经写过一篇关于如何使用Keepass的博客,但是其实写完之后没多久,我就放弃了Keepass而转投Lastpass,原因是在手机使用频率更高的今天,Keepass缺少一个美观实用的手机客户端。Lastpass用了几年后,又转投了开源的Bitwarden。今天,我打算在斐讯N1上自己搭建一个Bitwarden。

刷入Armbian

N1的降级以及刷各种系统的教程网上很多,随便一搜就能找到,这里不再赘述。我用的是恩山大神flippy制作的"Armbian buster with Linux 5.4.23-amlogic-flippy-28+o",可以在下面的链接里下载。

链接:https://pan.baidu.com/s/1hXrkbAoVpHy0yfOYIOtcRQ
提取码:sspy

这个版本自带Docker一键安装脚本,用以下命令把Docker先装好。

1
2
cd root
./install-docker.sh

然后把Nginx安装上。

1
sudo apt install nginx

安装Portainer

给Docker安装一个可视化面板,操作起来更方便,不装也可以。

1
docker pull portainer/portainer
1
2
3
4
5
6
7
docker run \
-d -p 9000:9000 \ 
-v /var/run/docker.sock:/var/run/docker.sock \
-v /home/docker/portainer:/data \ 
--name portainer \
--restart=always \ 
portainer/portainer

容器启动后,浏览器里输入"ip:9000"即可进入Portainer,第一次登录需要设置账号密码。

安装Bitwarden

现在开始安装Bitwarden,官方提供的Docker镜像比较笨重,所以我们选择这个使用Rust编写的第三方版本,bitwardenrs/server

首先把镜像拉取到本地,选择适合N1的arrch64版本

1
docker pull bitwardenrs/server:aarch64

然后启动运行一个容器。运行之后,在浏览器里输入“内网ip:8001”就可以访问Bitwarden的注册界面了,如果你只想在内网里使用,那基本上大功告成了。(8001随便设置)

1
docker run -d --restart=always --name bitwarden -v /root/bitwarden/data/:/data/ -p 8001:80 bitwardenrs/server:aarch64

外网访问

虽然之前也搭建过网站,但都是使用宝塔来操作的,比较无脑,所以也不会配置Nginx,对其背后的原理也是一只半解。一开始我还怕实现公网访问要费一番功夫,网上查了一些资料,发现如果家里的宽带有公网ip的话还挺简单的。判断是否具有公网ip可以通过以下方法:先用百度搜索ip,看看出来的结果与路由器wan口的ip是否一致,如果一致,说明是公网ip。

宽带有公网ip

有公网ip,非常简单。在路由器里设置端口转发即可。但是由于我的公网ip也不是固定的,每次重新拨号都会变化,所以还是需要设置一下,一种是使用路由器自带的DDNS,注册某个服务后得到的一个域名,无论ip怎么变化,这个域名都能访问家里的N1。但因为我有一个域名闲置着,所以用一下方法使用自己的域名。

首先在DNSPod里设置域名解析,然后在密钥管理里创建密钥。最后,借助Github上的DDNS实现定期更新域名解析到自己的公网ip。DDNS的二进制文件在Armbian上似乎无法运行,所以直接使用python版本,在定时任务脚本改动一下。

1
CMD="$RUN_DIR/python run.py -c $RUN_DIR/config.json";

宽带无公网ip

如果没有公网ip,就需要准备一台虚拟主机了,暂时未做尝试, 待补充。

添加SSL证书

如果不添加ssl证书,在chrome浏览器里是无法创建帐户的,我用的是从腾讯云申请的免费证书。申请通过后,下载解压会得到几个文件夹,选择Nginx。把两个文件改个简单的名字。然后,删掉刚刚创建的容器,使用下面的命令再创建一次。

1
2
3
4
5
6
7
8
docker run -d \
--restart=always \
--name bitwarden \
-e ROCKET_TLS='{certs="/ssl/xyz.crt",key="/ssl/xyz.key"}' \
-v /root/bitwarden/ssl/:/ssl/ \
-v /root/bitwarden/data/:/data/ \
-p 8001:80 \
bitwardenrs/server:aarch64

创建完成之后,使用MobaXterm(Windows)或者Royal TSX(macOS)把刚刚的两个文件上传到"/root/bitwarden/ssl/"文件夹下;放好之后,重启一次容器。现在再通过"https://域名:8001"来访问,尊贵的s就出现了。

自动备份

参考

N1 Docker搭建Bitwarden密码管理平台

斐讯N1 Armbian上安装BitWarden,树莓派安装BitWarden

使用群晖搭建第三方 Bitwarden 密码服务器

updatedupdated2020-05-022020-05-02
点击刷新