0%

在win10自用机上使用Nginx+Docker部署bitwarden_rs

最初的想法

从很久之前就一直想要找到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

现在你已经可以在本机使用Bitwarden的服务了,如果想让自己的手机或其他设备也安全地用上,请继续往下看。

接下来是Nginx进行反向代理

先到Nginx官网http://nginx.org/上下载最新的适用于Windows的Nginx
Nginx官网
Nginx下载
下载Nginx压缩包之后找一个文件夹解压,我解压到了/bitwarden文件夹下。

然后再bitwarden/conf/目录下创建一个文件夹,命名为cert。

然后去给你的域名申请一个HTTPS证书,我是用了阿里云免费的证书,下载Nginx版本的证书(包含xxx.key和xxx.pem两个文件),然后把这两个文件放到cert下面。

然后编辑bitwarden/conf/nginx.conf 的配置,如下:

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
worker_processes 1;

events {
worker_connections 1024;
}


http {
# HTTPS server
server {

listen 443 ssl; #SSL协议访问端口号为443。此处如未添加ssl,可能会造成Nginx无法启动。
server_name localhost; #将localhost修改为您证书绑定的域名,例如:www.example.com。
ssl_certificate cert/domain name.pem; #将domain name.pem替换成您证书的文件名。
ssl_certificate_key cert/domain name.key; #将domain name.key替换成您证书的密钥文件名。
ssl_session_timeout 10s;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #使用此加密套件。
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #使用该协议进行配置。
ssl_prefer_server_ciphers on;

location / {
proxy_pass http://localhost;
}
}
}

最后记得设置域名的解析记录,把你要的域名解析到你电脑的IP地址,之后就能通过域名进行https访问了。

我是解析到了我的内网IP地址,所以说我的手机需要和电脑连接同一个wifi才能访问到电脑的服务器。如果你想要让所有设备都能访问,那么可以用frp把你的电脑的443端口映射到云服务器上,同时把域名解析的ip设置你的云服务器的ip。(或者直接把bitwarden部署到你的云服务器上)

至此,已经可以使用https的方式,访问服务器了,部署已经完成。

客户端

Bitwarden提供了多种客户端,有安卓、IOS的APP端、浏览器web端、浏览器插件、win、linux、macOS的桌面端、甚至还有好几个命令行的版本,全部可以从官网下载。https://bitwarden.com/#download

启动脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ProcessName = "docker desktop"
if((get-process $ProcessName -ErrorAction SilentlyContinue) -eq $Null)
{
echo "Docker is not running,strating...."
start "Docker Desktop"
sleep 20
}
else
{
echo "Process is running."
}

docker start bitwarden
.\nginx

将脚本保存为xxx..ps1,然后把这个脚本放到与Nginx.exe同目录下,把docker.exe的快捷方式也放到这个目录下(或者设置docker为开机启动)。

你可以把这个脚本设置为开机启动,你可以另外写一个run.bat

1
2
@echo off
powershell .\run.ps1

然后win+r,输入shell:startup后回车,打开控制开机自启动的文件目录,然后把这个bat的快捷方式放进去文件夹,之后开机就会自启动了。

结束脚本

1
2
3
.\nginx -s stop
docker stop 822faa38fd55
choice /t 2 /d y /n >nul

其中822faa38fd55指的是容器的ID(可以通过docker ps -a来查看容器的ID)
将脚本保存为xxx.bat

本文地址: https://www.chimaoshu.top/在win10自用机上使用Nginx-Docker部署bitwarden-rs/
版权声明:本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议,转载请注明出处。

Welcome to my other publishing channels