前言
因为把东西运行在自己的服务器上可能会因为服务器到期、被攻击或者自己不小心折腾坏环境等原因,导致自己的网站下线。我追求的最快的速度与稳定性,使用 PaaS 平台可以满足我的需求。
本站所使用到的 PaaS 平台
Web
数据库
服务
Fly.io
fly.io 上部署了 Alist、瓦罗兰特商店查看 和 WebSSH。Alist 部署教程在这篇文章内,然后流量经过 阿里云DCDN
或 腾讯云ECDN
进行加速作为中间源加速搭配自建 CDN 区分路由运行,在全球延迟内都非常低。
还有一些零零碎碎的 Docker 服务也部署在上面。
Vercel 与 Netlify
vercel 上部署的项目有点多,比如 AI 生成动漫图 、AI 年龄推断 、AI 图片修复 、 使用 AI 通过文字修改图片 、通过涂鸦 AI 绘画 、OpenGPT 应用 、AI 法律助手 、 AgentGPT 、明日方舟工具箱 、Render 阅读器 、公共图床上传 API 、Umami 网站统计 、天气查询 、Pixiv Now 、留言板 、博客文章 AI 简介生成。
以上应用均使用 阿里云DCDN
或 腾讯云ECDN
进行加速作为中间源加速搭配自建 CDN 进行加速,AI 生成项目是对接 Replicate 进行生成,搭配 Upstash 进行速率限制每个人每天的生成次数,OpenGPT 使用了 Planetscale 数据库,AI 法律助手使用 Supabase 存储法律数据,公共图床的上传接口:GitHub。留言板是 PHP 轻量级应用,数据库使用 Neon 。因为 Vercel 有基本的 PHP 托管能力,所以一些轻量级 PHP 应用我也托管在上面,比如 Meting-api 、BiliVideo 解析,还有本博客的评论系统等。
Railway
部署 Sub 订阅 、Umami 数据库、直播弹幕服务器等,使用 阿里云DCDN
或 腾讯云ECDN
进行加速作为中间源加速搭配自建 CDN 进行加速。
因为 Railway
和 Fly.io
一样不会休眠,所以会部署一些小程序上去运行。但是它只有美国地区,而 fly.io
的是全球性的。
Koyeb
公共 RSSHub 服务,使用 CloudFlare
与 百度云CDN
。
免费只有 1H512M,运行 RSSHub 马马虎虎。
腾讯云 SLS
部署 Music 的 API 服务,使用 阿里云DCDN
进行全球加速。
其中一些代理程序部署在腾讯云函数内,比如用于 B 站番剧解锁的泰国代理和香港代理。
Replit
部署 WebProxy 和 Mikuinvidious,使用 Gcore
与 百度云CDN/BunnyCDN
区分国内海外进行加速。
CloudFlare Workers
部署 Url 短链接 、Github 下载加速 和 ChatGPT 等项目。
CDN 加速
moeyy.cn 采用自建 CDN 进行加速,采用 Hexo
框架,代码更新到 Github 后自动构建然后部署到阿里云 OSS 上,CDN 服务器采用 阿里云ECS/Azure/AWS/Vultr/Digitalocean
等。本站大部分服务都部署在海外,但是国内速度也非常快也是归功于中间源是 阿里云DCDN
或 腾讯云ECDN
cdn.moeyy.cn 国内使用阿里云 CDN,海外 CloudFlare。支持加速 jsdelivr、mapbox 、unpkg 、baomitu 、gravatar 、staticfile、google ajax 、gthemes 、cdnjs 、google fonts 、alifonts 、html2canvas 、我的私人图床 等,使用 OSS 镜像回源永久存储,并且使用 OSS 全地域加速进行跨境加速。 采用边缘脚本进行 ref 检测等操作:
# 单IP速率限制10m/s
limit_rate(10, 'm')
# 禁止海外访问,因为海外使用Cloudflare,所以阿里云CDN屏蔽海外访问防止有人恶意hosts到阿里云海外节点刷流量。
if not(match_re(client_region(), '370000|450000|310000|230000|540000|440000|120000|150000|340000|330000|530000|630000|320000|620000|420000|410000|360000|210000|640000|110000|460000|130000|510000|500000|610000|220000|140000|650000|350000|430000|520000')) {
add_rsp_header('X-REGION-BLOCK', concat('hit region_region:', client_region()))
exit(418)
}
#排除 /no_referer 路径进行ref鉴权验证,并允许ref为空。/no_referer则不受ref来源检测。
if not(match_re($uri, '^/no_referer')) {
moeyy_ref = req_header('Referer','re:^(https?:\/\/)?([\w-]+\.)?(moeyy\.cn|moeyy\.xyz)') #正则匹配ref包含moeyy.cn和moeyy.xyz
null_ref = req_header('Referer','re:(.)') #正则匹配ref包含 ".",用于检测是否ref为空
if null_ref {
if not(moeyy_ref) {
exit(403)
}
}
}
以上仅一部分服务,更多的服务可以查看 moeyy.cn/app
如果想要某些服务的搭建教程,可以评论,有空我会写。