1.部署vaultwarden密码库
version: '3'
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: always
volumes:
- ./data:/data
environment:
- TZ=Asia/Shanghai
ports:
- 8080:80
2.部署cloudflare tunnel用于内网穿透
进入cloudflare tunnel页面
选择tunnel
创建 Tunnels 隧道
选择隧道类型
输入隧道名称
选择部署隧道的方式,我这里使用docker
在本地服务器中部署cloudflare tunnel,个人比较喜欢使用docker-compose.yml;替换从页面上复制的token到配置中
version: '3'
services:
cloudflare:
image: cloudflare/cloudflared:latest
container_name: cloudflared
restart: always
command: tunnel --no-autoupdate run --token YOUR_CLOUDFLARE_TUNNEL_TOKEN
network_mode: host
也可以到tunnel列表页面查看(ps:我已经部署过了就不重复部署了)
进入配置页面
添加路由配置
根据情况输入vaultwarden服务的地址,服务类型选择HTTP
1.vaultwarden和cloudflared部署在同一台服务器上,可以直接使用localhost:8080(vaultwarden服务在宿主机映射的端口号)
2.vaultwarden和cloudflared部署在同一子网中,可以使用vaultwarden服务的ip加端口访问,如192.168.1.1:8080
保存后就可以通过域名demo.example.com来访问自己搭建的vaultwarden密码库了。
3.本地子网访问vaultwarden密码库
直接使用宿主机的ip:port如192.168.1.1:8080是无法访问vaultwarden页面的,需要HTTPS才能访问
需要反代一下,我使用nginx进行反代
1.先申请个自签证书
# 自行修改证书和密钥的保存位置
openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout localhost.key -out localhost.crt
2.配置nginx进行反代
server {
listen 443 ssl;
server_name vaultwarden;
#修改为你申请证书的路径
ssl_certificate /etc/nginx/certs/localhost.crt;
ssl_certificate_key /etc/nginx/certs/localhost.key;
location / {
proxy_pass http://192.168.1.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
}
}
现在访问nginx反代的地址https://localhost:port,就能进入vaultwarden密码库了
提示不安全又有什么关系呢 ,反正是在本地访问
4.使用cloudflare WAF防火墙实现白名单IP访问
在cloudflare tunnel隧道绑定的域名下,配置WAF规则