说在前面
为什么选择本地建站
本地建站,相较于云端,灵活性更好,我们拥有对服务器完全的控制权,能够随心所欲非常方便的部署项目跟维护,最主要的,云服务器成本太高(那些优惠的配置也很拉跨)。除了web需求,甚至还可以搭建mc服务器这类应用。
关于公网ip
如果有公网ip那么就不需要穿透了,但套壳是必要的,因为建站的话公网ip暴露还是很危险的,不要觉得勒索病毒这类离你很远,这些病毒是无差别攻击漫游在网络之间的,属于见缝插针类型,还是要警惕的。大部分家庭能申请到的公网ip往往都是动态的,会变动,需要ddns,对于网络环境不好经常变动的情况下,穿透方案实际上会好很多(0后续配置,有网就能用,宽度寄了热点一样穿,家里带到学校一样穿)。
我的应用场景
本人由于学习需要,购入了一台mini主机作为我的便携服务器,在学校就是接入校园网使用,回家那么就算移动宽带,网络上的变动较多,也没有公网ip,有部署个人博客、开发环境、校园网认证等等需求。
cloudflare tunnels 与 又拍云cdn介绍
什么是cloudflare tunnels
Cloudflare Tunnels是一种隧道软件,可以让你快速地保护和加密应用程序流量到任何类型的基础设施,这样你就可以隐藏你的web服务器的IP地址,阻止直接攻击。Cloudflare Tunnels通过在你的基础设施中运行一个轻量级的守护进程(cloudflared),在你的源web服务器和Cloudflare的最近的数据中心之间建立一个加密的隧道,而不需要打开任何公共的入站端口。Cloudflare Tunnels可以安全地将HTTP web服务器、SSH服务器、远程桌面和其他协议连接到Cloudflare。
之所以选择cloudflare tunnels,主要是与很多穿透工具不同,Cloudflare Tunnels支持泛域名解析,本地只需运行守护程序,不需要额外配置,新增解析只需要在Cloudflare 的网络控制面板进行即可,非常方便,而且大厂背书,稳定安全不用质疑,唯一的缺陷可能就是速度了,但对于web建站来说这就是套个cdn能解决的简单事情。
又拍云cdn
又拍云cdn大家应该不陌生,他也给参加了又拍云联盟认证的用户提供了免费的额度,又拍云联盟是又拍云推出的开发者帮助计划,对开发者提供免费且完善的云存储、CDN 等服务,加速个人网站、博客、APP 等项目。又拍云联盟用户每月独享优惠,包括 10 GB 免费存储空间和 15 GB 免费 CDN 流量。加入又拍云联盟的条件是在申请的网站或应用底部添加又拍云 LOGO 及链接,并填写申请表。又拍云联盟会在 1-3 个工作日完成审核并发放资源,一次性赠送 12 个月的云服务资源,并折算成代金券发放到用户的账户,代金券到期后需再次提交申请。
选择又拍云cdn的主要原因是他的免费额度是支持https的,功能也比较全。
准备工作
本文核心是cloudflare tunnels 穿透的教程,其它应用及系统的安装配置教程需要您其他途径搜索
一台物理机,可以是你自己的电脑或者闲置主机等,已经安装了系统和docker
一个域名(cloudflare tunnels 不需要备案,但又拍云cdn是需要备案域名的)
又拍云账号 前往注册
cloudflare账号 前往注册
域名接入cloudflare(按照cloudflare的提示在运营商那修改dns)
cloudflare tunnels部署配置
这里推荐docker部署
登录cloudflare账号,点击
Zero Trust
→Access
→Tunnels
,点击Create a tunnel
创建隧道,Save Tunnel
保存。找到你的token,复制代码到服务器中运行
docker run -d \ --name cloudflared \ --restart always \ cloudflare/cloudflared:latest \ tunnel --no-autoupdate run \ --token [你的token]
进入隧道配置页面,点击
Public hostname
→Add a public hostname
,选择自己托管在cf的域名,可选自定义子域名,Type
是传输协议web服务就选择http,URL
填写你的应用本地的地址,点击Save hostname
保存。域名的
Path
选项是指定路径解析,比如你有一项服务,他其中一个api是访问192.168.88.22:2222/orc
来进行的,你不希望其他api暴露,那么你就可以使用path,输入orc,这样test.kanj.top/orc
就会直接解析到你本地的192.168.88.22:2222/orc
,而且只有该路径解析,其他路径还是不被暴露的等待一会再通过域名看看是否能够成功访问。
又拍cdn加速配置
如果你不在乎访问速度,那么这一步也可以不进行,这里只介绍配置时与一般的cdn配置需要注意的几点,其他配置参考这篇文章→博客的CDN应该怎么配置才能有效](https://www.gmero.com/article/4)
配置CDN时主要是在回源管理上与一般的配置不同,我们需要将源站与回源host都设置成我们穿透的域名,不然的话又拍云cdn找不到我们的源站
说在最后
这套方案总体效果不错,我的博客 www.gmero.com 就是这么部署的,在cloudflare开启网站不离线后就算暂时服务器宕机博客也是能够正常访问的(通过访问边缘节点上的缓存)。对于其他注重实时的响应速度的应用,例如游戏服务器,那么就建议使用国内的成熟穿透服务了,我使用过樱花的10元套餐,体验很好,mc服务器延迟也很低。免费当然不能要求太多。