暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

免费的Cloudflared实现外网访问群晖(续)

各种折腾 2023-05-17
1154

这两天可能中了甲流,因为做了抗原始终是一条杠

老婆是前天晚上开始发烧的,我则是从昨天中午开始的,昨晚是 37.8℃
,今早起来是 38℃
,症状就是肌肉酸痛,头有点昏昏沉沉的,公众号后台、博客上都积攒了不少提问的,等老苏缓过劲来再一一答复吧


前言

老苏 3
年前买的腾讯 vps
下个月要到期了,续费的话有点肉疼,毕竟它的作用只是为了写免费的教程

更何况因为 ml
域名的问题,也不能备案。那要再加上买域名,会是一笔不小的开支,对老苏这种还在努力搬砖的人来说,真是贵啊。

老苏自用比较简单,直接 Tailscale
,把子网路由一开,在哪访问都跟在家一样,但是写文的话,总有人问 npm
做反向代理的问题,老苏还是需要有个环境来验证。

本着能省则省的原则,老苏开始寻找相应的方案

解决方案

老苏脑子里第一个冒出来的念头就是用 Cloudflared
+ npm
的方式,理论上肯定是可行的,但是是否真的可行,会遇到什么坑,那只有实践了才知道

乘着五一有几天假期,终于把这个一直在脑子的念头实现了,感觉好像省了几个亿 😂

本文假设你已经会搭建 Cloudflared
Nginx Proxy Manager
,如果还不会的话,建议去看老苏写的相关文章,这里就不赘述了

开始动手

在上篇 免费的Cloudflared实现外网访问群晖 中,我们是针对一个一个的域名做解析的,不仅要在本地修改 config.yaml
文件,还要去 Cloudflare
 的 DNS
里添加子域名的CNAME
 记录,实在是有点烦人

既然要弄,就要把痛点解决掉才有意义 💪

泛域名解析

Cloudflared
是支持泛域名解析的,只要在域名 laosu.ml
域名下面添加两条 CNAME
记录

类型名称目标
CNAME
@
<隧道 UUID>.cfargotunnel.com
CNAME
*
<隧道 UUID>.cfargotunnel.com

目的是将 a.laosu.ml
b.laosu.ml
c.laosu.ml
等等的域名请求,都发给 <隧道 UUID>.cfargotunnel.com

config.yaml

接下来要修改 config.yaml
文件,修改前是👇下面这样的

tunnel: <隧道 UUID>
credentials-file: /root/.cloudflared/<隧道 UUID>.json

ingress:
  - hostname: a.laosu.ml
    service: http://192.168.0.199:8180
  - hostname: b.laosu.ml
    service: http://192.168.0.199:7123
  - hostname: c.laosu.ml
    service: http://192.168.0.199:9000
  - service: http_status:404

修改后,只需要一条记录

tunnel: <隧道 UUID>
credentials-file: /root/.cloudflared/<隧道 UUID>.json

ingress:
  - hostname: "*.laosu.ml"
    service: http://192.168.0.199:2080
  - service: http_status:404

目的就是将 <隧道 UUID>.cfargotunnel.com
的请求,都转发给 Nginx Proxy Manager
2080
端口

npm 的设置

以老苏的测速服务为例,本地访问地址为 http://192.168.0.199:8180

主机设置是跟之前一样的

但是 SSL
不同,不要设置证书

因为默认情况下, Cloudflared
是自带证书的,npm
中再设置证书,反而会导致  ERR_TOO_MANY_REDIRECTS
错误

所以不要设置证书才可以正常访问

顺便测个速

比之前老苏的 1M
小水管强多了,而且再也不用带尾巴访问了,截端口问题也一劳永逸的解决了

用来写教程,Cloudflared
的免费套餐已经足够用了

安全性

安全性方面,你可以结合 Cloudflare
Zero Trust
来设置存取规则

老苏设置了邮件验证,所以当访问 https://speed.laosu.ml
时,会弹出右键地址输入框

当然只添加了自己的邮箱

邮件中会收到验证码

填写正确的验证码之后就可以看到你访问的站点了

为了一劳永逸,针对的Application URL
也是用的  *.laosu.ml

小结

所以后续,每次增加一个服务,只要在 npm
Add Proxy Host
,然后填写 Domain Names
IP
Port
就可以了,是不是够简单了?

如果你访问的域名在 npm
中没有设置,例如 https://sp.laosu.ml
,你会看到

免费的东西总归会有限制的,如果您的应用程序需要传输大量数据或高带宽连接,使用 Cloudflare Tunnel
可能就不是最佳选择了。

参考文档

免费的Cloudflared实现外网访问群晖 | 老苏的blog
地址:https://laosu.ml/2022/04/06/免费的Cloudflared实现外网访问群晖

Using Cloudflare Tunnel with Nginx Proxy Manager : selfhosted
地址:https://www.reddit.com/r/selfhosted/comments/wpvy8c/using_cloudflare_tunnel_with_nginx_proxy_manager/

@所有人:写文不易,如果你都看到了这里,请点个
在看
,分享给更多的朋友;为确保你能收到每一篇文章,请主页右上角设置星标。

文章转载自各种折腾,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论