仅有IP无证书的环境部署bitwarden密码管理器
虽然使用npm方式部署比较简单,但是很多小伙伴可能没有一台带域名国外vps,接下来介绍仅有IP的Vps,如国内的服务器无域名证书或者是本地无外网的环境如:虚拟机、NAS、树莓派等环境部署bitwarden密码管理器。
部署Nginx
Nginx和Nginx Proxy Manager都是用于做反代作用的,不可共存
在服务器/usr/local/docker
目录下新建nginx
目录,在nginx
目录下新建docker-compose.yml
文件,内容如下:
version: '3'
services:
nginx:
image: nginx:stable-alpine-perl
container_name: nginx
restart: always
ports:
- 80:80
- 443:443
- 234:234
volumes:
- $PWD/nginx/html:/usr/share/nginx/html
- $PWD/nginx/logs:/var/log/nginx
- $PWD/nginx/conf.d:/etc/nginx/conf.d
- $PWD/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
- $PWD/nginx/ssl:/etc/nginx/ssl
networks:
- nginx_network
networks: #对上面使用到的网络名称进行声明
nginx_network: #网络名称前面会自带项目名称,(当前docker-compose.yml所在目录的名称),即项目名称_网络名称
external: true #如果不想加上项目名称,请设置external为true,这时就需要我们在启动服务之前,必须在外部使用命令去手动创建一个名叫nginx_network的网络(创建命令: docker network create -d bridge nginx_network)
在当前目录执行docker-compose up -d
,服务器放行80,443的TCP端口
部署vaultwarden
在服务器/usr/local/docker
目录下新建vaultwarden
目录,在vaultwarden
目录下新建docker-compose.yml
文件,内容如下:
version: "3"
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: always
ports:
- "235:80" #将宿主机8087端口映射到docker的80端口
- "3012:3012"
volumes:
- $PWD/vw-data:/data
environment:
WEBSOCKET_ENABLED: "true" #是否开启WebSocket
SIGNUPS_ALLOWED: "false" #是否开启注册,自用的话自己搭建好注册后改成false
WEB_VAULT_ENABLED: "true" #是否开启Web客户端
ADMIN_TOKEN: "{你生成的安全密码}" #后台登陆密码,建议openssl rand -base64 48 生成ADMIN_TOKEN确保安全,当前是没启用,如需启用去掉ADMIN_TOKEN前面的 # ,并生成安全密码
networks:
- nginx_network
networks: #对上面使用到的网络名称进行声明
nginx_network: #网络名称前面会自带项目名称,(当前docker-compose.yml所在目录的名称),即项目名称_网络名称
external: true #如果不想加上项目名称,请设置external为true,这时就需要我们在启动服务之前,必须在外部使用命令去手动创建一个名叫nginx_network的网络(创建命令: docker network create -d bridge nginx_network)
在当前目录执行docker-compose up -d
部署成功
生成自签证书
由于仅有ip,vaultwarden只支持https,所以需要生成自签证书
编写配置文件和脚本
把以下三个文件放到一个文件夹里:
server_rootCA.csr.cnf
[req]
default_bits = 2048
prompt = no
default_md = sha256
distinguished_name = dn
[dn]
C=CN
ST=A
L=A
O=A
OU=local_RootCA
emailAddress=.
CN = 192.168.1.129 #服务器ip或域名
v3.ext
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
IP = 192.168.1.129#服务器ip或域名
do.bat
openssl genrsa -out server_rootCA.key 2048
openssl req -x509 -new -nodes -key server_rootCA.key -sha256 -days 36500 -out server_rootCA.pem
openssl req -new -sha256 -nodes -out server.csr -newkey rsa:2048 -keyout server.key -config server_rootCA.csr.cnf
openssl x509 -req -in server.csr -CA server_rootCA.pem -CAkey server_rootCA.key -CAcreateserial -out server.crt -days 36500 -sha256 -extfile v3.ext
运行脚本,生成证书
1、运行 do.bat,会要求输入一次信息,这里就随便编一个虚假的机构名就可以了(比如 MiaoMiaoMiao),不用填 ip 地址或者域名啥的
2、生成的文件有 5 个,server.crt
和 server.key
这俩是要拿给 Bitwarden 用的,上传到$PWD/nginx/ssl
nginx的证书目录下
3、server\_rootCA.pem
复制到 Android 上,导入 CA 受信任的证书
4、server\_rootCA.pem
重命名为.cer
,在 Windows 上,导入受信任的根证书颁发机构,这样等下配置好的 Bitwarden 就可以和客户端通信了
vaultwarden使用
官网地址:https://bitwarden.com/
vaultwarden在Windows,Linux,Mac,iPhone,Android以及Chrome等环境都可以正常使用,可以在官网下载相应环境的安装包就可以
1、浏览器插件使用,点击下载→[地址]
(https://microsoftedge.microsoft.com/addons/detail/jbkfoedolllekgbhcbcoahefnbanhhlh)
2、选择自托管,输入你的ip或者域名
3、成功界面