跳到主要内容

转载-hyde自动申请友链

最后更新于:

image-20260802071156.avif

转载-hyde自动申请友链

版权

此文章来自Hyde的《自助友链申请 https://seasir.top/posts/friends-apply/》文章。

最早来自w3c大佬给hyde的指导。

因为自己在下一篇文章已经把自动申请友链功能集成到了自己的博客后台,且只依赖kv数据库,而未使用本文所用的阿里云Supabase 存储,但是因为这个友链实现方式,而更新了自己博客的友链,也是很不错哦哈哈,这里仅仅记录下文章。

存储类型区别优势劣势对比#

存储类型速度收费模式Pages 函数限制核心优势核心劣势适用场景
S3 存储中等免费额度可用不限制函数S3 通用标准,生态工具丰富,免费额度充足,全函数兼容免费超限后计费,无内置数据库权限,鉴权需自行开发静态网站资源、文件备份、跨云存储、通用文件托管
KV 存储极快免费额度可用仅 pages-edge 函数可用内存级低延迟,API 简单,免费额度满足小型缓存,适配边缘函数仅支持主键查询,无法存大文件,普通 Pages 函数无法调用网站缓存、会话存储、计数器、配置文件、边缘临时热点数据
Blob 存储普通免费额度可用支持 pages 任意函数针对二进制大文件优化,全类型 Pages 函数无限制,冷归档低价访问速度一般,不兼容标准 S3,跨云迁移适配差微软云配套业务、视频备份、虚拟机快照、文档附件存储
Supabase 存储最快免费额度可用不限制函数存储 + PostgreSQL 一体化,自带 RLS 行级权限,配套用户认证、向量存储免费项目数量有限,闲置项目会暂停,底层依赖第三方存储全栈 Web/App 快速开发、用户上传素材、AI 向量知识库、小型后端项目
COS 存储最快按量收费,无永久免费不限制函数国内节点多,国内访问速度顶尖,深度集成腾讯 CDN,媒体处理功能完善无免费额度,存储 / 流量 / 请求均收费,海外访问延迟偏高国内小程序 / 网站静态资源、电商图片、短视频素材、企业数据备份

选择存储类型#

这里博主选择的是 Supabase 存储,因为最快免费额度可用不限制函数,符合博主的需求。

配置 Supabase#

  • 进入阿里云云原生数据仓库,左上角选择离你最近的区域。这里我选择的是深圳区域
  • 点击创建项目,选择免费测试创建,点击创建,填写项目名称项目名称需要英文的!输入数据库账号数据库密码
  • 首次创建需要配置专有网络专有网络交换机,若当前区域未创建专有网络,请前往阿里云VPC控制台创建专有网络实例
  • 进入专有网络页面,点击创建专有网络,地域选择需要和刚刚创建项目-可用区一致!填写名称,点击创建,IPv4网段选择手动输入 IPv4 地址段,输入IPv4网段随便选一个,这里我选的是192.168.0.0/16,IPv6网段选择系统分配的 IPv6 地址段
  • 输入交换机名称和可用区选择和刚刚创建项目-可用区一致!这里我选择的是深圳 可用区 F
  • 是否开放白名单限制,这里我选择的是
  • IP 白名单,这里我选择的是0.0.0.0/0!然后点击确定,即可完成配置。
  • 创建好后把修改数据库白名单,添加0.0.0.0/0,即可从任何 IP访问数据库。

登录 Supabase#

  • 点击登录 Dashboard,会弹出登录账号登录密码复制数据库账号数据库密码,即可登录(如果设置了白名单,需要在白名单中添加当前 IP 才能登录)

SQL Editor#

  • 登录后,左侧菜单点击SQL Editor,即可进入 SQL 编辑器,在 SQL 编辑器中执行 SQL 语句
  1INSERT INTO "public"."friends" (
  2    "id",
  3    "title",
  4    "desc",
  5    "siteUrl",
  6    "imgUrl",
  7    "tags",
  8    "status",
  9    "ip",
 10    "email",
 11    "message",
 12    "updatedAt",
 13    "createdAt",
 14    "weight" -- 新增int4权重字段
 15) VALUES
 16(
 17    '64f3b4ef-490d-4440-ad8e-5dc73034ccb9',
 18    '云原生构建',
 19    '会Fork就会CNB',
 20    'https://cnb.cool/',
 21    'https://cnb.cool/cnb/-/logos/s',
 22    '["Blog","Astro"]'::jsonb,
 23    'rejected',
 24    'unknown',
 25    NULL,
 26    NULL,
 27    '1785103334148',
 28    '1784148550477',
 29    0
 30),
 31(
 32    '80a0e1dc-7f96-42df-be62-3d0edabc77ac',
 33    '启源',
 34    '技术丶生活',
 35    'https://czxcly.cn/',
 36    'https://personal-biz.czxcly.cn/profile/avatar/2026/05/18/594c922986f34225aa6917bb0b2908ca.jpg',
 37    '["Blog","Astro"]'::jsonb,
 38    'approved',
 39    '129.204.149.174',
 40    NULL,
 41    NULL,
 42    '1785102151599',
 43    '1783301022476',
 44    0
 45),
 46(
 47    '8f652adc-0d92-4c53-9e5a-5088048b76e9',
 48    'ZhiJing''s Blog',
 49    'Go with the flow.',
 50    'https://iwexe.top',
 51    'https://iwexe.top/avatar.svg',
 52    '["Blog","Astro"]'::jsonb,
 53    'approved',
 54    '43.139.234.199',
 55    NULL,
 56    NULL,
 57    '1785102152667',
 58    '1783185799746',
 59    0
 60),
 61(
 62    'a1b2c3d4-e5f6-7890-abcd-ef1234567890',
 63    'One',
 64    '明心见性,爱自己',
 65    'https://onedayxyy.cn/',
 66    'https://img.onedayxyy.cn/images/Teek/Teekwebsite/xyy-logo.avif',
 67    '["Blog","Astro"]'::jsonb,
 68    'approved',
 69    'unknown',
 70    NULL,
 71    NULL,
 72    '1785102169329',
 73    '1783815691854',
 74    0
 75),
 76(
 77    'a56878d9-4649-439d-b16d-abb4fa87ec7f',
 78    'gc的小站',
 79    '综合性小站,希望能帮到你!',
 80    'https://gcweb.cc',
 81    'https://www.gcweb.cc/static/img/pig.jpg',
 82    '["Blog","Astro"]'::jsonb,
 83    'approved',
 84    '223.104.116.184',
 85    NULL,
 86    NULL,
 87    '1785102168900',
 88    '1783462756928',
 89    0
 90),
 91(
 92    'b2c3d4e5-f6a7-8901-bcde-f23456789012',
 93    'Hyde',
 94    '人心中的成见是一座大山',
 95    'https://seasir.top/',
 96    'https://seasir.top/_astro/avatar.B2RZ_bo3_JV0dW.webp',
 97    '["Blog","Astro"]'::jsonb,
 98    'approved',
 99    'unknown',
100    NULL,
101    NULL,
102    '1785102168100',
103    '1783462753394',
104    0
105);

执行后可以在SQL Editor中查看执行的示例数据

前端页面改造#

文件目录:

文件路径作用
src/config/friendsConfig.ts友链配置文件
src/content/spec/friends.mdx友链列表页面自定义内容,已弃用
src/pages/friends/friends.astro友链列表页面组件
src/types/friendsConfig.ts友链配置文件类型定义

相关文件在源码中获取,记得点个Star!将上面的文件替换掉您项目对应文件即可。

部署edgeone边缘函数#

  • 登录进入Edgeone控制台,新增站点-进入站点详情页
  • 在左侧菜单找到函数管理-新建函数,随便选一个模板点击下一步
  • 填写函数名称,这里我选的是创建 Hello World,黏贴函数代码,点击创建并部署等待创建完成,通常10s左右,刷新页面即可完成部署

配置变量#

  • 函数管理-函数详情-环境变量与密钥中,添加以下环境变量
变量名变量值变量类型变量描述获取方式
SUPABASE_URLhttps://spb-xxxxxxxx.supabase.opentrust.netstringSupabase URLSupabase控制台左上角-Connect-App Frameworks获取
SUPABASE_KEYeyJ0exxxxxxx.xxxxxxxxxxxxxx.xxxxxxxxxxstringSupabase KeySupabase控制台左上角-Connect-App Frameworks获取
ADMIN_USERadminstring登录admin后台用户名自定义设置
ADMIN_PASSadminstring登录admin后台密码自定义设置
PUSH_SWITCHonstring是否开启推送通知用于开启或关闭推送通知功能
PUSH_PLATFORMfeishustring推送平台例如:feishudingtalk
PUSH_TOKENhttps://open.feishu.cn/open-apis/bot/v2/hook/xxxstring飞书/钉钉webhook推送token地址飞书钉钉webhook地址获取
PUSH_SECRETSEC9xxxxxxxxxxstring钉钉平台加签密钥钉钉加签获取

填写完成后,一定要点击部署按钮,否则环境变量不会生效

配置域名#

配置主域名(推荐)#

  • 进入edgeone控制台,点击makers找到您部署的 Firefly的项目,进入项目设置-域名管理-添加自定义域名,填写您的二级域名,例如:firefly.seasir.top,填写后去您的域名平台填写canme解析,申请免费证书,等待部署证书生效
  • 进入服务总览-网站安全加速-进入您的站点,找到域名服务-域名管理,点击添加域名

然后域名平台填写canme解析,申请免费证书,等待部署证书生效

配置二级域名(2选1)#

  • 进入主站-域名管理-添加域名
  • 填写二级域名,例如:api.seasir.top
  • IP/域名填写边缘函数部署生成的默认访问域名,例如:friends-zone-3du2b1i5fnma-1312627337.eo-edgefunctions.com
  • 推荐模板选择不使用模板,点击下一步
  • 去您域名后台管理平台解析canme类型的域名,申请免费证书,等待部署证书生效

配置函数触发规则#

  • 函数管理-函数详情-新增触发规则中,添加以下触发规则

触发条件:

匹配类型运算符
HOST等于seasir.top (选择你配置的域名)
URL path等于/api*

执行函数:

执行方式执行函数
执行指定函数friends-zone-3du2b1i5fnma-1312627337

函数触发规则

配置后端请求地址#

路径:src/pages/friends.astro

  • 搜索seasir.top替换您上面配置好的二级域名,有两处要替换

访问后台#

  • 访问https://你的域名/api/admin,登录后即可查看友友链审核管理后台页面
  • 登录用户名密码:您环境变量中的ADMIN_USERADMIN_PASS里面的值,变量值中就是您后台的账号和密码

结束。

最新文章