
Kweizh
# 背景
目前使用懒猫微服已经成功替代我之前的 NAS 成为家庭服务中心了,使用懒猫微服客户端的场景下,默认就是不需要关注内外网,都能够直接访问到我的服务,
但是有一些服务使用第三方,或者原生的客户端,而且本身也有认证功能的情况,就需要一些适配工作,
使用第三方服务自身的认证加上 HTTPS,从而不需要登录懒猫客户端也能无视内外网访问应用。
好在懒猫微服商店的有足够的应用,很大程度的降低的配置的复杂度。
目标效果如下:
1. 无论在家里局域网,还是出门公网,都可以访问服务
2. 使用同一个域名自动适配内外网
3. 使用 HTTPS 加应用自身认证保证安全
# 准备工作
当然,如果想要很方便的访问到内网的服务,还是有一些前置的依赖项的:
1. 自己拥有域名并托管到 cloudflare 上,在此教程中以 example.com 举例
2. 最好的有自己的 ssl 证书,使用 let's encrypt 获取不复杂,在此教程中先默认有证书可用。
补充一句,如果确实没有 ssl 证书,可以考虑使用自签证书。
除了以上依赖,还用到了以下几个应用:
https://appstore.lazycat.cloud/#/shop/detail/cloud.lazycat.app.cloudfalredweb
https://appstore.lazycat.cloud/#/shop/detail/app.ikw.lzc.caddy
https://appstore.lazycat.cloud/#/shop/detail/cloud.lazycat.app.forward
使用 Jellyfin 作为示例:
https://appstore.lazycat.cloud/#/shop/detail/cloud.lazycat.app.jellyfinsingle
然后我们就可以开始配置工作。
# 安装
## 1. 配置端口转发,打通跨应用访问
https://appstore.lazycat.cloud/#/shop/detail/cloud.lazycat.app.forward
### 目标服务转发
因为涉及不同的服务进行内外网转发,所以首先我们要将希望转发的服务,通过端口转发工具,转发至微服虚拟网卡,以便转发服务能访问到目标服务。
此处以 Jellyfin 为例,转发 `8096` 端口至 `host.lzcapp:8096`,端口不一定需要一样,不冲突即可。

### Caddy 局域网内端口转发
由于我们还希望在内网的时候可以方便的访问各种服务,所以需要配置一个 Caddy 局域网端口,作为统一入口。
由于我们需要使用 HTTPS,所以一定需要使用 443 端口。

## 2. 配置 Cloudflared,打通公网访问
https://appstore.lazycat.cloud/#/shop/detail/cloud.lazycat.app.cloudfalredweb
参考[官方教程](https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/),配置 Cloudflared Tunnel 连通域名到懒猫微服的公网访问。
需要注意的是安装 cloudflared 时,直接安装懒猫微服商店中的 Cloudflared 即可。
当连接成功后,选择 `Public Hostname`,

并新增一个自定义子域名,例如 `movie.example.com`,然后保存即可。

此时,你应该已经拥有可以公网直接访问的 Jellyfin 了,而且自带了 HTTPS

## 3. 配置 Caddy,打通内网访问
通过 Cloudflare Tunnel,我们已经可以通过公网访问 Jellyfin 了,但是我们肯定不希望在家里的时候,也走公网绕一圈,所以我们可以通过 Caddy,实现无缝内网访问。
https://appstore.lazycat.cloud/#/shop/detail/app.ikw.lzc.caddy
Caddy 通过配置文件进行转发配置,配置文件位于 Caddy 的应用数据下 `Caddyfile/Caddyfile`,
首先将 ssl 证书也放到 Caddyfile 文件夹下,
然后加入以下内容,最后重启 Caddy 即可:
```Caddyfile
movie.example.com {
tls /etc/caddy/example.com.crt /etc/caddy/example.com.key
reverse_proxy host.lzcapp:8096
}
```
注意:
1. 第一行是 tls 配置,路径不要写错,`Caddyfile` 文件夹是映射至服务内 `/etc/caddy` 的
2. 第二行是转发配置,`reverse_proxy` 是固定的,域名和端口是前文配置的
## 4. 路由器配置域名转发
由于域名托管在 Cloudflare,并且进行了 Tunnel 的配置,域名已经默认指向 Cloudflare,
但是我们回到家时,希望直接访问内网,所以需要在路由器上将域名指向懒猫的 IP。
不同的路由器配置方式不同,用户根据自己的路由器配置解析即可。
# 结语
到此,我们完成了所有配置,实现效果如下:
1. 无需启动懒猫微服客户端
2. 公网时,自动通过 Cloudflare Tunnel 访问服务
3. 内网时,自动通过内网访问服务
4. 全程 HTTPS 加密
评论
8马克备用
l留个痕迹,下次好用
请教一下,实现这个可以做到不安装懒猫客户端也能访问微服里面的应用吗?
可以的。
请问,放到公网,会安全吗?风险是不是cloudflare会抵御一部份ddos 和cc攻击?
抱歉,我刚看到消息,这个就是为了不安装懒猫客户端专门设置的
是的,cloudflare 挡住一部分,而且本身也有 HTTPS 和应用自己的认证,别用弱密码,和正常你在网上用的一些服务是一样的安全性
cloudflare也可以设置邮件验证码保护