用自己的域名实现内外网无缝访问懒猫微服内的应用

Kweizh

发布于433天前
还没想好签名

背景

目前使用懒猫微服已经成功替代我之前的 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,端口不一定需要一样,不冲突即可。

CleanShot 2025-04-30 at 12.00.50@2x.png

Caddy 局域网内端口转发

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

由于我们需要使用 HTTPS,所以一定需要使用 443 端口。

CleanShot 2025-04-30 at 12.42.06@2x.png

2. 配置 Cloudflared,打通公网访问

https://appstore.lazycat.cloud/#/shop/detail/cloud.lazycat.app.cloudfalredweb

参考官方教程,配置 Cloudflared Tunnel 连通域名到懒猫微服的公网访问。

需要注意的是安装 cloudflared 时,直接安装懒猫微服商店中的 Cloudflared 即可。

当连接成功后,选择 Public Hostname

CleanShot 2025-04-30 at 12.11.13@2x.png

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

CleanShot 2025-04-30 at 12.22.09@2x.png

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

CleanShot 2025-04-30 at 12.25.51@2x.png

3. 配置 Caddy,打通内网访问

通过 Cloudflare Tunnel,我们已经可以通过公网访问 Jellyfin 了,但是我们肯定不希望在家里的时候,也走公网绕一圈,所以我们可以通过 Caddy,实现无缝内网访问。

https://appstore.lazycat.cloud/#/shop/detail/app.ikw.lzc.caddy

Caddy 通过配置文件进行转发配置,配置文件位于 Caddy 的应用数据下 Caddyfile/Caddyfile
首先将 ssl 证书也放到 Caddyfile 文件夹下,
然后加入以下内容,最后重启 Caddy 即可:

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
u69150810139天前

马克备用

春华秋实145天前

l留个痕迹,下次好用

youguanxinqing403天前

请教一下,实现这个可以做到不安装懒猫客户端也能访问微服里面的应用吗?

nick2a4321回复youguanxinqing389天前

可以的。

nick4c9271回复nick2a4321386天前

请问,放到公网,会安全吗?风险是不是cloudflare会抵御一部份ddos 和cc攻击?

Kweizh回复youguanxinqing383天前

抱歉,我刚看到消息,这个就是为了不安装懒猫客户端专门设置的

Kweizh回复nick4c9271383天前

是的,cloudflare 挡住一部分,而且本身也有 HTTPS 和应用自己的认证,别用弱密码,和正常你在网上用的一些服务是一样的安全性

ety001回复nick4c9271370天前

cloudflare也可以设置邮件验证码保护

说点什么呢~
收藏
13
8
0