NAS+Cloudflare+Lsky,还花什么钱买图床和CDN!



在正式开始之前,笔者想先声明下,写这篇文章并不是为了忽悠大家捣鼓NAS,如果你不喜欢折腾或者不太爱动手的话,又或者不在乎小钱钱,笔者其实不建议这么折腾这些奇技淫巧的,因为笔者也不能保证这种折腾的玩法能玩多久、会不会玩脱,所以请慎重将接下来的方法用于生产环境或商业场景。
先说说背景吧。直到现在,笔者的博客和公众号一直用的是qiniu的对象存储和CDN作为图床,但是最近两个月,随着博客的访问量越来越大,图床CDN的费用也是水涨船高,有时候一天就有几个GB的回源,实在是有点吃不消,毕竟笔者的博客也不挣钱。
凑巧,笔者最近一直在研究Cloudflare的各种功能,于是就萌生了这么一套方案:在NAS上搭建兰空Lsky图床系统,并使用Cloudflare的隧道穿透实现公网访问图片。这样既可以使用NAS替代对象存储,又可以利用Cloudflare的边缘缓存(CDN)加速图片访问速度,还不花一分钱钱,岂不是一举三得!
操作方法
下面是笔者画的一张简单的原理图,不专业手法莫见怪。
操作步骤其实并不复杂,主要有以下几步,只要理解了上面的原理图就非常容易上手。
在NAS中安装Lsky服务器
在Cloudflare Tunnels中为NAS中的Lsky映射一个域名
在Lsky后台配置图片访问地址,并上传图片
在Cloudflare设置边缘缓存TTL,加快图片的访问速度,
下面一步步开始讲解:
1.在NAS中部署Lsky服务器
Lsky是一个用于在线上传、管理图片的图床程序,中文名:兰空图床,你可以将它作为自己的云上相册,亦可以当作你的写作贴图库。关于Lsky具体有哪些特性和功能,不是本文的重点,感兴趣的朋友可以直接到官网细看。
官方介绍中是使用源码进行安装或升级的,但是笔者还是偏爱Docker,这里就直接贴出Docker Compose的配置了,在NAS上直接启动即可。
version: '3.8'services: lsky: image: halcyonazure/lsky-pro-docker:latest container_name: lsky restart: unless-stopped network_mode: bridge environment: - WEB_PORT=8089 ports: - '5016:8089' volumes: - /share/Container/lsky/www:/var/www/html/
端口8089和路径/var/www/html/请映射出自己NAS上合适的端口和挂载路径,不要冲突即可。
Docker容器启动后,使用IP+端口打开Lsky,首次打开时需要设置数据库和管理员账号,数据库建议使用Mysql(需提前在Mysql中创建好数据库),管理员账号设置为自己的邮箱和熟悉的密码即可。
2.映射域名
Lsky启动并配置完成后,打开Cloudflare Tunnels,在其中增加一个Public Hostname,这个实际就是在Cloudflare的域名DNS中增加一条特殊的解析。
以上操作需要你提前配置好Cloudflare的Tunnels,关于如何安装和配置,可参考笔者的这篇文章:使用Cloudfalre Tunnels实现内网穿透

如上图,笔者将imghub.huluohu.com映射到局域网NAS上的5016端口上,5016是笔者部署Lsky使用的端口。
3.配置域名并上传图片
在上传图片之前,先打开Lsky的存储策略,将图片的访问地址改为上面映射好的域名。
然后,就可以到图片上传页面随意上传图片了,可以看到上传完成后就会得到一个图片的访问链接,支持多种链接类型,选择一个你需要的即可。
4.设置缓存
使用上面的图片链接打开图片,默认情况下是直接通过Cloudflare的隧道穿透到NAS并读取图片的,这样的话速度是非常慢的,笔者试了下大概要5秒以上才能完全打开(与家庭宽带上行速率有关),这谁能忍?所以为了加快访问图片的速度,一定要配置好缓存才行,也就是Cloudflare的CDN。
进入域名的管理界面,打开缓存菜单,找到Cache Rules,新增一条规则,填写匹配域名和URI,并设置边缘TTL,笔者直接设置为1年,你可以按照自己的需求设置,最少为2小时;最后记得点击部署按钮,完成上线。

部署完以后,再访问图片,除了首次打开速度较慢外,其他情况下基本上都是秒开,速度完全不输商业CDN。
总结
以上就是笔者的实操过程,毫无保留分享给大家。目前笔者已经在尝试将新的图片使用Lsky存储,相关的工具链也能很好的支持,无论是日常使用效率还是图片访问体验,都没有明显拉胯,对笔者个人来说完全够用了。当然qiniu还会暂时保留,毕竟上面保存了不少历史图片,一时半会还不能放任不管,但是CDN费用预计不会继续上涨了。如果你觉这个方案还不错,欢迎留言讨论。
原创不易,如果觉得此文对你有帮助,不妨点赞+收藏+关注,你的鼓励是我持续创作的动力!

到顶部