使用的Docker Compose部署方式,vaultwarden+caddy,caddy自动申请证书这一点很爽。
docker-compose.yaml配置如下,只映射caddy端口80,443
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: always
environment:
DOMAIN: "https://vaultwarden.example.com/<增加随机路径,我设置的是十六位大小写加数字乱码>" # 改成你自己的域名
SIGNUPS_ALLOWED: "true" # 当你注册好后,且不准备给别人使用就将true替换为false,然后docker compose up -d
volumes:
- ./vw-data:/data
caddy:
image: caddy:2
container_name: caddy
restart: always
ports:
- 80:80
- 443:443
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- ./caddy-config:/config
- ./caddy-data:/data
environment:
DOMAIN: "https://vaultwarden.example.com" # 改成你自己的域名
EMAIL: "admin@example.com" # 改不改都行
LOG_FILE: "/data/access.log"
在同目录下创建Caddyfile配置如下
{$DOMAIN} {
log {
level INFO
output file {$LOG_FILE} {
roll_size 10MB
roll_keep 10
}
}
tls {$EMAIL} {
protocols tls1.3
}
encode zstd gzip
header {
Permissions-Policy interest-cohort=()
Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
X-XSS-Protection "1; mode=block"
X-Frame-Options "DENY"
X-Robots-Tag "noindex, nofollow"
X-Content-Type-Options "nosniff"
-Server
-X-Powered-By
-Last-Modified
Referrer-Policy "no-referrer"
# Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self' data:;" # 这里会改的朋友可以前面的#号去掉
}
route {
reverse_proxy /<对应docker-compose.yaml配置内vaultwarden的随机路径>/* vaultwarden:80 {
header_up X-Real-IP {remote_host} # 用CF家的CDN可以将remote_host替换为http.request.header.Cf-Connecting-Ip
}
handle /* {
abort
}
}
}
浏览器访问的时候https://vaultwarden.example.com/随机路径/ 最后一定要加/
注册好后建议开启vaultwarden的TOTP并用别的第三方APP去保存例如谷歌或者微软的Authenticator。
套CF的CDN的话还能再加强一下安全。WAF添加一条IP源地址-包含以下各项(自己家和魔法节点的IPV4和IPV6)选择跳过并勾选所有其余自定义规则,再添加一条主机名等于之前配置中自己的域名,操作选择阻止。没套CDN的也可以VPS上的防火墙实现例如iptables和nftables。
再来个定时备份任务
crontab -e
0 8 * * * tar -czf 备份保存的路径 docker-compose.yaml文件夹路径
使用rclone或restic备份到云端,或者是每周自己从VPS下载。
客户端使用的是官方的浏览器插件和手机APP,因为是自建所以实现全部收费功能,登录的时候选自托管地址那里要域名/完整的随机路径。
Tags
vaultwarden