本文的方案只针对局域网内使用bitwarden的情况。实现原理是使用ACME DNS验证方式验证域名所有权。
手机app连接自建bitwarden服务时,需要接口必须是https的,经过比较,决定使用cloudflare代理来实现,这样不用考虑https证书的更新问题。
创建bitwarden域DNS记录
在Cloudflare的DNS面板中创建一条bitwarden服务域的DNS记录,并关闭代理功能,ipv4地址填写openwrt路由地址:
创建 API 令牌
在Cloudflare的概述
面板中,点击右下角的获取您的 API 令牌
,进入创建令牌页。点击创建令牌
,并选择使用模板编辑区域DNS
:
按照下面图片所示创建访问权限,区域资源
中可限定为刚刚的DNS域,也可指定为帐号下的所有域:
一直点击下一步直到完成,复制出api token,并保存好,下面步骤会用到。
下载安装caddy
进入caddy下载页,下载对应版本,需要选上caddy-dns/cloudflare
模块。caddy如何安装,可以参考我之前的文章——openwrt管理后台使用caddy代替uhttpd
配置caddy
打开caddy配置文件,增加下面的配置:
bwrs.xxx.com {
tls {
dns cloudflare <my_api_token>
}
reverse_proxy localhost:8143
}
bwrs.xxx.com
请改为cloudflare的注册域,<my_api_token>
替换为刚申请的api令牌,反向代理端口8143
是bitwarden的服务端口,请按自己的情况替换。
修改后,重启caddy使配置生效。
openwrt添加本地DNS解释记录
进入openwrt后台,点击网络
-> DHCP/DNS
,在自定义挟持域名
栏添加以下DNS记录:
地址请填写openwrt路由地址,到这里就全部配置完成了。
测试是否生效
通过curl请求bitwarden服务看有没内容返回
curl https://bwrs.xxx.com