最初的想法
从很久之前就一直想要找到1Password的替代品,当时自己用AES256 + RSA2048的加密方式,写一个服务端和客户端,只能在终端黑窗口里面运行,总归没有这些成熟的产品用得爽。后来了解到了Bitwarden,想部署到服务器上,想了想不如部署到本机上吧,不然服务器一到期就一直得续费。原版的Bitwarden服务端的服务对象是比较广的,资源消耗也比较大,总归不是办法。后来了解到Bitwarden_rs,是大佬用Rust重新写的一个不那么耗费资源的版本,就决定是它了。
部署过程
首先是Bitwarden的部署
首先需要在win10上安装Docker,不再赘述。
然后根据 Github上官方给出的说明 ,只要打开命令行,输入下面命令就可以安装完成并部署到localhost中。
首先拉取镜像:
1 | docker pull bitwardenrs/server:latest |
然后是运行
1 | docker run -d --name bitwarden -v /把这个路径换成你本机要存储的数据的绝对路径/:/data/ -p 80:127.0.0.1:80 bitwardenrs/server:latest |
如果要开启管理面板就加个参数,把上面命令换成这个:
1 | docker run -d --name bitwarden -e ADMIN_TOKEN=换成你的管理面板登陆密码 -v /把这个路径换成你本机要存储的数据的绝对路径/:/data/ -p 127.0.0.1:80:80 bitwardenrs/server:latest |
记得把路径换成你本机要存储这些密码数据的路径,如果不设置的话,你电脑一关机,数据就都没了。
当然你也可以把127.0.0.1:80:80中的”127.0.0.1:80”换成你要部署的本机ip的端口,如果想要部署在0.0.0.0(所有指向本机的ip)就直接输入80:80就好了。由于后面我要用Nginx进行反向代理,所以我是部署在了127.0.0.1。
只要你的Docker是正常的(包括网络连接正常),那么运行这两行命令之后,在浏览器访问http://localhost就可以正常访问到了。
现在你已经可以在本机使用Bitwarden的服务了,如果想让自己的手机或其他设备也安全地用上,请继续往下看。
接下来是Nginx进行反向代理
先到Nginx官网http://nginx.org/上下载最新的适用于Windows的Nginx
下载Nginx压缩包之后找一个文件夹解压,我解压到了/bitwarden文件夹下。
然后再bitwarden/conf/目录下创建一个文件夹,命名为cert。
然后去给你的域名申请一个HTTPS证书,我是用了阿里云免费的证书,下载Nginx版本的证书(包含xxx.key和xxx.pem两个文件),然后把这两个文件放到cert下面。
然后编辑bitwarden/conf/nginx.conf 的配置,如下:
1 | worker_processes 1; |
最后记得设置域名的解析记录,把你要的域名解析到你电脑的IP地址,之后就能通过域名进行https访问了。
我是解析到了我的内网IP地址,所以说我的手机需要和电脑连接同一个wifi才能访问到电脑的服务器。如果你想要让所有设备都能访问,那么可以用frp把你的电脑的443端口映射到云服务器上,同时把域名解析的ip设置你的云服务器的ip。(或者直接把bitwarden部署到你的云服务器上)
至此,已经可以使用https的方式,访问服务器了,部署已经完成。
客户端
Bitwarden提供了多种客户端,有安卓、IOS的APP端、浏览器web端、浏览器插件、win、linux、macOS的桌面端、甚至还有好几个命令行的版本,全部可以从官网下载。https://bitwarden.com/#download
启动脚本
1 | $ProcessName = "docker desktop" |
将脚本保存为xxx..ps1,然后把这个脚本放到与Nginx.exe同目录下,把docker.exe的快捷方式也放到这个目录下(或者设置docker为开机启动)。
你可以把这个脚本设置为开机启动,你可以另外写一个run.bat
1 | @echo off |
然后win+r,输入shell:startup后回车,打开控制开机自启动的文件目录,然后把这个bat的快捷方式放进去文件夹,之后开机就会自启动了。
结束脚本
1 | .\nginx -s stop |
其中822faa38fd55指的是容器的ID(可以通过docker ps -a来查看容器的ID)
将脚本保存为xxx.bat
本文地址: https://www.chimaoshu.top/在win10自用机上使用Nginx-Docker部署bitwarden-rs/
版权声明:本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议,转载请注明出处。