bitwarden是一个开源的密码管理器,可以部署在私有服务器上。官方的bitwarden对服务器配置要求较高,网友开发了bitwardenrs适用于小用户,对配置要求低不怎么占内存。本次采用安装docker后在docker上安装bitwardenrs和nginx,通过nginx反向代理实现HTTPS加密访问bitwarden的方法。
服务器配置:Tencent Hong Kong centOS 7.6 1C1G 25GSSD 30M峰值带宽
服务器上已经运行bitnami wordpress堆栈,因此80和443端口都被apache占用,挂了个人博客。网络上大部分blog都采用nginx做反向代理,由于不懂技术因此也用nginx照做。
安装Docker docker是一个虚拟机,他打包了多个不同主流应用,可以很方便的安装这些应用,并且每个应用都是以容器的形式存在,与宿主机的环境是隔离的,这些应用的配置与运行可以干净的删除不会对宿主机造成影响。
docker中有images 镜像和container 容器,比如我可以在宿主机下载一个nginx镜像,然后我制作两个容器:nginx_1 和 nginx_2,两个容器中都可以通过镜像安装nginx应用,两个nginx是分开的,可以各自用于不同用途,方便管理。
yum install -y docker #安装docker systemctl docker #启动docker 安装bitwarden_rs docker有几个需要事先理解的概念,比如 目录映射。我们可以让容器的目录去映射一个宿主机的目录,简单来讲就是用一个宿主机的目录当做容器应用的目录,这样要修改应用配置或者上传文件只要动宿主机的目录就可以。
我们在run 应用的时候添加以下形式的配置:
-v /library:/library #':'前是要映射的宿主机目录,后面是容器应用的实际目录 端口映射:容器是一个虚拟环境,比如nginx监听的80和443端口,在我的宿主机中这两个端口被Apache占用了,因此我可以分配另外两个端口与容器的80端口和443端口进行映射。
这样一来避免了端口冲突,比如访问//domain:4444实际上就会通过容器的443端口被nginx监听到。需要注意的是通过这种方式要在防火墙打开4444端口,否则浏览器还是无法访问的。
-p 8088:80/tcp 4444:443/tcp #8088映射到80 4444映射到443 映射端口根据需要选择空闲端口即可 mkdir /data/bitwarden #建立宿主机映射目录 docker run -d \ --rm \ --name bitwarden \ -p 8085:80 \ -p 3012:3012 \ -e SIGNUPS_ALLOWED=true \ -e WEB_VAULT_ENABLED=true \ -e DOMAIN=//mydomain.cn \ -v /data/bitwarden:/data \ bitwardenrs/server:latest 上面命令的各个参数含义如下: -d 在后台运行 --rm 容器停止运行后,自动删除容器文件 --name bitwarden容器的名字为bitwarden -p 8085:80 容器的端口80映射到8085,在Nginx配置 -p 3012:3012 容器的端口3012映射到3012 -e SIGNUPS_ALLOWED=true 设置环境变量SIGNUPS_ALLOWED=true允许用户注册 -e WBE_VAULT_ENABLE=true 设置环境变量WBE_VAULT_ENABLE=true -e DOMAIN=//mydomain.cn设置域名,需要替换成自己申请的域名 -v /data/bitwarden:/data 容器的/data/目录映射到宿主机的/data/bitwarden目录 安装nginx mkdir /data/nginx #建立宿主机映射目录 # 安装nginx docker run \ --rm \ --name nginx \ -d \ -p 8088:80/tcp \ -p 2443:443/tcp \ nginx # 由于不知道nginx目录下的内容,我们将容器的目录复制到宿主机目录/data下 docker cp nginx:/etc/nginx /data # 创建用于存放ssl证书的文件夹,将申请到的.cert和.key证书文件上传到这个文件夹 mkdir /data/nginx/certs 修改/data/nginx/conf.d/default.conf文件添加以下内容,启用https访问并对bitwarden进行反向代理
...