快捷菜单
常用功能一站直达
更多功能请点顶栏「快捷菜单」

此文章来自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 存储,因为最快免费额度可用不限制函数,符合博主的需求。
创建项目,选择免费测试创建,点击创建,填写项目名称项目名称需要英文的!输入数据库账号和数据库密码专有网络和专有网络交换机,若当前区域未创建专有网络,请前往阿里云VPC控制台创建专有网络实例专有网络页面,点击创建专有网络,地域选择需要和刚刚创建项目-可用区一致!填写名称,点击创建,IPv4网段选择手动输入 IPv4 地址段,输入IPv4网段随便选一个,这里我选的是192.168.0.0/16,IPv6网段选择系统分配的 IPv6 地址段创建项目-可用区一致!这里我选择的是深圳 可用区 F否!IP 白名单,这里我选择的是0.0.0.0/0!然后点击确定,即可完成配置。修改数据库白名单,添加0.0.0.0/0,即可从任何 IP访问数据库。登录 Dashboard,会弹出登录账号和登录密码复制数据库账号和数据库密码,即可登录(如果设置了白名单,需要在白名单中添加当前 IP 才能登录)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!将上面的文件替换掉您项目对应文件即可。
函数管理-新建函数,随便选一个模板点击下一步函数名称,这里我选的是创建 Hello World,黏贴函数代码,点击创建并部署等待创建完成,通常10s左右,刷新页面即可完成部署函数管理-函数详情-环境变量与密钥中,添加以下环境变量| 变量名 | 变量值 | 变量类型 | 变量描述 | 获取方式 |
|---|---|---|---|---|
SUPABASE_URL | https://spb-xxxxxxxx.supabase.opentrust.net | string | Supabase URL | 从Supabase控制台左上角-Connect-App Frameworks获取 |
SUPABASE_KEY | eyJ0exxxxxxx.xxxxxxxxxxxxxx.xxxxxxxxxx | string | Supabase Key | 从Supabase控制台左上角-Connect-App Frameworks获取 |
ADMIN_USER | admin | string | 登录admin后台用户名 | 自定义设置 |
ADMIN_PASS | admin | string | 登录admin后台密码 | 自定义设置 |
PUSH_SWITCH | on | string | 是否开启推送通知 | 用于开启或关闭推送通知功能 |
PUSH_PLATFORM | feishu | string | 推送平台 | 例如:feishu、dingtalk等 |
PUSH_TOKEN | https://open.feishu.cn/open-apis/bot/v2/hook/xxx | string | 飞书/钉钉webhook推送token地址 | 飞书 、钉钉webhook地址获取 |
PUSH_SECRET | SEC9xxxxxxxxxx | string | 钉钉平台加签密钥 | 钉钉加签获取 |
填写完成后,一定要点击部署按钮,否则环境变量不会生效
makers找到您部署的 Firefly的项目,进入项目设置-域名管理-添加自定义域名,填写您的二级域名,例如:firefly.seasir.top,填写后去您的域名平台填写canme解析,申请免费证书,等待部署证书生效服务总览-网站安全加速-进入您的站点,找到域名服务-域名管理,点击添加域名
然后域名平台填写canme解析,申请免费证书,等待部署证书生效
api.seasir.top默认访问域名,例如:friends-zone-3du2b1i5fnma-1312627337.eo-edgefunctions.com下一步函数管理-函数详情-新增触发规则中,添加以下触发规则触发条件:
| 匹配类型 | 运算符 | 值 |
|---|---|---|
HOST | 等于 | seasir.top (选择你配置的域名) |
URL path | 等于 | /api* |
执行函数:
| 执行方式 | 执行函数 |
|---|---|
执行指定函数 | friends-zone-3du2b1i5fnma-1312627337 |

函数触发规则
路径:src/pages/friends.astro
两处要替换https://你的域名/api/admin,登录后即可查看友友链审核管理后台页面ADMIN_USER和ADMIN_PASS里面的值,变量值中就是您后台的账号和密码结束。
精选 · 友链 · 更多

One的公众号
爱折腾博客的小白