自助友链申请
存储类型区别优势劣势对比
| 存储类型 | 速度 | 收费模式 | 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 语句
INSERT INTO "public"."friends" ( "id", "title", "desc", "siteUrl", "imgUrl", "tags", "status", "ip", "email", "message", "updatedAt", "createdAt", "weight" -- 新增int4权重字段) VALUES( '64f3b4ef-490d-4440-ad8e-5dc73034ccb9', '云原生构建', '会Fork就会CNB', 'https://cnb.cool/', 'https://cnb.cool/cnb/-/logos/s', '["Blog","Astro"]'::jsonb, 'rejected', 'unknown', NULL, NULL, '1785103334148', '1784148550477', 0),( '80a0e1dc-7f96-42df-be62-3d0edabc77ac', '启源', '技术丶生活', 'https://czxcly.cn/', 'https://personal-biz.czxcly.cn/profile/avatar/2026/05/18/594c922986f34225aa6917bb0b2908ca.jpg', '["Blog","Astro"]'::jsonb, 'approved', '129.204.149.174', NULL, NULL, '1785102151599', '1783301022476', 0),( '8f652adc-0d92-4c53-9e5a-5088048b76e9', 'ZhiJing''s Blog', 'Go with the flow.', 'https://iwexe.top', 'https://iwexe.top/avatar.svg', '["Blog","Astro"]'::jsonb, 'approved', '43.139.234.199', NULL, NULL, '1785102152667', '1783185799746', 0),( 'a1b2c3d4-e5f6-7890-abcd-ef1234567890', 'One', '明心见性,爱自己', 'https://onedayxyy.cn/', 'https://img.onedayxyy.cn/images/Teek/Teekwebsite/xyy-logo.avif', '["Blog","Astro"]'::jsonb, 'approved', 'unknown', NULL, NULL, '1785102169329', '1783815691854', 0),( 'a56878d9-4649-439d-b16d-abb4fa87ec7f', 'gc的小站', '综合性小站,希望能帮到你!', 'https://gcweb.cc', 'https://www.gcweb.cc/static/img/pig.jpg', '["Blog","Astro"]'::jsonb, 'approved', '223.104.116.184', NULL, NULL, '1785102168900', '1783462756928', 0),( 'b2c3d4e5-f6a7-8901-bcde-f23456789012', 'Hyde', '人心中的成见是一座大山', 'https://seasir.top/', 'https://seasir.top/_astro/avatar.B2RZ_bo3_JV0dW.webp', '["Blog","Astro"]'::jsonb, 'approved', 'unknown', NULL, NULL, '1785102168100', '1783462753394', 0);执行后可以在SQL Editor中查看执行的示例数据
前端页面改造
文件目录:
| 文件路径 | 作用 |
|---|---|
src/config/friendsConfig.ts | 友链配置文件 |
src/content/spec/friends.mdx | 友链列表页面自定义内容,已弃用 |
src/pages/friends/friends.astro | 友链列表页面组件 |
src/types/friendsConfig.ts | 友链配置文件类型定义 |
相关文件在源码中获取,记得点个Star!将上面的文件替换掉您项目对应文件即可。
部署edgeone边缘函数
配置变量
- 在
函数管理-函数详情-环境变量与密钥中,添加以下环境变量
| 变量名 | 变量值 | 变量类型 | 变量描述 | 获取方式 |
|---|---|---|---|---|
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 | 钉钉平台加签密钥 | 钉钉加签获取 |
填写完成后,一定要点击部署按钮,否则环境变量不会生效
配置域名
配置主域名(推荐)
-
进入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_USER和ADMIN_PASS里面的值,变量值中就是您后台的账号和密码
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!










