这两天看到了面条的新项目——Sink,这是一款基于 Cloudflare 的带访问统计功能的短链系统。我之前只听说过短链系统,但从未使用过,对此很感兴趣。项目开源后,我便尝试部署了一下。
这是我第一次使用 Cloudflare Pages,按照 GitHub 上的英文教程一步步来进行配置,也非常顺利(况且大家也有翻译)。
Sink 的功能
Sink 提供了一系列实用功能,包括:
- URL 缩短:轻松将长链接压缩为短链接,方便分享和管理。
- 分析功能:实时监控链接的访问数据,提供详细的统计分析。
- 链接过期:可设置链接的有效期,确保链接管理的灵活性。
Sink 的特性
Sink 拥有以下特性:
- 无服务器架构:不再需要传统服务器,利用 Cloudflare Workers 提供高效的计算能力,还避免了服务器的成本。
- 个性化 Slug:支持自定义链接的 Slug,让每个链接都与众不同。
- AI 生成 Slug:借助 AI 技术智能生成 Slug,提升用户体验。
Sink 的技术栈
Sink 采用现代化的技术栈,确保项目的高性能和可扩展性:
- 框架:Nuxt
- 数据库:Cloudflare Workers KV
- 分析引擎:Cloudflare Workers Analytics Engine
- UI 组件:Shadcn-vue
- 样式:Tailwind CSS
- 部署:Cloudflare
不过需要注意的是 Sink 主要面向个人自部署场景,并不适合团队使用。
演示站
Sink 有演示站,可以访问 Sink.Cool 体验,使用以下站点令牌登录:
Site Token: SinkCool
部署方法
部署 Sink 非常简单,需要用到 GitHub 和 Cloudflare:
-
首先将仓库 fork 到你的 GitHub 账号。
-
创建一个 Cloudflare Pages 项目。选择
Sink
仓库和Nuxt.js
预设。 -
配置环境变量。
NUXT_SITE_TOKEN
长度必须超过 8。
NUXT_CF_ACCOUNT_ID
查找你的账户 ID。
NUXT_CF_API_TOKEN
创建一个 Cloudflare API 令牌。此令牌至少需要具备Account.Account Analytics
权限。可参考 -
保存并部署。
-
取消部署,导航
Settings
->Functions
KV namespace 绑定。将变量名KV
绑定到一个 KV namespace。
Workers AI 绑定。将变量名 AI 绑定到 Workers AI 目录。(这一步可选)
Analytics Engine 绑定。将变量名ANALYTICS
绑定到 sink 数据集,并为你的账户启用 Cloudflare Analytics Engine beta。 -
重新部署,然后就完成了。
更多详细配置请参考项目的配置文档。如果还有不清楚的地方,可以加入面条的 Telegram 群组。
Sink 的未来计划
面条对 Sink 有明确的 Roadmap,目前已规划的功能有浏览器扩展、Raycast 扩展、Apple Shortcuts 支持、增强的链接管理功能、更强大的分析功能、仪表板性能优化、单元测试以及支持更多部署平台。
我个人是很喜欢 Sink 这个工具,现在已在自己的博客和项目上使用,效果很不错,期待 Sink 未来的更多功能和改进。